Accelerate documentation

Amazon SageMaker

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v1.15.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Amazon SageMaker

Hugging Face와 Amazon은 Amazon SageMaker에서 Hugging Face Transformer 모델을 훈련하는 것이比以往보다 더 쉬워지도록 새로운 Hugging Face Deep Learning Containers (DLCs)를 소개했습니다.

시작하기

설정 및 설치

Amazon SageMaker에서 Accelerate 스크립트를 실행하려면 먼저 AWS 계정에 가입해야 합니다. 아직 AWS 계정이 없다면 여기에서 자세히 알아보세요.

AWS 계정이 준비되면 Accelerate용 sagemaker sdk를 다음과 같이 설치해야 합니다:

pip install "accelerate[sagemaker]" --upgrade

Accelerate는 현재 DLC를 사용하며, transformers, datasets, tokenizers가 사전 설치되어 있습니다. Accelerate는 아직 DLC에 포함되어 있지 않습니다(곧 추가될 예정입니다!) 따라서 Amazon SageMaker에서 사용하려면 학습 스크립트가 있는 동일한 디렉터리에 requirements.txt를 생성하고 의존성으로 추가해야 합니다:

accelerate

기타 필요한 의존성도 이 requirements.txt에 추가해야 합니다.

Accelerate 구성

Amazon SageMaker의 런치 구성은 Accelerate CLI를 사용하여 SageMaker가 아닌 학습 작업과 동일한 방식으로 구성할 수 있습니다:

accelerate config
# In which compute environment are you running? ([0] This machine, [1] AWS (Amazon SageMaker)): 1

Accelerate는 Amazon SageMaker 설정에 대한 설문 조사를 진행한 후, 편집할 수 있는 설정 파일을 생성합니다.

Accelerate는 자격 증명을 저장하지 않습니다.

Accelerate 미세 조정 스크립트 준비

학습 스크립트는 SageMaker 외부에서 실행하는 학습 스크립트과 매우 유사하지만, 학습 후 모델을 저장하려면 저장 디렉터리로 /opt/ml/model을 지정하거나 os.environ["SM_MODEL_DIR"]를 사용해야 합니다. 학습이 완료되면 이 디렉터리의 아티팩트는 S3로 업로드됩니다:

- torch.save('/opt/ml/model`)
+ accelerator.save('/opt/ml/model')

SageMaker은 argparse actions을 지원하지 않습니다. 예를 들어, boolean 하이퍼파라미터를 사용하려면 스크립트에서 type을 bool로 지정하고 이 하이퍼파라미터에 대해 명시적인 True 또는 False 값을 제공해야 합니다. [REF].

학습 시작

Accelerate CLI를 사용하여 다음 명령으로 학습을 시작할 수 있습니다:

accelerate launch path_to_script.py --args_to_the_script

…를 사용하여 설정에 따라 학습 스크립트를 실행합니다. 학습 스크립트에 필요한 모든 인수를 이름 붙인 인수로 제공하면 됩니다.

예시

예제 스크립트 중 하나를 실행하는 경우 accelerator.save('/opt/ml/model')을 추가하는 것을 잊지 마세요.

accelerate launch ./examples/sagemaker_example.py

출력:

Configuring Amazon SageMaker environment
Converting Arguments to Hyperparameters
Creating Estimator
2021-04-08 11:56:50 Starting - Starting the training job...
2021-04-08 11:57:13 Starting - Launching requested ML instancesProfilerReport-1617883008: InProgress
.........
2021-04-08 11:58:54 Starting - Preparing the instances for training.........
2021-04-08 12:00:24 Downloading - Downloading input data
2021-04-08 12:00:24 Training - Downloading the training image..................
2021-04-08 12:03:39 Training - Training image download completed. Training in progress..
........
epoch 0: {'accuracy': 0.7598039215686274, 'f1': 0.8178438661710037}
epoch 1: {'accuracy': 0.8357843137254902, 'f1': 0.882249560632689}
epoch 2: {'accuracy': 0.8406862745098039, 'f1': 0.8869565217391304}
........
2021-04-08 12:05:40 Uploading - Uploading generated training model
2021-04-08 12:05:40 Completed - Training job completed
Training seconds: 331
Billable seconds: 331
You can find your model data at: s3://your-bucket/accelerate-sagemaker-1-2021-04-08-11-56-47-108/output/model.tar.gz

고급 기능

분산 학습: 데이터 병렬

accelerate config를 실행하여 accelerate 설정을 구성하고, SageMaker 관련 질문에 답하여 설정을 완료합니다. SageMaker DDP를 사용하려면 What is the distributed mode? ([0] No distributed training, [1] data parallelism):라고 질문받을 때 선택합니다. 예시 설정은 다음과 같습니다:

base_job_name: accelerate-sagemaker-1
compute_environment: AMAZON_SAGEMAKER
distributed_type: DATA_PARALLEL
ec2_instance_type: ml.p3.16xlarge
iam_role_name: xxxxx
image_uri: null
mixed_precision: fp16
num_machines: 1
profile: xxxxx
py_version: py10
pytorch_version: 2.5.0
region: us-east-1
transformers_version: 4.17.0
use_cpu: false

분산 학습: 모델 병렬

현재 개발 중이며, 곧 지원될 예정입니다.

Python 패키지 및 종속성

Accelerate는 현재 transformers, datasets, tokenizers가 사전 설치된 DLC를 사용합니다. 다른 Python 패키지를 사용하려면 requirements.txt에 추가하면 됩니다. 이 패키지는 학습 스크립트가 시작되기 전에 설치됩니다.

로컬 학습: SageMaker 로컬 모드

SageMaker SDK의 로컬 모드는 HuggingFace DLC(Deep Learning container) 내부에서 또는 사용자 정의 컨테이너 이미지를 사용하여 학습 스크립트를 로컬에서 실행할 수 있게 합니다. 이는 최종 컨테이너 환경 내에서 학습 스크립트를 디버깅하고 테스트하는 데 유용합니다. 로컬 모드는 Docker compose를 사용합니다(참고: Docker Compose V2는 아직 지원되지 않습니다). SDK는 DLC를 로컬 환경으로 가져오기 위해 ECR에 대한 인증을 처리합니다. CPU(단일 및 다중 인스턴스)와 GPU(단일 인스턴스) SageMaker 학습 작업을 에뮬레이션할 수 있습니다.

로컬 모드를 사용하려면 ec2_instance_type을 local로 설정해야 합니다.

ec2_instance_type: local

고급 구성

이 구성을 통해 Estimator의 매개변수를 재정의할 수 있습니다. 이러한 설정은 config 파일에 적용해야 하며 accelerate config의 일부가 아닙니다. Spot 인스턴스 사용, 네트워크 격리 활성화 등 학습 작업의 다양한 추가 측면을 제어할 수 있습니다.

additional_args:
  # enable network isolation to restrict internet access for containers
  enable_network_isolation: True

사용 가능한 모든 구성을 여기에서 찾을 수 있습니다.

Spot Instances 사용

Spot Instances를 사용할 수 있습니다. 예를 들어 고급 구성을 참조하세요:

additional_args:
  use_spot_instances: True
  max_wait: 86400

참고: Spot Instances는 종료될 수 있으며, 이 경우 체크포인트에서 학습을 계속해야 합니다. Accelerate는 기본적으로 이 기능을 지원하지 않습니다. 해당 기능이 필요하시면 문의해 주세요.

원격 스크립트: Github에 있는 스크립트 사용

기능이 필요한지 결정되지 않았습니다. 해당 기능이 필요하시다면 저희에게 연락해 주세요.

Update on GitHub