TensorFlow 교육 컴파일러로 SageMaker 교육 작업 실행 - Amazon SageMaker

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

TensorFlow 교육 컴파일러로 SageMaker 교육 작업 실행

교육 컴파일러에서는 Amazon SageMaker Studio Classic, Amazon SageMaker 노트북 인스턴스 등 모든 SageMaker 인터페이스를 사용하여 SageMaker 교육 작업을 실행할 수 있습니다. AWS SDK for Python (Boto3) AWS Command Line Interface

SageMaker Python SDK 사용하기

SageMaker 트레이닝 컴파일러를 켜려면 SageMaker TensorFlow 또는 Hugging compiler_config Face 추정기에 파라미터를 추가하십시오. TrainingCompilerConfig 클래스를 가져와서 이 클래스의 인스턴스를 compiler_config 매개변수에 전달합니다. 다음 코드 예제는 트레이닝 컴파일러가 켜진 상태에서의 SageMaker 추정기 클래스 구조를 보여줍니다. SageMaker

작은 정보

TensorFlow 및 Transformer 라이브러리에서 제공하는 사전 빌드된 모델을 시작하려면 의 참조 표에 나와 있는 배치 크기를 사용해 보십시오. 테스트 완료 모델

참고

SageMaker 훈련 컴파일러는 SageMaker TensorFlowHugging Face 프레임워크 추정기를 통해 사용할 수 있습니다. TensorFlow

사용 사례에 맞는 정보는 다음 옵션 중 하나를 참고하십시오.

TensorFlow
from sagemaker.tensorflow import TensorFlow, TrainingCompilerConfig # the original max batch size that can fit into GPU memory without compiler batch_size_native=12 learning_rate_native=float('5e-5') # an updated max batch size that can fit into GPU memory with compiler batch_size=64 # update the global learning rate learning_rate=learning_rate_native/batch_size_native*batch_size hyperparameters={ "n_gpus": 1, "batch_size": batch_size, "learning_rate": learning_rate } tensorflow_estimator=TensorFlow( entry_point='train.py', instance_count=1, instance_type='ml.p3.2xlarge', framework_version='2.9.1', hyperparameters=hyperparameters, compiler_config=TrainingCompilerConfig(), disable_profiler=True, debugger_hook_config=False ) tensorflow_estimator.fit()

훈련 스크립트를 준비하려면 다음 페이지를 참고하십시오.

Hugging Face Estimator with TensorFlow
from sagemaker.huggingface import HuggingFace, TrainingCompilerConfig # the original max batch size that can fit into GPU memory without compiler batch_size_native=12 learning_rate_native=float('5e-5') # an updated max batch size that can fit into GPU memory with compiler batch_size=64 # update the global learning rate learning_rate=learning_rate_native/batch_size_native*batch_size hyperparameters={ "n_gpus": 1, "batch_size": batch_size, "learning_rate": learning_rate } tensorflow_huggingface_estimator=HuggingFace( entry_point='train.py', instance_count=1, instance_type='ml.p3.2xlarge', transformers_version='4.21.1', tensorflow_version='2.6.3', hyperparameters=hyperparameters, compiler_config=TrainingCompilerConfig(), disable_profiler=True, debugger_hook_config=False ) tensorflow_huggingface_estimator.fit()

훈련 스크립트를 준비하려면 다음 페이지를 참고하십시오.

Hugging Face Estimator with TensorFlow
from sagemaker.huggingface import HuggingFace, TrainingCompilerConfig # choose an instance type, specify the number of instances you want to use, # and set the num_gpus variable the number of GPUs per instance. instance_count=1 instance_type='ml.p3.8xlarge' num_gpus=4 # the original max batch size that can fit to GPU memory without compiler batch_size_native=16 learning_rate_native=float('5e-5') # an updated max batch size that can fit to GPU memory with compiler batch_size=26 # update learning rate learning_rate=learning_rate_native/batch_size_native*batch_size*num_gpus*instance_count hyperparameters={ "n_gpus": num_gpus, "batch_size": batch_size, "learning_rate": learning_rate } tensorflow_huggingface_estimator=HuggingFace( entry_point='train.py', instance_count=instance_count, instance_type=instance_type, transformers_version='4.21.1', tensorflow_version='2.6.3', hyperparameters=hyperparameters, compiler_config=TrainingCompilerConfig(), disable_profiler=True, debugger_hook_config=False ) tensorflow_huggingface_estimator.fit()
작은 정보

훈련 스크립트를 준비하려면 다음 페이지를 참고하십시오.

다음 목록은 컴파일러로 SageMaker 훈련 작업을 실행하는 데 필요한 최소 매개 변수 집합입니다.

참고

