Cloud TPU VM에서 모델 프로파일링

프로파일링을 사용하면 Cloud TPU에서 모델의 학습 성능을 최적화할 수 있습니다. 텐서보드Cloud TPU 텐서보드 플러그인을 사용하여 모델을 프로파일링합니다.

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

학습 스크립트 프로파일링 기본 요건

TPU 프로파일링 도구를 사용하기 전에 다음을 수행해야 합니다.

  1. 모델 학습 세션 시작

    1. 모델을 학습시키도록 v4-8 TPU를 설정합니다. 이 문서에서 설명하는 프로파일링 절차는 ResNet 모델을 사용하지만 v4 TPU에서 학습하는 경우 다른 모델을 사용할 수 있습니다.
    2. TPU VM에서 학습 스크립트를 위한 프로파일러 서버를 시작하는 줄을 추가합니다.

      ResNET 학습의 경우 학습 스크립트는 /usr/share/tpu/tensorflow/resnet50_keras/resnet50.py에 있습니다.

      강조표시된 줄을 resnet50.py에 삽입합니다. 파일 상단에서 다음 가져오기를 추가합니다.

      import tensorflow.compat.v2 as tf2
      

      스크립트가 학습 루프를 시작하기 직전에 강조표시된 줄을 추가합니다.

      if name == 'main':
       tf.logging.set_verbosity(tf.logging.INFO)
       tf2.profiler.experimental.server.start(6000)
       app.run(main)
      

      스크립트를 실행하면 TensorFlow 프로파일러 서버가 TPU VM에서 시작됩니다.

    3. 모델 학습을 시작합니다.

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

모델 학습 프로파일링 시작

모델이 학습할 때 별도의 터미널 창 또는 Cloud Shell을 엽니다. 다음 단계를 사용해 모델 학습 프로파일링을 시작합니다.

  1. 새 창 또는 셸에서 포트 전달로 TPU VM에 연결합니다.

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

    포트 전달을 사용하면 로컬 브라우저가 TPU VM에서 실행 중인 텐서보드 서버와 통신할 수 있습니다.

  2. TensorFlow 요구사항 {: id="install-tensorboard"}를 설치합니다.

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

    pip3 install -r /usr/share/tpu/models/official/requirements.txt
    
  3. Cloud TPU 텐서보드 플러그인 {: id="install-plugin"}을 설치합니다.

    TPU VM에서 다음 명령어를 실행합니다.

     pip3 install --upgrade "cloud-tpu-profiler>=2.3.0"
     pip3 install tensorflow
     pip3 install tensorboard_plugin_profile
    
  4. 텐서보드 서버 시작

    텐서보드를 실행하고 프로파일링 데이터를 작성할 수 있는 TPU VM에 로그 디렉터리(logdir)를 만듭니다. --logdir 플래그를 사용하여 로그 디렉터리를 지정합니다. 예를 들면 다음과 같습니다.

    mkdir log-directory
    TPU_LOAD_LIBRARY=0 tensorboard --logdir log-directory --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:9001 (Press CTRL+C to quit)

웹브라우저를 열고 텐서보드 출력에 표시된 URL로 이동합니다. 텐서보드 페이지 오른쪽 상단에 있는 드롭다운 메뉴에서 프로필을 선택합니다. 사용 가능한 프로파일링 도구 목록은 왼쪽 사이드바의 도구 풀다운 메뉴에 표시됩니다.

이미지

TPU VM에서 프로필 캡처

  1. 프로필 캡처 버튼을 선택합니다.
  2. IP 주소 라디오 버튼을 선택합니다.
  3. Profile Service URL 필드에 HOSTNAME:6000을 입력합니다.
  4. 캡처 버튼을 선택합니다.

이미지

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

프로필을 캡처하면 텐서보드에 overview_page가 표시됩니다. 사용 가능한 프로파일링 도구 목록이 왼쪽 창에 표시됩니다.

이미지

프로필

일부 모델 데이터를 캡처한 후 프로필 탭이 표시됩니다. 텐서보드 페이지에서 새로고침 버튼을 클릭해야 할 수도 있습니다. 데이터를 사용할 수 있게 되면 프로필 탭을 클릭할 때 성능 분석에 유용한 몇 가지 도구가 제공됩니다. 다음 도구를 사용하여 모델을 프로파일링할 수 있습니다.

