Vertex AI 텐서보드에 로그 업로드

로컬에서 학습을 수행하여 생성되었거나, Vertex AI 외부에서 학습했거나, 동료가 생성했거나, 예시 로그이거나, 다른 Vertex AI 텐서보드 인스턴스를 사용하여 생성된 Vertex AI 텐서보드 인스턴스에 기존 로그를 업로드할 수 있습니다. 여러 Vertex AI 텐서보드 인스턴스 간에 로그를 공유할 수 있습니다.

Vertex AI 텐서보드는 텐서보드 로그를 업로드할 수 있도록 Google Cloud CLI 및 Python용 Vertex AI SDK를 제공합니다. Google Cloud에 연결할 수 있는 모든 환경에서 로그를 업로드할 수 있습니다.

Python용 Vertex AI SDK

지속적 모니터링

지속적인 모니터링을 위해서는 학습을 시작할 때 aiplatform.start_upload_tb_log을(를) 호출합니다. SDK는 업로드를 위해 새 스레드를 엽니다. 이 스레드는 디렉터리의 새 데이터를 모니터링한 후 Vertex AI 텐서보드 실험에 업로드합니다. 학습이 완료되면 end_upload_tb_log를 호출하여 업로더 스레드를 종료합니다.

start_upload_tb_log()를 호출하면 예외가 발생해도 스레드가 활성 상태로 유지됩니다. 스레드가 종료되도록 하려면 try 문에서 start_upload_tb_log() 뒤와 end_upload_tb_log() 앞에 코드를 삽입하고 finally에서 end_upload_tb_log()를 호출합니다.

Python

def upload_tensorboard_log_continuously_sample(
    tensorboard_experiment_name: str,
    logdir: str,
    tensorboard_id: str,
    project: str,
    location: str,
    experiment_display_name: Optional[str] = None,
    run_name_prefix: Optional[str] = None,
    description: Optional[str] = None,
) -> None:

    aiplatform.init(project=project, location=location)

    # Continuous monitoring
    aiplatform.start_upload_tb_log(
        tensorboard_id=tensorboard_id,
        tensorboard_experiment_name=tensorboard_experiment_name,
        logdir=logdir,
        experiment_display_name=experiment_display_name,
        run_name_prefix=run_name_prefix,
        description=description,
    )

    try:
        print("Insert your code here")
    finally:
        aiplatform.end_upload_tb_log()

  • tensorboard_experiment_name: 업로드할 텐서보드 실험의 이름입니다.
  • logdir: 텐서보드 로그를 확인할 디렉터리 위치입니다.
  • tensorboard_id: 텐서보드 인스턴스 ID입니다. 설정하지 않으면 aiplatform.inittensorboard_id이(가) 사용됩니다.
  • project: 프로젝트 ID Google Cloud 콘솔 시작 페이지에서 내 프로젝트 ID를 찾을 수 있습니다.
  • location: 텐서보드 인스턴스가 있는 리전입니다.
  • experiment_display_name: 실험의 표시 이름입니다.
  • run_name_prefix: 있는 경우, 이 호출로 생성되는 모든 실행의 이름에는 이 값이 접두어로 추가됩니다.
  • description: 실험에 할당할 문자열 설명입니다.

일회성 로깅

텐서보드 로그 업로드

aiplatform.upload_tb_log을(를) 호출하여 텐서보드 로그 1회 업로드를 실시합니다. logdir의 기존 데이터가 업로드된 후 즉시 반환됩니다.

Python

def upload_tensorboard_log_one_time_sample(
    tensorboard_experiment_name: str,
    logdir: str,
    tensorboard_id: str,
    project: str,
    location: str,
    experiment_display_name: Optional[str] = None,
    run_name_prefix: Optional[str] = None,
    description: Optional[str] = None,
    verbosity: Optional[int] = 1,
) -> None:

    aiplatform.init(project=project, location=location)

    # one time upload
    aiplatform.upload_tb_log(
        tensorboard_id=tensorboard_id,
        tensorboard_experiment_name=tensorboard_experiment_name,
        logdir=logdir,
        experiment_display_name=experiment_display_name,
        run_name_prefix=run_name_prefix,
        description=description,
    )

  • tensorboard_experiment_name: 텐서보드 실험의 이름입니다.
  • logdir: 텐서보드 로그를 확인할 디렉터리 위치입니다.
  • tensorboard_id: 텐서보드 인스턴스 ID입니다. 설정하지 않으면 aiplatform.inittensorboard_id이(가) 사용됩니다.
  • project: 프로젝트 ID 이러한 프로젝트 ID는 Google Cloud 콘솔 시작 페이지에서 찾을 수 있습니다.
  • location: 텐서보드 인스턴스가 있는 리전입니다.
  • experiment_display_name: 실험의 표시 이름입니다.
  • run_name_prefix: 있는 경우, 이 호출로 생성되는 모든 실행의 이름에는 이 값이 접두어로 추가됩니다.
  • description: 실험에 할당할 문자열 설명입니다.
  • verbosity: 통계 세부정보 수준(정수)입니다. 지원되는 값: 0 - 업로드 통계가 출력되지 않습니다. 1 - 데이터를 업로드하는 동안 업로드 통계를 출력합니다(기본값).

