Accelerate documentation
Amazon SageMaker
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