프로필 개요 페이지

프로필 페이지에 있는 개요 페이지(overview_page)는 캡처 실행 동안의 모델 성능에 대한 최상위 뷰를 제공합니다. 이 페이지에는 모든 TPU에 대한 집계된 개요와 전체적인 입력 파이프라인 분석이 표시됩니다. 호스트 드롭다운에는 개별 TPU 선택을 위한 옵션이 있습니다.

페이지의 다음 패널에 데이터가 표시됩니다.

이미지

  • Performance summary(성능 요약)

    • FLOPS 사용률 - TPU 행렬 단위의 사용 비율
  • TPU의 상위 10개 TensorFlow 작업. 가장 많은 시간을 소비한 TensorFlow 작업을 표시합니다.

    각 행은 작업의 자체 시간(모든 작업에 소비된 시간의 비율로 표시됨), 누적 시간, 카테고리, 이름, 달성한 FLOPS 등급을 표시합니다.

  • Run environment(실행 환경)

    • 사용된 호스트 수
    • 사용된 TPU 유형
    • TPU 코어 수

입력 파이프라인 분석기

입력 파이프라인 분석기는 성능 결과에 대한 유용한 정보를 제공합니다. 도구는 프로그램이 입력 제약적인지 여부를 즉시 알려주며, 병목 현상을 일으키는 파이프라인의 단계를 디버깅할 수 있도록 기기 및 호스트 측 분석으로 안내합니다.

파이프라인 성능 최적화에 대한 자세한 내용은 입력 파이프라인 성능에 대한 안내를 참조하세요.

입력 파이프라인

TensorFlow 프로그램이 파일에서 데이터를 읽을 때 읽기 프로세스는 직렬로 연결된 여러 데이터 처리 단계로 나뉩니다. 한 단계의 출력은 다음 단계의 입력이 됩니다. 이 읽기 시스템을 입력 파이프라인이라고 합니다.

일반적으로 파일의 레코드를 읽는 파이프라인은 다음 단계를 거칩니다.

  1. 파일 읽기
  2. 파일 사전 처리(선택 사항)
  3. 호스트 머신에서 기기로 파일 전송

입력 파이프라인이 비효율적이면 애플리케이션 속도가 현저히 떨어질 수 있습니다. 애플리케이션이 입력 파이프라인에 많은 시간을 소요하는 경우 입력 제약적인 것으로 간주됩니다. 입력 파이프라인 분석기를 사용하여 입력 파이프라인에서 비효율적인 부분을 파악합니다.

입력 파이프라인 대시보드

입력 파이프라인 분석기를 열려면 프로필을 선택한 다음 도구 드롭다운에서 input_pipeline_analyzer를 선택합니다.

대시보드에는 기기측 및 호스트측 분석 세부정보가 표시됩니다.

기기 측 분석 - 기기 단계 시간에 대한 세부정보를 표시합니다.

  • 기기 단계 시간 통계
  • 입력 데이터를 대기하면서 소비한 기기 단계 시간의 비율(%)

호스트측 분석

이 섹션에서는 호스트 측 분석의 세부정보를 여러 카테고리로 나누어 보여줍니다.

  • 기기로 전송될 데이터 큐에 추가 데이터를 기기에 전송하기 전에 인피드 큐에 넣는 데 소비한 시간
  • 데이터 사전 처리 이미지 압축 해제와 같은 사전 처리 작업에 소비한 시간
  • 파일 데이터 사전 읽기: 캐싱, 미리 가져오기, 인터리브 처리를 포함하여 파일을 읽는 데 소비한 시간
  • 요청 시 파일 데이터 읽기: 캐싱, 미리 가져오기, 인터리브 처리 없이 파일에서 데이터를 읽는 데 소비한 시간
  • 기타 데이터 읽기 또는 처리 tf.data를 사용하지 않는 다른 입력 관련 작업에서 소비한 시간

이미지

개별 입력 작업의 통계와 각 카테고리를 실행 시간별로 세분화해서 보려면 Show Input Op statistics 섹션을 펼칩니다.

