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 حاويات تعلم عميق جديدة من Hugging Face (DLCs) لتسهيل تدريب نماذج Transformers الخاصة بـ Hugging Face على Amazon SageMaker أكثر من أي وقت مضى.

البدء

الإعداد والتثبيت

قبل أن تتمكن من تشغيل سكربتات Accelerate الخاصة بك على Amazon SageMaker، تحتاج إلى التسجيل في حساب AWS. إذا لم يكن لديك حساب AWS بعد، فتعرّف على المزيد هنا.

بعد الحصول على حساب AWS، تحتاج إلى تثبيت sagemaker sdk لـ Accelerate باستخدام:

pip install "accelerate[sagemaker]" --upgrade

يستخدم Accelerate حاليًا حزم DLC، مع تثبيت transformers وdatasets وtokenizers مسبقًا. لم يُضف Accelerate إلى حزمة DLC بعد (سيُضاف قريبًا!) لذا لاستخدامه داخل Amazon SageMaker، عليك إنشاء requirements.txt في نفس المجلد الذي يتواجد فيه سكربت التدريب الخاص بك وإضافته كاعتمادية:

accelerate

يجب عليك أيضًا إضافة أي تبعيات أخرى لديك إلى هذا requirements.txt.

تهيئة Accelerate

يمكنك تكوين إعدادات الإقلاع لـ Amazon SageMaker بنفس الطريقة التي تتعامل بها مع مهام التدريب غير المرتبطة بـ SageMaker باستخدام Accelerate CLI:

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 صريحة لهذا المعامل. [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 من خلال تشغيل accelerate config والإجابة على أسئلة 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 حاليًا وحدات DLC، مع تثبيت transformers وdatasets وtokenizers مسبقًا. إذا كنت ترغب في استخدام حزم Python مختلفة أو أخرى، يمكنك القيام بذلك بإضافتها إلى requirements.txt. سيتم تثبيت هذه الحزم قبل بدء تشغيل سكربت التدريب الخاص بك.

التدريب المحلي: وضع SageMaker المحلي

يتيح لك الوضع المحلي في حزمة SDK الخاصة بـ SageMaker تشغيل سكربت التدريب محليًا داخل حاوية HuggingFace DLC (حاوية التعلم العميق) أو باستخدام صورة الحاوية المخصصة لك. وهذا مفيد لتصحيح الأخطاء واختبار سكربت التدريب داخل بيئة الحاوية النهائية. يستخدم الوضع المحلي Docker compose (ملاحظة: لا يتم دعم Docker Compose V2 بعد). ستتولى الحزمة SDK معالجة المصادقة مع ECR لسحب DLC إلى بيئتك المحلية. يمكنك محاكاة مهام تدريب SageMaker المعتمدة على المعالج المركزي (CPU) (بمفردة أو متعددة الوحدات) ومهام التدريب المعتمدة على المعالج الرسومي (GPU) (بمفردة).

للاستخدام في الوضع المحلي، عليك ضبط ec2_instance_type على local.

ec2_instance_type: local

إعدادات متقدمة

تتيح لك الإعدادات تجاوز معاملات Estimator. يجب تطبيق هذه الإعدادات في ملف الإعدادات وهي ليست جزءًا من accelerate config. يمكنك التحكم في العديد من الجوانب الإضافية لعملية التدريب، مثل استخدام حالات Spot، وتمكين عزل الشبكة، والعديد من الأمور الأخرى.

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

يمكنك العثور على جميع التكوينات المتاحة هنا.

استخدام أمثلة Spot

يمكنك استخدام Spot Instances على سبيل المثال باستخدام (انظر إعدادات متقدمة):

additional_args:
  use_spot_instances: True
  max_wait: 86400

ملاحظة: تخضع أمثلة Spot إلى الإنهاء، ويُستأنف التدريب من نقطة تفتيش. لا يتعامل Accelerate مع هذا الأمر بشكل افتراضي. تواصل معنا إذا كنت ترغب في هذه الميزة.

Remote scripts: Use scripts located on Github

لم يُحسم بعد ما إذا كانت هذه الميزة مطلوبة. تواصل معنا إذا كنت ترغب في إضافة هذه الميزة.

Update on GitHub