프로필 로그 업로드

aiplatform.upload_tb_log를 호출하여 실험에 텐서보드 프로필 로그를 업로드합니다.

Python

def upload_tensorboard_profile_logs_to_experiment_sample(
    experiment_name: str,
    logdir: str,
    project: str,
    location: str,
    run_name_prefix: str,
    allowed_plugins: FrozenSet[str] = ["profile"],
) -> None:

    aiplatform.init(project=project, location=location, experiment=experiment_name)

    # one time upload
    aiplatform.upload_tb_log(
        tensorboard_experiment_name=experiment_name,
        logdir=logdir,
        run_name_prefix=run_name_prefix,
        allowed_plugins=allowed_plugins,
    )

  • experiment_name: 텐서보드 실험의 이름입니다.
  • logdir: 텐서보드 로그를 확인할 디렉터리 위치입니다.
  • project: 프로젝트 ID 이러한 프로젝트 ID는 Google Cloud 콘솔 시작 페이지에서 찾을 수 있습니다.
  • location: 텐서보드 인스턴스가 있는 리전입니다.
  • run_name_prefix: 프로필 데이터의 실행 접두어입니다. LOG_DIR 내의 디렉터리 형식은 다음과 일치해야 합니다.
    • /RUN_NAME_PREFIX/plugins/profile/YYYY_MM_DD_HH_SS/
  • allowed_plugins: 허용할 추가 플러그인 목록입니다. 프로필 데이터를 업로드하려면 "profile"이(가) 포함되어야 합니다.

gcloud CLI

  1. (선택사항) Vertex AI 텐서보드 업로더 Python CLI를 설치할 전용 가상 환경을 만듭니다.
    python3 -m venv PATH/TO/VIRTUAL/ENVIRONMENT
    source PATH/TO/VIRTUAL/ENVIRONMENT/bin/activate
    
    • PATH/TO/VIRTUAL/ENVIRONMENT: 전용 가상 환경입니다.
  2. Vertex AI SDK를 통해 Vertex AI 텐서보드 패키지를 설치합니다.
    pip install -U pip
    pip install google-cloud-aiplatform[tensorboard]
    
  3. 텐서보드 로그 업로드
    1. 시계열 및 BLOB 데이터
      tb-gcp-uploader --tensorboard_resource_name \
      TENSORBOARD_RESOURCE_NAME \
      --logdir=LOG_DIR \
      --experiment_name=TB_EXPERIMENT_NAME --one_shot=True
      
    2. 프로필 데이터
      tb-gcp-uploader \
      --tensorboard_resource_name TENSORBOARD_RESOURCE_NAME \
      --logdir=LOG_DIR --experiment_name=TB_EXPERIMENT_NAME \
      --allowed_plugins="profile" --run_name_prefix=RUN_NAME_PREFIX \
      --one_shot=True
      
    • TENSORBOARD_RESOURCE_NAME: Vertex AI 텐서보드 인스턴스를 완전히 식별하는 데 사용되는 텐서보드 리소스 이름입니다.
    • LOG_DIR: 로컬 파일 시스템 또는 Cloud Storage에 상주하는 이벤트 로그의 위치입니다.
    • TB_EXPERIMENT_NAME: 텐서보드 실험의 이름(예: test-experiment)입니다.
    • RUN_NAME_PREFIX: 프로필 데이터의 실행 프리픽스입니다. LOG_DIR 내의 디렉터리 형식은 다음과 일치해야 합니다.
      • /RUN_NAME_PREFIX/plugins/profile/YYYY_MM_DD_HH_SS/

기본적으로 업로더 CLI는 무기한으로 실행되어 LOG_DIR의 변경사항을 모니터링하고 새로 추가된 로그를 업로드합니다. --one_shot=True은(는) 동작을 중지합니다. 자세한 내용을 보려면 tb-gcp-uploader --help을(를) 실행하세요.