Accelerate 文件
Amazon SageMaker
並獲得增強的文件體驗
開始使用
Amazon SageMaker
Hugging Face 和 Amazon 引入了新的 Hugging Face 深度學習容器 (DLCs),使得在 Amazon SageMaker 中訓練 Hugging Face Transformer 模型比以往任何時候都更容易。
入門
設定與安裝
在 Amazon SageMaker 上執行您的 Accelerate 指令碼之前,您需要註冊一個 AWS 賬戶。如果您還沒有 AWS 賬戶,請在此處瞭解更多資訊。
擁有 AWS 賬戶後,您需要透過以下命令為 Accelerate 安裝 sagemaker
SDK
pip install "accelerate[sagemaker]" --upgrade
Accelerate 目前使用預裝了 transformers
、datasets
和 tokenizers
的 DLC。Accelerate 尚未包含在 DLC 中(很快就會新增!),因此要在 Amazon SageMaker 中使用它,您需要在訓練指令碼所在的同一目錄中建立一個 requirements.txt
檔案,並將其新增為依賴項
accelerate
您還應該將您有的任何其他依賴項新增到此 requirements.txt
檔案中。
配置 Accelerate
您可以像為非 SageMaker 訓練作業一樣,使用 Accelerate CLI 為 Amazon 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 操作。如果您想使用例如布林型別的超引數,您需要在指令碼中將型別指定為 `bool`,併為該超引數提供明確的 `True` 或 `False` 值。[參考]。
啟動訓練
您可以使用 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,當被問到 什麼是分散式模式?([0] 無分散式訓練, [1] 資料並行):
時,請選擇它。下方是配置示例
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(深度學習容器)內本地執行您的訓練指令碼,或使用您自定義的容器映象。這對於在最終的容器環境中除錯和測試您的訓練指令碼非常有用。本地模式使用 Docker compose (*注意:尚不支援 Docker Compose V2*)。SDK 將處理針對 ECR 的身份驗證,以將 DLC 拉取到您的本地環境中。您可以模擬 CPU(單例項和多例項)和 GPU(單例項)的 SageMaker 訓練作業。
要使用本地模式,您需要將您的 ec2_instance_type
設定為 local
。
ec2_instance_type: local
高階配置
該配置允許您覆蓋估算器的引數。這些設定必須在配置檔案中應用,並且不屬於 accelerate config
的一部分。您可以控制訓練作業的許多其他方面,例如使用 Spot 例項、啟用網路隔離等等。
additional_args:
# enable network isolation to restrict internet access for containers
enable_network_isolation: True
您可以在這裡找到所有可用的配置。
使用 Spot 例項
您可以使用 Spot 例項,例如使用(參見高階配置)
additional_args:
use_spot_instances: True
max_wait: 86400
注意:Spot 例項可能會被終止,訓練需要從檢查點繼續。Accelerate 沒有開箱即用地處理這個問題。如果您需要此功能,請聯絡我們。
遠端指令碼:使用位於 Github 上的指令碼
尚未決定是否需要此功能。如果您需要此功能,請聯絡我們。
< > 在 GitHub 上更新