다음과 같은 소스 데이터 테이블이 표시됩니다.

이미지

각 표 항목에는 다음과 같은 정보가 포함되어 있습니다.

  1. 입력 작업: 입력 작업의 TensorFlow 작업 이름을 표시합니다.
  2. 개수: 프로파일링 기간 동안 실행된 작업 인스턴스의 총 수를 표시합니다.
  3. 총 시간(밀리초): 각 작업 인스턴스에 소요된 시간의 누적 합계를 표시합니다.
  4. 총 시간 비율: 입력 처리에 소요된 총 시간 비율로 해당 작업에 소요된 총 시간을 표시합니다.
  5. 총 자체 시간(ms): 함수의 모든 인스턴스에서 누적된 시간을 표시합니다. 자체 소요 시간은 호출 대상 함수에 소요된 시간을 제외하고 함수 본문 내에 소요된 시간을 측정합니다. 예를 들어 Iterator::PaddedBatch::Filter::ForeverRepeat::MapIterator::PaddedBatch::Filter에 의해 호출되므로 총 자체 시간은 후자의 총 자체 시간에서 제외됩니다.
  6. 총 자체 소요 시간 비율: 입력 처리에 소요된 총 시간의 비율로 총 자체 시간을 표시합니다.
  7. 카테고리: 입력 작업의 처리 카테고리를 표시합니다.

작업 프로필

작업 프로필은 프로파일링 기간 동안 실행된 XLA 작업의 성능 통계를 표시하는 Cloud TPU 도구입니다. 작업 프로필에 표시되는 내용은 다음과 같습니다.

  • 애플리케이션에서 Cloud TPU를 얼마나 잘 사용하는가(카테고리별로 작업에 소요된 시간의 비율 및 TPU FLOPS 사용률)
  • 가장 많은 시간을 소비하는 작업. 이러한 작업은 잠재적 최적화 대상입니다.
  • 작업을 사용하는 형태, 패딩, 표현식을 포함한 각 작업의 세부정보

작업 프로필을 사용하여 최적화 대상을 찾을 수 있습니다. 예를 들어 작업 프로필을 사용하여 실행하는 데 가장 오래 걸리는 XLA 작업과 이러한 작업이 소비하는 TPU FLOPS를 식별할 수 있습니다.

작업 프로필 사용

작업 프로필 도구에는 XLA 작업의 성능 통계가 포함됩니다. 화면 상단의 프로필 탭을 클릭한 다음 도구 드롭다운에서 op_profile을 선택하여 텐서보드에서 작업 프로필의 데이터를 볼 수 있습니다. 표시되는 화면은 다음과 같습니다.

이미지

  1. 개요 섹션: Cloud TPU 사용률을 표시하고 최적화 방안을 제안합니다.
  2. 제어판: 테이블에 표시되는 작업 수, 표시되는 작업, 정렬 방법을 설정할 수 있는 컨트롤이 포함됩니다.
  3. 작업 테이블: XLA 작업과 관련된 상위 TensorFlow 작업 카테고리를 나열합니다. Cloud TPU 사용량 비율에 따라 작업이 정렬됩니다.
  4. 작업 세부정보 카드: 테이블의 작업을 가리킬 때 표시되는 작업에 대한 세부정보를 표시합니다. 이러한 세부정보에는 FLOPS 사용률, 작업이 사용된 표현식, 작업 레이아웃(핏)이 포함됩니다.

XLA 작업 테이블

작업 테이블에는 XLA 작업 카테고리가 Cloud TPU 사용량 비율 내림차순으로 나열됩니다. 소비된 시간 비율, 작업 카테고리 이름, 연결된 TensorFlow 작업 이름, 해당 카테고리의 FLOPS 사용량 비율이 테이블에 표시됩니다. 카테고리에서 가장 많은 시간을 소비하는 상위 10개 XLA 작업을 표시하거나 숨기려면 테이블에서 카테고리 이름 옆의 삼각형을 클릭합니다.

