자주 묻는 질문(FAQ) - TensorFlow의 Cloud TPU

Cloud TPU에서는 어떤 모델이 지원되나요? 지원되는 모델은 공식 지원 모델을 참조하세요.

추론에 Cloud TPU를 사용할 수 있나요? Keras tf.keras.Model.predict 메서드를 통해 Cloud TPU에서 학습된 모델에 대해 추론을 수행할 수 있습니다.

Cloud TPU에서 사용할 수 없는 기본 제공 TensorFlow 작업이 있나요?

현재 Cloud TPU에서 사용할 수 없는 몇 가지 기본 제공 TensorFlow 작업이 있습니다. 사용 가능한 TensorFlow 작업 가이드에서 최신 해결책을 참조하세요.

Cloud TPU에서 강화 학습(RL) 모델을 학습시킬 수 있나요?

강화 학습에는 광범위한 분야의 기술이 수반되며 그중 일부는 현재 TPU의 소프트웨어 추상화와 호환되지 않습니다. 일부 강화 학습 구성을 위해서는 CPU를 학습 루프의 일부로 사용하는 '시뮬레이션 환경' 블랙박스를 실행해야 합니다. 이러한 방식이 Cloud TPU를 따라잡을 수 없고 결과적으로 효율성이 현저하게 떨어진다는 점이 확인되었습니다.

Cloud TPU에서 임베딩을 사용할 수 있나요?

예. TPUEmbedding 레이어를 사용하여 Keras 모델에서 임베딩을 지원할 수 있습니다. 커스텀 레이어 및 모델에서 tf.nn.embedding_lookup()을 사용할 수 있습니다.

Cloud TPU에서 가변 길이 시퀀스를 사용할 수 있나요?

TensorFlow에서 가변 길이 시퀀스를 표현하는 방법에는 패딩, tf.while_loop(), 추론된 텐서 차원, 버케팅 등 여러 가지가 있습니다. 하지만 현재 Cloud TPU 실행 엔진은 이러한 시퀀스의 하위 집합만 지원합니다. 가변 길이 시퀀스는 tf.while_loop(), tf.dynamic_rnn(), 버케팅, 패딩 또는 시퀀스 이어붙이기를 사용하여 구현해야 합니다.

Cloud TPU에서 순환 신경망(RNN)을 학습시킬 수 있나요?

예. TensorFlow로 RNN을 학습시키려면 Keras RNN 레이어를 사용합니다.

Cloud TPU에서 생성적 적대 신경망(GAN)을 학습시킬 수 있나요?

GAN을 학습시키려면 일반적으로 생성기 학습과 분류기 학습을 번갈아 반복해야 합니다. 현재 TPU 실행 엔진은 단일 실행 그래프만 지원합니다. 그래프를 번갈아 실행하려면 완전히 다시 컴파일해야 하며 여기에는 30초 이상의 시간이 걸릴 수 있습니다.

가능한 해결책 중 하나는 항상 생성자와 구분자 모두의 손실 합계를 계산하는 것입니다. 단, 이러한 손실을 입력 텐서 두 개(g_wd_w)로 곱해야 합니다. 생성기를 학습시켜야 하는 배치에서는 g_w=1.0d_w=0.0으로 전달할 수 있고, 분류자를 학습시켜야 하는 배치에서는 반대로 전달할 수 있습니다.

Cloud TPU에서 멀티태스크 학습 모델을 학습시킬 수 있나요?

작업이 집계 손실 함수가 포함된 하나의 대형 그래프로 나타나는 경우 멀티태스크 학습에 특별한 지원이 필요하지 않습니다. 그러나 TPU 실행 엔진은 현재 단일 실행 그래프만 지원합니다. 따라서 변수를 공유하지만 구조가 다른 여러 개의 실행 그래프를 신속하게 번갈아 실행하는 것이 불가능합니다. 실행 그래프를 변경하려면 그래프 컴파일 단계를 다시 실행해야 하며 여기에는 30초 이상이 소요될 수 있습니다.

Cloud TPU에서 TensorFlow 즉시 실행(eager) 모드를 지원하나요?

TensorFlow에서 사용자는 @tf.function 데코레이터를 사용하여 XLA로 컴파일하고 TensorFlow 즉시 실행(eager) 모드로 TPU를 사용할 수 있습니다.

Cloud TPU에서 모델 동시 로드를 지원하나요?

모델 동시 로드(또는 단일 Cloud TPU 기기 내의 여러 코어에서 서로 다른 프로그램 실행)는 현재 지원되지 않습니다.

Cloud TPU에서 tf.Print 또는 tfdbg와 같은 중간 텐서의 실제 값을 검사하려면 어떻게 해야 하나요?

이 기능은 현재 Cloud TPU에서 지원되지 않습니다. 텐서보드를 사용하여 CPU/GPU에서 모델을 디버깅한 다음 모델이 본격적으로 학습할 준비가 되면 Cloud TPU로 전환하는 것이 좋습니다.

내 학습 요구사항이 너무 복잡하거나 Keras compile/fit API에 맞게 전문화된 경우 사용 가능한 하위 수준 API가 있나요?

TensorFlow를 사용할 때 하위 수준 컨트롤이 필요하면 커스텀 학습 루프를 사용할 수 있습니다. TensorFlow 문서에서는 특히 TPU를 사용하여 그리고 tf.distribute를 사용하는 보다 일반적인 사례에 맞게 커스텀 학습 루프를 사용하는 방법을 설명합니다.