컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

Cloud TPU 도구로 모델 프로파일링

지원되는 프레임워크 중 하나에서 텐서보드를 사용하는 방법에 대한 자세한 내용은 다음 문서를 참조하세요.

텐서보드 설치

텐서보드는 기본적으로 TensorFlow의 일부로 Cloud TPU VM에 설치됩니다. TensorFlow를 수동으로 설치할 수도 있습니다. 어느 쪽이든 추가 종속 항목이 필요할 수 있습니다. 다음을 실행하여 설치합니다.

pip3 install -r /usr/share/tpu/models/official/requirements.txt

Cloud TPU 텐서보드 플러그인 설치

TPU VM에 SSH를 통해 연결합니다.

   $ gcloud compute tpus tpu-vm ssh your-vm --zone=your-zone
   

그리고 다음 명령어를 실행합니다.

  pip3 install --upgrade "cloud-tpu-profiler>=2.3.0"
  pip3 install --user --upgrade -U "tensorboard>=2.3"
  pip3 install --user --upgrade -U "tensorflow>=2.3"

TensorFlow 프로파일러 서버 시작

학습 루프를 시작하기 전에 다음 코드를 스크립트에 추가합니다.

tf.profiler.experimental.server.start(6000)

그러면 TPU VM에서 TensorFlow 프로파일러 서버가 시작됩니다.

학습 스크립트 시작

학습 스크립트를 실행하고 모델이 적극적으로 학습되고 있음을 나타내는 출력이 나타날 때까지 기다립니다. 코드와 모델에 따라 표시되는 내용이 다릅니다. Epoch 1/100과 같은 출력을 찾습니다. 또는 GCP Console의 Cloud TPU 페이지로 이동하여 TPU를 선택하고 CPU 사용률 그래프를 봅니다. TPU 사용률이 표시되지는 않지만 TPU에서 모델을 학습시키고 있음을 나타내는 것은 좋은 지표입니다.

텐서보드 서버 시작

새 터미널 창을 열고 포트 전달을 사용하여 TPU VM에 SSH를 통해 연결합니다. 이렇게 하면 로컬 브라우저가 TPU VM에서 실행 중인 텐서보드 서버와 통신할 수 있습니다.

 gcloud compute tpus tpu-vm ssh your-vm --zone=us-central1-a --ssh-flag="-4 -L 9001:localhost:9001"
 

방금 연 터미널 창에서 텐서보드를 실행하고 텐서보드가 --logdir 플래그를 사용하여 프로파일링 데이터를 쓸 수 있는 디렉터리를 지정합니다. 예를 들면 다음과 같습니다.

TPU_LOAD_LIBRARY=0 tensorboard --logdir your-model-dir --port 9001

텐서보드에서 웹 서버를 시작하고 URL을 표시합니다.

Serving TensorBoard on localhost; to expose to the network, use a proxy or pass --bind_all
TensorBoard 2.3.0 at http://localhost:6006/ (Press CTRL+C to quit)

웹브라우저를 열고 텐서보드 출력에 표시된 URL로 이동합니다. 텐서보드 페이지 오른쪽 상단에 있는 드롭다운 메뉴에서 프로필을 선택합니다.

이미지

TPU VM에서 프로필 캡처

  1. 프로필 캡처 버튼을 선택합니다.
  2. TPU 이름 라디오 버튼을 선택합니다.
  3. TPU 이름을 입력합니다.
  4. 캡처 버튼을 선택합니다.

텐서보드로 프로필 데이터 보기

프로필을 캡처하면 텐서보드에 overview_page가 표시됩니다. 왼쪽 창의 도구 아래에서 trace_viewer를 선택합니다.

이미지

도구 메뉴에 나열된 다른 도구는 현재 TPU VM에서 지원되지 않습니다. 이러한 도구에 대한 자세한 내용은 TPU 노드에서 모델 프로파일링을 참조하세요.

트레이스 뷰어

trace 뷰어는 프로필 아래에서 사용할 수 있는 Cloud TPU 성능 분석 도구입니다. 이 도구는 Chrome trace 이벤트 프로파일링 뷰어를 사용하므로 Chrome 브라우저에서만 작동합니다.

trace 뷰어에 표시되는 타임라인은 다음과 같은 정보를 제공합니다.

  • TensorFlow 모델에 의해 실행된 작업의 기간
  • 작업을 실행한 시스템의 부분(TPU 또는 호스트 머신). 일반적으로 호스트 머신은 학습 데이터를 사전 처리하여 TPU로 전송하는 인피드 작업을 실행하고, TPU는 실제 모델 학습을 실행합니다.

trace 뷰어를 사용하면 모델의 성능 문제를 파악한 후 해결을 위한 조치를 취할 수 있습니다. 예를 들어 대부분의 시간을 소비하는 부분이 인피드인지, 모델 학습인지 대략적으로 파악할 수 있습니다. 자세히 살펴보면 가장 오랜 시간 실행된 TensorFlow 작업을 파악할 수 있습니다.

trace 뷰어는 Cloud TPU당 1M개의 이벤트로 제한됩니다. 더 많은 이벤트에 액세스해야 하는 경우 스트리밍 trace 뷰어를 대신 사용하세요.

