Accelerate documentation
Amazon SageMaker
Amazon SageMaker
Hugging Face ve Amazon, Hugging Face Transformer modellerinin Amazon SageMaker üzerinde eğitimini daha önce hiç olmadığı kadar kolaylaştırmak için yeni Hugging Face Deep Learning Containers (DLC) tanıttı.
Başlangıç
Kurulum & Yükleme
Amazon SageMaker üzerinde Accelerate betiklerinizi çalıştırabilmeniz için bir AWS hesabına kaydolmanız gerekir. Henüz bir AWS hesabınız yoksa buradan daha fazla bilgi edinebilirsiniz.
AWS Hesabınız hazır olduğunda, Accelerate için sagemaker sdk'sini aşağıdaki komutla kurmanız gerekir:
pip install "accelerate[sagemaker]" --upgradeAccelerate şu anda DLC'leri kullanır ve transformers, datasets ile tokenizers önceden yüklenmiştir. Accelerate henüz DLC'de yer almamaktadır (yakında eklenecek!) bu nedenle Amazon SageMaker içinde kullanmak için eğitim betiğinizin bulunduğu dizinde bir requirements.txt dosyası oluşturup bağımlılık olarak eklemeniz gerekir:
accelerateDiğer bağımlılıklarınızı da bu requirements.txt dosyasına eklemelisiniz.
Accelerate Yapılandırması
Amazon SageMaker için başlatma yapılandırmasını, Accelerate CLI ile SageMaker dışı eğitim işleri için yaptığınız gibi yapılandırabilirsiniz:
accelerate config
# In which compute environment are you running? ([0] This machine, [1] AWS (Amazon SageMaker)): 1Accelerate, Amazon SageMaker kurulumunuz hakkında bir anket uygulayacak ve düzenleyebileceğiniz bir yapılandırma dosyası oluşturacaktır.
Accelerate, kimlik bilgilerinizin hiçbirini kaydetmez.
Bir Accelerate ince ayar betiği hazırlayın
Eğitim betiği, SageMaker dışında çalıştırabileceğiniz bir eğitim betiğine çok benzer; ancak eğitimin ardından modelinizi kaydetmek için /opt/ml/model dizinini belirtmeniz veya os.environ["SM_MODEL_DIR"] değerini kayıt dizini olarak kullanmanız gerekir. Eğitim tamamlandıktan sonra bu dizindeki artefaktlar S3'e yüklenir:
- torch.save('/opt/ml/model`)
+ accelerator.save('/opt/ml/model')SageMaker, argparse eylemlerini desteklemez. Örneğin, boolean hiperparametreler kullanmak istiyorsanız, betiğinizde type parametresini bool olarak belirtmeli ve bu hiperparametre için açık bir True veya False değeri sağlamalısınız. [REF].
Eğitimi Başlat
Eğitiminizi Accelerate CLI ile şu şekilde başlatabilirsiniz:
accelerate launch path_to_script.py --args_to_the_scriptBu, eğitim betiğinizi yapılandırmanızla başlatacaktır. Yapmanız gereken tek şey, eğitim betiğinizin ihtiyaç duyduğu tüm argümanları adlandırılmış argümanlar olarak sağlamaktır.
Örnekler
Örnek betiklerden birini çalıştırıyorsanız,
accelerator.save('/opt/ml/model')satırını eklemeyi unutmayın.
accelerate launch ./examples/sagemaker_example.py
Çıktılar:
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.gzGelişmiş Özellikler
Dağıtık Eğitim: Veri Paralelliği
accelerate config komutunu çalıştırarak accelerate yapılandırmasını oluşturun ve SageMaker sorularını yanıtlayarak yapılandırın.
SageMaker DDP kullanmak için What is the distributed mode? ([0] No distributed training, [1] data parallelism): sorulduğunda bunu seçin.
Örnek yapılandırma aşağıdadır:
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: falseDağıtık Eğitim: Model Paralelliği
şu anda geliştirme aşamasında, yakında desteklenecek.
Python paketleri ve bağımlılıkları
Accelerate şu anda DLC'leri kullanır ve transformers, datasets ile tokenizers önceden yüklenmiştir. Farklı/diğer Python paketleri kullanmak istiyorsanız, bunları requirements.txt dosyasına ekleyerek yapabilirsiniz. Bu paketler, eğitim betiğiniz başlatılmadan önce yüklenecektir.
Yerel Eğitim: SageMaker Yerel modu
SageMaker SDK'daki yerel mod, eğitim betiğinizi HuggingFace DLC (Derin Öğrenme konteyneri) içinde yerel olarak çalıştırmanıza veya özel konteyner görüntünüzü kullanmanıza olanak tanır. Bu, eğitim betiğinizi nihai konteyner ortamında hata ayıklamak ve test etmek için kullanışlıdır. Yerel mod, Docker compose kullanır (Not: Docker Compose V2 henüz desteklenmiyor). SDK, DLC'yi yerel ortamınıza çekmek için ECR'ye karşı kimlik doğrulamasını yönetir. CPU (tekli ve çoklu örnek) ve GPU (tekli örnek) SageMaker eğitim işlerini taklit edebilirsiniz.
Yerel modu kullanmak için ec2_instance_type değerini local olarak ayarlamanız gerekir.
ec2_instance_type: localGelişmiş yapılandırma
Yapılandırma, Estimator parametrelerini geçersiz kılmanıza olanak tanır.
Bu ayarların yapılandırma dosyasında uygulanması gerekir ve accelerate config'in bir parçası değildir. Eğitim işinin birçok ek yönünü, örneğin Spot örneklerini kullanma, ağ yalıtımını etkinleştirme ve daha fazlasını kontrol edebilirsiniz.
additional_args:
# enable network isolation to restrict internet access for containers
enable_network_isolation: TrueTüm mevcut yapılandırmaları burada bulabilirsiniz.
Spot Örnekleri Kullanın
Spot Instances örneğin Gelişmiş yapılandırma kullanarak kullanılabilir:
additional_args:
use_spot_instances: True
max_wait: 86400Not: Spot Instances sonlandırılabilir ve eğitim bir kontrol noktasından devam ettirilebilir. Bu durum, Accelerate tarafından varsayılan olarak ele alınmaz. Bu özelliği istiyorsanız bizimle iletişime geçin.
Uzak betikler: Github üzerinde konumlandırılmış betikleri kullanın
Özellikliğin gerekli olup olmadığına henüz karar verilmedi. Bu özelliği istiyorsanız bizimle iletişime geçin.
Update on GitHub