SageMaker Hugging Face 추정기를 사용할 때는,,, 매개변수를 지정하여 transformers_version SageMaker 트레이닝 tensorflow_version hyperparameters 컴파일러를 compiler_config 활성화해야 합니다. image_uri은(는) 지원되는 프레임워크에 나열된 Training Compiler 통합 딥 러닝 컨테이너를 수동으로 지정하는 데 사용할 수 없습니다.

  • entry_point(str) - 필수 사항. 훈련 스크립트의 파일 이름을 지정하십시오.

  • instance_count(int) — 필수. 인스턴스 수를 지정하세요.

  • instance_type(str) - 필수 사항. 인스턴스 유형을 지정하세요.

  • transformers_version(str) — SageMaker Hugging Face 추정기를 사용할 때만 필요합니다. 트레이닝 컴파일러에서 SageMaker 지원하는 Hugging Face Transformer 라이브러리 버전을 지정하십시오. 사용 가능한 버전을 확인하려면 지원되는 프레임워크을(를) 참조하세요.

  • framework_version 또는 tensorflow_version(str) - 필수 사항. 트레이닝 컴파일러에서 지원하는 TensorFlow SageMaker 버전을 지정하십시오. 사용 가능한 버전을 확인하려면 지원되는 프레임워크을(를) 참조하세요.

    참고

    SageMaker TensorFlow 추정기를 사용할 때는 다음을 지정해야 합니다. framework_version

    SageMaker Hugging Face 추정기를 사용할 때는 및 를 모두 지정해야 합니다. transformers_version tensorflow_version

  • hyperparameters(dict) - 선택 사항. 훈련 작업에 사용할 하이퍼파라미터(예: n_gpus, batch_size, learning_rate)를 지정하세요. SageMaker 트레이닝 컴파일러를 활성화할 때는 배치 크기를 늘리고 그에 따라 학습률을 조정하세요. 컴파일러를 사용하고 배치 크기를 조정하여 훈련 속도를 향상시킨 사례 연구를 확인하려면 테스트 완료 모델SageMaker 교육 컴파일러 예제 노트북 및 블로그을(를) 참조하세요.

  • compiler_config(TrainingCompilerConfig 객체) — 필수. SageMaker 트레이닝 컴파일러를 켜려면 이 파라미터를 포함하세요. 다음은 TrainingCompilerConfig 클래스의 매개변수입니다.

    • enabled(bool) — 선택 사항. SageMaker 트레이닝 컴파일러를 켜거나 False 끄도록 지정합니다True. 기본 값은 True입니다.

    • debug(bool) — 선택 사항. 컴파일러 가속 훈련 작업에서 더 자세한 훈련 로그를 받으려면 True로 변경하십시오. 하지만, 추가 로깅으로 인해 오버헤드가 추가되어 컴파일된 훈련 작업이 느려질 수 있습니다. 기본 값은 False입니다.

주의

SageMaker 디버거를 켜면 SageMaker 트레이닝 컴파일러의 성능에 영향을 미칠 수 있습니다. 성능에 영향을 주지 않도록 SageMaker 트레이닝 컴파일러를 실행할 때는 디버거를 끄는 것이 좋습니다. 자세한 설명은 고려 사항 섹션을 참조하세요. 디버거 기능을 끄려면 다음 두 인수를 예측기에 추가하십시오.

disable_profiler=True, debugger_hook_config=False

컴파일러를 사용한 훈련 작업이 성공적으로 시작되면, 작업 초기화 단계에서 다음과 같은 로그를 받게 됩니다.

  • TrainingCompilerConfig(debug=False) 포함

    Found configuration for Training Compiler Configuring SM Training Compiler...
  • TrainingCompilerConfig(debug=True) 포함

    Found configuration for Training Compiler Configuring SM Training Compiler... Training Compiler set to debug mode

SageMaker Python SDK 및 확장 SageMaker 프레임워크 딥 러닝 컨테이너 사용

AWS Deep Learning Containers (DLC) 는 오픈 소스 TensorFlow 프레임워크 상에서의 변경 사항을 TensorFlow 포함하는 개조된 버전을 TensorFlow 사용하기 위한 것입니다. SageMaker 프레임워크 Deep Learning 컨테이너는 기본 AWS 인프라 및 Amazon에 최적화되어 SageMaker 있습니다. DLC 사용의 이점을 활용하여 SageMaker Training Compiler를 통합하면 네이티브에 비해 성능이 더 향상됩니다. TensorFlow 또한, DLC 이미지를 확장하여 사용자 지정 훈련 컨테이너를 만들 수 있습니다.

참고

이 Docker 사용자 지정 기능은 현재 에서만 사용할 수 있습니다. TensorFlow

사용 사례에 맞게 SageMaker TensorFlow DLC를 확장하고 사용자 지정하려면 다음 지침을 사용하세요.

Dockerfile 생성

다음 Dockerfile 템플릿을 사용하여 DLC를 확장하세요. SageMaker TensorFlow SageMaker TensorFlow DLC 이미지를 Docker 컨테이너의 기본 이미지로 사용해야 합니다. SageMaker TensorFlow DLC 이미지 URI를 찾으려면 지원되는 프레임워크를 참조하십시오.