이미지

  1. 시간: 이 카테고리의 모든 작업에서 소요된 시간의 총 비율을 보여줍니다. 항목을 클릭하여 펼치면 개별 작업에 소요된 시간의 세부 내역을 확인할 수 있습니다.
  2. 상위 10개 작업: 카테고리 이름 옆의 토글은 카테고리 내에서 가장 많은 시간을 소비하는 상위 10개 작업을 표시하거나 숨깁니다. 작업 목록에 fusion 작업 항목이 표시되면 이를 확장하여 포함된 fusion 이외의 요소별 작업을 볼 수 있습니다.
  3. TensorFlow 작업: XLA 작업과 관련된 TensorFlow 작업 이름을 표시합니다.
  4. FLOPS: FLOPS 사용률을 표시합니다. FLOPS 사용률은 측정된 FLOPS 수이며, Cloud TPU 최고 FLOPS의 비율로 표현됩니다. FLOPS 사용률 비율이 높을수록 작업은 더 빠르게 실행됩니다. 테이블의 셀 색상은 FLOPS 사용률이 높으면 녹색으로(좋음), 사용률이 낮으면 빨간색으로(나쁨) 표시됩니다.

작업 세부정보 카드

테이블 항목을 선택하면 카드가 나타나면서 XLA 작업 또는 작업 카테고리의 세부정보가 표시됩니다. 일반적인 카드의 모습은 다음과 같습니다.

이미지

  • 이름카테고리는 강조표시된 XLA 작업 이름과 카테고리를 표시합니다.
  • FLOPS 사용률: FLOPS 사용률을 가능한 총 FLOPS의 비율로 표시합니다.
  • 표현식: 작업이 포함된 XLA 표현식을 표시합니다.
  • 메모리 사용률: 프로그램의 최대 메모리 사용량 비율을 표시합니다.
  • 레이아웃(컨볼루셔널 연산만 해당): XLA 컴파일러에서 수행하는 패딩에 대한 설명을 포함하여 텐서의 형태 및 레이아웃을 표시합니다.

결과 해석

컨볼루셔널 연산의 경우 다음 이유 중 하나 또는 두 가지 모두로 인해 TPU FLOPS 사용률이 낮을 수 있습니다.

  • 패딩(행렬 단위가 부분적으로 사용됨)
  • 메모리의 제약을 받는 컨볼루셔널 연산

이 섹션에서는 FLOP 사용률이 낮은 모델의 일부 성능 측정항목에 대한 해석을 제공합니다. 이 예시에서 출력 퓨전컨볼루션이 실행 시간의 대부분을 점유합니다. FLOP 사용률이 낮은 벡터 또는 스칼라 연산이 너무 많습니다.

이 프로필 유형을 위한 최적화 전략 중 하나는 벡터 또는 스칼라 작업을 컨볼루션 작업으로 변환하는 것입니다.

다음 예시에서 %convolution.399는 이전 예시의 %convolution.340에 비해 FLOPS와 메모리 사용률이 낮습니다.

이미지

이 예시에서는 배치 크기가 128로 패딩되고 특성 크기가 8로 패딩됩니다. 이 경우 행렬 단위의 5% 만 효과적으로 사용됩니다. 사용률은 (((batch_time * num_of_features) / padding_size ) / num_of_cores)로 계산됩니다. 이 예시의 FLOPS를 패딩을 사용하지 않는 이전 예시의 %convolution.340과 비교합니다.

Trace 뷰어

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

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

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

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

Trace 뷰어는 Cloud TPU당 1백만 개의 이벤트로 제한됩니다. 더 많은 이벤트를 평가해야 하는 경우 스트리밍 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 스레드마다 하나의 트랙이 포함됩니다. 참고: 섹션 라벨 옆에 표시되는 정보는 무시해도 됩니다.

타임라인 도구 선택기

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

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

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

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

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

참고: 마우스 버튼을 놓아도 확대/축소 도구가 활성 상태로 유지되면 타임라인 뷰를 클릭하여 확대/축소 도구를 비활성화합니다.

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

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

메모리 뷰어

메모리 뷰어를 사용하면 프로그램의 최고 메모리 사용량과 메모리 사용량 트렌드를 시각화할 수 있습니다.

메모리 뷰어 사용자 인터페이스는 다음과 같습니다.

