ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • tensorflow용 RNN-T custom 함수 제작 후기
    AI 2023. 4. 25. 16:41

     
     
     
     
    pytorch에는 rnnt-loss 함수가 공식적으로 제공된다.
    tensorflow에는 rnnt-loss 함수가 제공되지 않는다.
    3rd party 모듈이 있었지만 입력을 어떻게 줘야하는 지에 대한 세부 설명이 없어서
    자작해 봤다.
     


     
    custom tensorflow 함수를 만드는 아주 좋은 경험들을 얻게 된거 같다.
    이 자작함수 만드려면 생각지도 못한 수치 오류와 아이디어들로 넘쳐난다.
     
    custom 함수를 만들면서 고려해야 하는 것은 크게 3가지다.
     

    1. gpu 연산을 사용하도록 설계해야 한다.
    2. 수치 연산 도중에 nan이 나오지 않도록 안전한 함수들을 사용해야 한다.
    3. 쓸데없이 gpu 메모리를 많이 사용하지 않도록 해야한다.

     
    1번의 경우 gpu로 할 수 있는 연산의 특성을 알면 편하다.
    답을 구하는데 있어서 순차적인 연산으로 해결 하기 보다는
    관점의 전환을 통해 답을 구하는데 쓸 수 있는 독립적이지만
    반복적으로 할 수 있는 연산을 찾으면 좋다.
     
    2번의 경우 logsumexp와 log(sum(exp()))의 차이에 대해 알면 된다.
     
    3번의 경우 함수가 도중에 필요한 값을 필요할 때 계산하게 해서
    필요하지 않은 타이밍에 오래동안 저장하지 못하게 해야한다.
    이 부분은 개인적인 경험이지만 간단하게 코드 위치를 변경한 것 만으로
    batch size를 2배로 키울 수 있었던 것을 생각해 보면 나 뿐 아니라 다른 사람들에게도 유효할 거 같다.
     


    'AI' 카테고리의 다른 글

    isaac sim ddpg solution of cartpole problem  (14) 2024.04.16
    NLP 입문자를 위한 text 전처리  (0) 2023.04.26
    AI할 때 수치 안정성  (0) 2023.04.25
    tensorflow custom gradient  (0) 2023.04.25
    yolov8 전이 학습 시키기  (0) 2023.04.17

    댓글

Designed by Tistory.