# SageMaker TensorFlow Deep Learning Container image FROM 763104351884.dkr.ecr.<aws-region>.amazonaws.com/tensorflow-training:<image-tag> ENV PATH="/opt/ml/code:${PATH}" # This environment variable is used by the SageMaker container # to determine user code directory. ENV SAGEMAKER_SUBMIT_DIRECTORY /opt/ml/code # Add more code lines to customize for your use-case ...

자세한 내용은 2단계: Dockerfile 및 Python 훈련 스크립트 생성 및 업로드를 참고하십시오.

프레임워크 DLC를 확장할 때는 다음과 같은 함정을 고려하십시오. SageMaker

  • 컨테이너에 있는 패키지의 버전을 명시적으로 제거하거나 변경하지 마십시오. TensorFlow SageMaker 이렇게 하면 AWS 최적화된 TensorFlow 패키지가 오픈 소스 TensorFlow 패키지로 덮어쓰여져 성능이 저하될 수 있습니다.

  • 종속 항목으로 특정 TensorFlow 버전이나 버전이 있는 패키지를 주의하세요. 이러한 패키지는 AWS 최적화된 패키지를 암시적으로 제거하고 오픈 소스 패키지를 설치할 수 TensorFlow 있습니다. TensorFlow

예를 들어, tensorflow/models 및 tensorflow/텍스트 라이브러리가 항상 오픈 소스를 다시 설치하려고 시도한다는 알려진 문제가 있습니다. TensorFlow 사용 사례에 맞는 특정 버전을 선택하기 위해 이러한 라이브러리를 설치해야 하는 경우 v2.9 이상용 DLC Dockerfile을 살펴보는 것이 좋습니다. SageMaker TensorFlow Dockerfile의 경로는 일반적으로 다음과 같은 형식(tensorflow/training/docker/<tensorflow-version>/py3/<cuda-version>/Dockerfile.gpu)입니다. Dockerfile에서 AWS 관리되는 TensorFlow 바이너리 (환경 변수에 지정됨) 및 기타 종속 항목을 순서대로 재설치하기 위한 코드 라인을 찾아야 합니다. TF_URL 재설치 섹션은 다음 예제와 같아야 합니다.

# tf-models does not respect existing installations of TensorFlow # and always installs open source TensorFlow RUN pip3 install --no-cache-dir -U \ tf-models-official==x.y.z RUN pip3 uninstall -y tensorflow tensorflow-gpu \ ; pip3 install --no-cache-dir -U \ ${TF_URL} \ tensorflow-io==x.y.z \ tensorflow-datasets==x.y.z

구축하고 ECR로 푸시

Docker 컨테이너를 빌드하고 Amazon ECR에 푸시하려면, 다음 링크의 지침을 따르십시오.

SageMaker Python SDK 추정기를 사용하여 실행하기

평소와 같이 SageMaker TensorFlow 프레임워크 추정기를 사용하세요. Amazon ECR에서 호스팅한 새 컨테이너를 사용하도록 image_uri를 지정해야 합니다.

import sagemaker, boto3 from sagemaker import get_execution_role from sagemaker.tensorflow import TensorFlow, TrainingCompilerConfig account_id = boto3.client('sts').get_caller_identity().get('Account') ecr_repository = 'tf-custom-container-test' tag = ':latest' region = boto3.session.Session().region_name uri_suffix = 'amazonaws.com' byoc_image_uri = '{}.dkr.ecr.{}.{}/{}'.format( account_id, region, uri_suffix, ecr_repository + tag ) byoc_image_uri # This should return something like # 111122223333.dkr.ecr.us-east-2.amazonaws.com/tf-custom-container-test:latest estimator = TensorFlow( image_uri=image_uri, role=get_execution_role(), base_job_name='tf-custom-container-test-job', instance_count=1, instance_type='ml.p3.8xlarge' compiler_config=TrainingCompilerConfig(), disable_profiler=True, debugger_hook_config=False ) # Start training estimator.fit()

API 작업을 사용하여 SageMaker 훈련 컴파일러를 활성화합니다. SageMaker CreateTrainingJob

SageMaker 교육 컴파일러 구성 옵션은 CreateTrainingJobAPI 작업에 대한 요청 구문의 AlgorithmSpecificationHyperParameters 필드를 통해 지정해야 합니다.

"AlgorithmSpecification": { "TrainingImage": "<sagemaker-training-compiler-enabled-dlc-image>" }, "HyperParameters": { "sagemaker_training_compiler_enabled": "true", "sagemaker_training_compiler_debug_mode": "false" }

SageMaker 트레이닝 컴파일러가 구현된 딥러닝 컨테이너 이미지 URI의 전체 목록을 찾으려면 을 참조하십시오. 지원되는 프레임워크