Search
Duplicate
🌏

deer.8. title: TPU 를 이용해서 모델을 학습시키려고 할 때 신경써야 하는 부분들

🚀 prev note
♻️ prev note
♻️ next note
17 more properties
1.
모든 파일은 google cloud storage 로부터 불러와야 한다 (참고1).
2.
TPU 에서 학습시킬 네트워크는 정적이며 명시적인 shape 을 가지고 있어야 한다 (참고2). 텐서플로우는 자동으로 정적 그래프를 만들어주지만, 프로그래머는 배치 차원에 대해서는 특히 더 신경써 주어야 한다.
모델을 설계할 때 모든 사이즈를 미리 정해 두어야 한다는 것은 아니다. None shape 으로 모델을 만들어 두고, 런타임에 사이즈를 추론해도 상관없다. 하지만 한번 정해진 뒤 변하면 안된다.
3.
TPU 에서 학습시킬 때 데이터 파이프라인은 tf.data.Dataset 을 사용하여야 하며, 이때, py_functionnumpy_function 을 사용해서는 안 된다 (참고3).
4.
Compile-time constant 를 주의해야 한다 (참고4).
to
1.
참고
2.
TPU 는 명시적인 (explicit) size 를 요구한다. 아키텍쳐상 그럴수밖에 없는 것 같다. (모델을 설계할 때 모든 사이즈를 미리 정해 두어야 한다는 것은 아니다. None shape 으로 모델을 만들어 두고, 런타임에 사이즈를 추론해도 상관없긴 하다만 학습을 하면서 사이즈가 변할 수 없고, 차원의 개수는 일치해야 한다는 사실은 자명하다.) 이것은 batch dimension 에도 동일하게 적용되며, 그렇기 때문에 drop remainder 을 시켜야 한다고 말하고 있다. tpu 를 사용할 때에는 drop remainder 옵션이 중요하다. (drop_remainder is important on TPU, batch size must be fixed.)