모든 파일은 google cloud storage 로부터 불러와야 한다 (참고1).
TPU 에서 학습시킬 네트워크는 정적이며 명시적인 shape 을 가지고 있어야 한다 (참고2). 텐서플로우는 자동으로 정적 그래프를 만들어주지만, 프로그래머는 배치 차원에 대해서는 특히 더 신경써 주어야 한다.
모델을 설계할 때 모든 사이즈를 미리 정해 두어야 한다는 것은 아니다. None shape 으로 모델을 만들어 두고, 런타임에 사이즈를 추론해도 상관없다. 하지만 한번 정해진 뒤 변하면 안된다.
TPU 에서 학습시킬 때 데이터 파이프라인은 tf.data.Dataset
을 사용하여야 하며, 이때, py_function
과 numpy_function
을 사용해서는 안 된다 (참고3).
Compile-time constant 를 주의해야 한다 (참고4).
XLA 가 운영하지 못하는 연산에는 어떤 것이 있을까? 내가 TPU 구현체를 만드는 과정에서 어려웠던 점이 바로 이것과 관련이 있지는 않을까?
to
참고
os
, sys
대신 tf.io
를 사용하면 간단하게 GCS 에 접근할 수 있다.compile-time constant
라는 문제를 일으킬 수 있다.