trace 뷰어 인터페이스

trace 뷰어를 열려면 텐서보드로 이동하여 화면 상단의 프로필 탭을 클릭하고 도구 드롭다운에서 trace_viewer를 선택합니다. 뷰어에 가장 최근의 실행 정보가 표시됩니다.

이미지

이 화면에는 다음과 같은 주요 요소가 포함되어 있습니다(위에 표시된 숫자 참고).

  1. 실행 드롭다운. trace 정보를 캡처한 모든 실행이 포함됩니다. 기본 보기는 가장 최근의 실행이지만 드롭다운을 열어 다른 실행을 선택할 수 있습니다.
  2. 도구 드롭다운. 다양한 프로파일링 도구를 선택합니다.
  3. 호스트 드롭다운. Cloud TPU 세트가 포함된 호스트를 선택합니다.
  4. 타임라인 창. Cloud TPU와 호스트 머신이 일정한 시간 동안 실행한 작업이 표시됩니다.
  5. 세부정보 창. 타임라인 창에서 선택한 작업의 추가 정보를 표시합니다.

타임라인 창을 자세히 보면 다음과 같습니다.

이미지

타임라인 창에는 다음과 같은 요소가 포함되어 있습니다.

  1. 상단 막대. 다양한 보조 제어 도구가 포함되어 있습니다.
  2. 시간 축. trace의 시작을 기준으로 한 상대 시간이 표시됩니다.
  3. 섹션 및 추적 라벨. 섹션마다 여러 트랙이 포함되어 있으며 왼쪽의 삼각형을 클릭하면 섹션을 펼치거나 접을 수 있습니다. 시스템의 모든 처리 요소마다 섹션이 하나씩 있습니다.
  4. 도구 선택기. trace 뷰어와 연동되는 여러 도구가 포함되어 있습니다.
  5. 이벤트. 이 영역은 작업이 실행된 시간 또는 학습 단계와 같은 메타 이벤트 기간을 표시합니다.
  6. 세로 탭 막대. Cloud TPU에서는 별다른 용도가 없습니다. 이 막대는 다양한 성능 분석 작업에 사용되는 Chrome이 제공하는 범용 trace 뷰어 도구의 일부입니다.

섹션 및 트랙

trace 뷰어에는 다음과 같은 섹션이 포함되어 있습니다.

  • 각 TPU 노드에 대한 하나의 섹션. TPU 칩 번호와 칩 내의 TPU 노드 라벨이 지정됩니댜(예: 'Chip 2: TPU Core 1'). 각 TPU 노드 섹션에는 다음과 같은 트랙이 포함됩니다.
    • 단계. TPU에서 실행 중이었던 학습 단계의 지속 시간을 나타냅니다.
    • TensorFlow 작업. TPU에서 실행된 TensorFlow 작업을 표시합니다.
    • XLA 작업. TPU에서 실행된 XLA 작업을 보여줍니다. 각 작업은 하나 이상의 XLA 작업으로 해석됩니다. XLA 컴파일러는 XLA 작업을 TPU에서 실행되는 코드로 변환합니다.)
  • 호스트 머신의 CPU에서 실행되는 스레드에 대한 하나의 섹션. '호스트 스레드' 라벨이 지정됩니다. 섹션에는 각 CPU 스레드마다 하나의 트랙이 포함됩니다. 참고: 섹션 라벨 옆에 표시되는 정보는 무시해도 됩니다.

타임라인 도구 선택기

텐서보드의 타임라인 도구 선택기를 사용하여 타임라인 보기를 조작할 수 있습니다. 타임라인 도구를 클릭하거나 다음 단축키를 사용하여 도구를 활성화하고 강조표시할 수 있습니다. 타임라인 도구 선택기를 옮기려면 상단의 점으로 영역을 클릭한 다음 원하는 곳으로 선택기를 드래그합니다.

타임라인 도구를 다음과 같이 사용합니다.

선택 도구
이벤트를 클릭하여 선택하거나 드래그하여 여러 이벤트를 선택합니다. 선택한 이벤트에 관한 자세한 정보(이름, 시작 시간, 지속 시간)가 세부정보 창에 표시됩니다.

화면 이동 도구
드래그하여 타임라인 보기를 가로와 세로 방향으로 이동합니다.

확대/축소 도구
세로축(시간)을 따라 드래그하면 확대하거나 축소할 수 있습니다. 마우스 커서의 수평 위치가 확대/축소의 중심점을 결정합니다.

참고: 확대/축소 도구에는 마우스 커서가 타임라인 보기 밖에 있는 상태에서 마우스 버튼을 놓아도 이 기능이 계속 작동되는 알려진 버그가 있습니다. 이 문제가 발생하는 경우 타임라인 보기를 짧게 클릭하면 확대/축소 기능이 중지됩니다.

타이밍 도구
가로 방향으로 드래그하여 시간 간격을 표시합니다. 시간 축에 간격 길이가 나타납니다. 간격을 조정하려면 가장자리를 드래그하면 됩니다. 간격을 삭제하려면 타임라인 보기의 아무 곳이나 클릭하세요.

다른 도구를 선택해도 간격은 표시된 상태로 유지됩니다.