TensorBoard 출력 데이터를 수집하기 위해 훈련 작업 준비하기 - Amazon SageMaker

TensorBoard 출력 데이터를 수집하기 위해 훈련 작업 준비하기

SageMaker의 일반적인 기계 러닝 훈련 작업은 훈련 스크립트 준비와 SageMaker Python SDK의 SageMaker 예측기 구성이라는 두 가지 주요 단계로 구성됩니다. 이 섹션에서는 SageMaker 훈련 작업에서 TensorBoard 호환 데이터를 수집하는 데 필요한 변경 사항을 알아봅니다.

사전 조건

다음 목록에서는 SageMaker를 TensorBore와 함께 사용하기 위한 전제 조건을 보여줍니다.

  • AWS 계정에 아마존 VPC가 설정되어 있는 SageMaker 도메인.

    도메인 설정에 대한 지침은 빠른 설정을 사용하여 Amazon SageMaker 도메인에 온보딩을 참조하세요. 또한 개별 사용자가 SageMaker의 TensorBoard에 접근하려면 도메인 사용자 프로필을 추가해야 합니다. 자세한 내용은 사용자 프로필 추가 섹션을 참조하세요.

  • 다음 목록은 SageMaker에서 TensorBoard를 사용하기 위한 최소 권한 세트입니다.

    • sagemaker:CreateApp

    • sagemaker:DeleteApp

    • sagemaker:DescribeTrainingJob

    • sagemaker:Search

    • s3:GetObject

    • s3:ListBucket

1단계: 오픈 소스 TensorBoard 헬퍼 도구를 사용하여 훈련 스크립트 수정

수집할 출력 텐서와 스칼라를 결정하고 TensorBoardX, TensorFlow Summary Writer, PyTorch Summary Writer 또는 SageMaker Debugger와 같은 도구를 사용하여 훈련 스크립트의 코드 라인을 수정해야 합니다.

또한 TensorBoard 데이터 출력 경로를 훈련 컨테이너의 콜백용 로그 디렉터리(log_dir)로 지정해야 합니다.

프레임워크에 대한 자세한 내용은 다음 리소스를 참조하세요.

2단계: TensorBoard 출력 구성을 사용하여 SageMaker 훈련 추정기 객체 생성

SageMaker 프레임워크 추정기를 구성하는 동안 sagemaker.debugger.TensorBoardOutputConfig를사용하세요. 이 구성 API는 TensorBoard 데이터를 저장하기 위해 지정한 S3 버킷을 훈련 컨테이너(/opt/ml/output/tensorboard)의 로컬 경로와 매핑합니다. 모듈의 객체를 추정기 클래스의 tensorboard_output_config 파라미터에 전달합니다. 다음 코드 조각에서는 TensorBoard 출력 구성 파라미터를 사용하여 TensorFlow 추정기를 준비하는 예제를 보여줍니다.

참고

이 예제에서는 SageMaker Python SDK를 사용한다고 가정합니다. 하위 수준의 SageMaker API를 사용하는 경우 CreateTrainingJob API의 요청 구문에 다음을 포함해야 합니다.

"TensorBoardOutputConfig": { "LocalPath": "/opt/ml/output/tensorboard", "S3OutputPath": "s3_output_bucket" }
from sagemaker.tensorflow import TensorFlow from sagemaker.debugger import TensorBoardOutputConfig # Set variables for training job information, # such as s3_out_bucket and other unique tags. ... LOG_DIR="/opt/ml/output/tensorboard" output_path = os.path.join( "s3_output_bucket", "sagemaker-output", "date_str", "your-training_job_name" ) tensorboard_output_config = TensorBoardOutputConfig( s3_output_path=os.path.join(output_path, 'tensorboard'), container_local_output_path=LOG_DIR ) estimator = TensorFlow( entry_point="train.py", source_dir="src", role=role, image_uri=image_uri, instance_count=1, instance_type="ml.c5.xlarge", base_job_name="your-training_job_name", tensorboard_output_config=tensorboard_output_config, hyperparameters=hyperparameters )
참고

CreateHyperParameterTuningJob API는 매핑을 위한 TensorBoard 출력 구성과 통합되지 않으므로 TensorBoard 애플리케이션은 SageMaker 하이퍼파라미터 튜닝 작업에 대한 기본 지원을 제공하지 않습니다. 하이퍼파라미터 튜닝 작업에 TensorBoard 애플리케이션을 사용하려면 훈련 스크립트에서 Amazon S3에 지표를 업로드하기 위한 코드를 작성해야 합니다. 지표가 Amazon S3 버킷에 업로드되면 SageMaker의 TensorBoard 애플리케이션에 버킷을 로드할 수 있습니다.