Accelerate documentation
Amazon SageMaker
Amazon SageMaker
Hugging Face và Amazon đã giới thiệu Container Học Sâu Hugging Face (DLC) mới để giúp việc huấn luyện các mô hình Transformer của Hugging Face trên Amazon SageMaker trở nên dễ dàng hơn bao giờ hết.
Bắt đầu
Cài đặt & Thiết lập
Trước khi bạn có thể chạy các script Accelerate của mình trên Amazon SageMaker, bạn cần đăng ký một tài khoản AWS. Nếu bạn chưa có tài khoản AWS, hãy tìm hiểu thêm tại đây.
Sau khi bạn có tài khoản AWS, bạn cần cài đặt sdk sagemaker cho Accelerate bằng cách:
pip install "accelerate[sagemaker]" --upgradeAccelerate hiện đang sử dụng DLC, với transformers, datasets và tokenizers được cài đặt sẵn. Accelerate chưa có trong DLC (sẽ sớm được thêm vào!) nên để sử dụng nó trong Amazon SageMaker, bạn cần tạo một requirements.txt trong cùng thư mục chứa script huấn luyện của bạn và thêm nó như một phụ thuộc:
accelerateBạn cũng nên thêm bất kỳ phụ thuộc nào khác mà bạn có vào requirements.txt này.
Cấu hình Accelerate
Bạn có thể cấu hình launch configuration cho Amazon SageMaker giống như cách bạn làm với các tác vụ huấn luyện không phải SageMaker bằng Accelerate CLI:
accelerate config
# In which compute environment are you running? ([0] This machine, [1] AWS (Amazon SageMaker)): 1Accelerate sẽ đưa ra một bảng câu hỏi về cấu hình Amazon SageMaker của bạn và tạo ra một tệp cấu hình mà bạn có thể chỉnh sửa.
Accelerate không lưu trữ bất kỳ thông tin xác thực nào của bạn.
Chuẩn bị một kịch bản tinh chỉnh bằng Accelerate
Script huấn luyện rất giống với một script huấn luyện mà bạn có thể chạy bên ngoài SageMaker, nhưng để lưu mô hình của bạn sau khi huấn luyện, bạn cần chỉ định /opt/ml/model hoặc sử dụng os.environ["SM_MODEL_DIR"] làm thư mục lưu. Sau khi huấn luyện, các artifact trong thư mục này sẽ được tải lên S3:
- torch.save('/opt/ml/model`)
+ accelerator.save('/opt/ml/model')SageMaker không hỗ trợ các hành động của argparse. Nếu bạn muốn sử dụng, ví dụ, các siêu tham số boolean, bạn cần chỉ định type là bool trong script của mình và cung cấp một giá trị True hoặc False rõ ràng cho siêu tham số này. [REF].
Khởi động Huấn luyện
Bạn có thể khởi động quá trình huấn luyện của mình bằng Accelerate CLI với:
accelerate launch path_to_script.py --args_to_the_scriptĐiều này sẽ khởi chạy script huấn luyện của bạn bằng cấu hình của bạn. Điều duy nhất bạn cần làm là cung cấp tất cả các đối số cần thiết cho script huấn luyện của bạn dưới dạng các đối số có tên.
Ví dụ
Nếu bạn chạy một trong các script mẫu, đừng quên thêm
accelerator.save('/opt/ml/model')vào đó.
accelerate launch ./examples/sagemaker_example.py
Đầu ra:
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.gzTính năng nâng cao
Huấn luyện phân tán: Song song dữ liệu
Cấu hình accelerate bằng cách chạy accelerate config và trả lời các câu hỏi của SageMaker để thiết lập.
Để sử dụng SageMaker DDP, hãy chọn nó khi được hỏi What is the distributed mode? ([0] No distributed training, [1] data parallelism):.
Dưới đây là ví dụ về cấu hình:
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: falseHuấn luyện phân tán: Song song hóa mô hình
hiện đang trong quá trình phát triển, sẽ được hỗ trợ sớm.
Gói và các phụ thuộc Python
Accelerate hiện sử dụng DLC, trong đó transformers, datasets và tokenizers đã được cài đặt sẵn. Nếu bạn muốn sử dụng các gói Python khác, bạn có thể thêm chúng vào requirements.txt. Các gói này sẽ được cài đặt trước khi script huấn luyện của bạn được khởi chạy.
Đào tạo cục bộ: Chế độ cục bộ của SageMaker
Chế độ local trong SageMaker SDK cho phép bạn chạy script huấn luyện của mình cục bộ bên trong HuggingFace DLC (Deep Learning container) hoặc sử dụng ảnh container tùy chỉnh của bạn. Điều này hữu ích để gỡ lỗi và kiểm tra script huấn luyện của bạn trong môi trường container cuối cùng. Chế độ local sử dụng Docker compose (Lưu ý: Docker Compose V2 chưa được hỗ trợ). SDK sẽ xử lý xác thực với ECR để kéo DLC về môi trường cục bộ của bạn. Bạn có thể mô phỏng các tác vụ huấn luyện SageMaker trên CPU (đơn và đa instance) và GPU (đơn instance).
Để sử dụng chế độ cục bộ, bạn cần đặt ec2_instance_type thành local.
ec2_instance_type: localCấu hình nâng cao
Cấu hình cho phép bạn ghi đè các tham số của Estimator.
Các cài đặt này phải được áp dụng trong tệp cấu hình và không phải là một phần của accelerate config. Bạn có thể kiểm soát nhiều khía cạnh bổ sung của công việc huấn luyện, ví dụ: sử dụng Spot instances, bật cách ly mạng và nhiều hơn nữa.
additional_args:
# enable network isolation to restrict internet access for containers
enable_network_isolation: TrueBạn có thể tìm thấy tất cả các cấu hình khả dụng tại đây.
Sử dụng Spot Instances
Bạn có thể sử dụng Spot Instances, ví dụ bằng cách sử dụng (xem Cấu hình nâng cao):
additional_args:
use_spot_instances: True
max_wait: 86400Lưu ý: Spot Instances có thể bị kết thúc và việc huấn luyện sẽ được tiếp tục từ một checkpoint. Tính năng này không được xử lý mặc định trong Accelerate. Hãy liên hệ với chúng tôi nếu bạn muốn có tính năng này.
Remote scripts: Sử dụng các script nằm trên Github
Chưa quyết định xem tính năng này có cần thiết hay không. Hãy liên hệ với chúng tôi nếu bạn muốn có tính năng này.
Update on GitHub