이미지

  1. 호스트 드롭다운: 시각화할 TPU 호스트와 XLA High Level Optimizer(HLO) 모듈을 선택합니다.
  2. 메모리 개요: 패딩 없이 최고 메모리 할당 및 크기를 표시합니다.
  3. 작업 영역 차트: 프로그램의 최고 메모리 사용량과 메모리 사용량 트렌트 플롯을 표시합니다. 버퍼 차트 중 하나의 버퍼를 가리키면 버퍼 할당량 카드에 추가 정보가 표시됩니다.
  4. 버퍼 차트: 최고 메모리 사용량의 버퍼 할당량을 표시하는 두 개의 차트입니다. 버퍼 차트 중 하나의 버퍼를 가리키면 버퍼 세부정보 카드에 추가 정보가 표시됩니다.
  5. 버퍼 할당량 세부정보 카드: 버퍼의 할당량 세부정보가 표시됩니다.

메모리 개요 패널

메모리 개요(상단) 패널에는 총 버퍼 할당량 크기가 최댓값에 도달할 때의 모듈 이름과 최고 메모리 할당량 세트가 표시됩니다. 패딩되지 않은 최고 할당량 크기도 비교를 위해 표시됩니다.

이미지

작업 영역 차트

이 차트는 최고 메모리 사용량과 프로그램의 메모리 사용량 트렌트 플롯을 표시합니다. 세로 선은 프로그램의 최고 메모리 사용량을 나타냅니다. 이 차트는 프로그램이 가용 전역 메모리 공간에 들어갈 수 있는지 여부를 보여줍니다.

이미지

그래프의 각 지점은 XLA HLO 프로그램의 '프로그램 지점'을 나타냅니다. 이 선은 시간 경과에 따라 프로그램의 메모리 사용량이 어떻게 변하는지 보여줍니다.

버퍼 차트 요소와의 상호작용

버퍼 차트의 버퍼를 가리키면 버퍼 수명을 보여주는 가로 선이 작업 영역 차트에 표시됩니다.

이미지

가로 선의 두께는 최고 메모리 할당량 대비 버퍼의 상대적인 크기를 나타냅니다. 선의 길이는 버퍼의 수명을 나타냅니다.

버퍼 차트

두 차트는 최고 사용량의 메모리 사용량 상세 내역을 표시합니다.

이미지

  • 프로그램 순서별: 프로그램 실행 도중 활성화된 순서에 따라 왼쪽에서 오른쪽으로 버퍼를 표시합니다.

  • 크기별: 프로그램 실행 동안 활성 상태였던 버퍼를 크기 내림차순으로 표시합니다.

버퍼 할당량 세부정보 카드

버퍼 차트 중 하나에 표시된 버퍼를 가리키면 버퍼 할당량 세부정보 카드가 나타납니다. 일반적인 세부정보 카드의 모습은 다음과 같습니다.

이미지

  1. 이름 - XLA 작업의 이름입니다.
  2. 카테고리 - 작업 카테고리입니다.
  3. 크기 - 버퍼 할당량의 크기(패딩 포함)입니다.
  4. 패딩되지 않은 크기 - 패딩을 제외한 버퍼 할당의 크기입니다.
  5. 확장 - 패딩된 버퍼의 크기와 패딩되지 않은 크기를 비교한 상대적 규모입니다.
  6. 추가 메모리 - 패딩에 사용된 부가 메모리의 용량을 나타냅니다.
  7. 형태 - N 차원 배열의 순위, 크기, 데이터 유형을 설명합니다.
  8. TensorFlow 작업 이름 - 버퍼 할당과 연결된 TensorFlow 작업의 이름을 표시합니다.
  9. 할당 유형 - 버퍼 할당 카테고리인 매개변수, 출력, 스레드 로컬, 임시를 나타냅니다(예: 퓨전 내의 버퍼 할당).

메모리 부족 오류

모델을 실행한 후 '메모리 부족' 오류가 발생하는 경우 이 문서의 가이드라인을 사용하여 프로필을 캡처합니다. 스크립트가 모델을 학습시킬 때까지 기다린 후 프로파일러를 시작합니다. 출력은 오류 발생 원인을 파악하는 데 도움이 될 수 있습니다.