تكوين عمليات التدريب وإرسالها
في هذه المقالة، ستتعرف على كيفية تكوين Azure التعلم الآلي تشغيله وإرساله لتدريب النماذج الخاصة بك. تشرح مقتطفات التعليمات البرمجية الأجزاء الرئيسية من تكوين البرنامج النصي للتدريب وإرساله. ثم استخدم أحد أمثلة دفاتر الملاحظات للعثور على أمثلة العمل الكاملة من طرف إلى طرف.
عند التدريب، من الشائع البدء على الكمبيوتر المحلي، ثم التوسع لاحقا إلى مجموعة مستندة إلى مجموعة النظراء. باستخدام Azure التعلم الآلي، يمكنك تشغيل البرنامج النصي الخاص بك على أهداف حوسبة مختلفة دون الحاجة إلى تغيير البرنامج النصي للتدريب.
كل ما عليك فعله هو تحديد البيئة لكل هدف حساب ضمن تكوين تشغيل البرنامج النصي. بعد ذلك، عندما تريد تشغيل تجربتك التدريبية على هدف حساب مختلف، حدد تكوين التشغيل لهذه الحوسبة.
المتطلبات الأساسية
- إذا لم يكن لديك اشتراك Azure، فأنشئ حساباً مجانياً قبل أن تبدأ. جرب الإصدار المجاني أو المدفوع من Azure التعلم الآلي اليوم
- Azure التعلم الآلي SDK ل Python (>= 1.13.0)
- A Azure التعلم الآلي workspace,
ws - هدف حسابي،
my_compute_target. إنشاء هدف حوسبة
ما المقصود بتكوين تشغيل البرنامج النصي؟
يتم استخدام ScriptRunConfig لتكوين المعلومات اللازمة لإرسال تشغيل تدريب كجزء من تجربة.
إرسال تجربة التدريب الخاصة بك مع كائن ScriptRunConfig. يتضمن هذا الكائن:
- source_directory: الدليل المصدر الذي يحتوي على البرنامج النصي للتدريب الخاص بك
- البرنامج النصي: البرنامج النصي للتدريب لتشغيل
- compute_target: هدف الحساب المراد تشغيله
- البيئة: البيئة المطلوب استخدامها عند تشغيل البرنامج النصي
- وبعض الخيارات الإضافية القابلة للتكوين (راجع الوثائق المرجعية لمزيد من المعلومات)
درّب نموذجك
نمط التعليمات البرمجية لإرسال تشغيل التدريب هو نفسه لجميع أنواع أهداف الحوسبة:
- إنشاء تجربة لتشغيلها
- إنشاء بيئة حيث سيتم تشغيل البرنامج النصي
- إنشاء ScriptRunConfig، الذي يحدد هدف الحوسبة والبيئة
- إرسال التشغيل
- انتظر حتى يكتمل الجري
أو يمكنك:
- إرسال تشغيل HyperDrive لضبط المعلمات التشعبية.
- أرسل تجربة عبر ملحق VS Code.
إنشاء تجربة
أنشئ تجربة في مساحة العمل. التجربة عبارة عن حاوية خفيفة الوزن تساعد على تنظيم عمليات إرسال التشغيل وتتبع التعليمات البرمجية.
from azureml.core import Experiment
experiment_name = 'my_experiment'
experiment = Experiment(workspace=ws, name=experiment_name)
تحديد هدف حساب
حدد هدف الحوسبة حيث سيتم تشغيل البرنامج النصي للتدريب الخاص بك. إذا لم يتم تحديد أي هدف حساب في ScriptRunConfig، أو إذا compute_target='local'، سيقوم Azure ML بتنفيذ البرنامج النصي محليا.
تفترض التعليمة البرمجية النموذجية في هذه المقالة أنك قمت بالفعل بإنشاء هدف my_compute_target حساب من قسم "المتطلبات الأساسية".
ملاحظة
لا يتم دعم Azure Databricks كهدف حساب للتدريب على النماذج. يمكنك استخدام Azure Databricks لمهام إعداد البيانات ونشرها.
ملاحظة
لإنشاء هدف حوسبة وإرفاقه للتدريب على مجموعة Kubernetes التي تدعم Azure Arc، راجع تكوين التعلم الآلي تمكين Azure Arc
إنشاء بيئة
تعد بيئات Azure التعلم الآلي بمثابة تغليف للبيئة التي يحدث فيها التدريب على التعلم الآلي. وهي تحدد حزم Python وصورة Docker ومتغيرات البيئة وإعدادات البرامج حول البرامج النصية للتدريب والتسجيل. كما أنها تحدد أوقات التشغيل (بايثون أو سبارك أو دوكر).
يمكنك إما تحديد بيئتك الخاصة، أو استخدام بيئة منسقة في Azure ML. البيئات المنسقة هي بيئات محددة مسبقا متوفرة في مساحة العمل الخاصة بك بشكل افتراضي. يتم دعم هذه البيئات بصور Docker المخزنة مؤقتا مما يقلل من تكلفة إعداد التشغيل. راجع Azure التعلم الآلي البيئات المنسقة للحصول على القائمة الكاملة للبيئات المنسقة المتوفرة.
بالنسبة لهدف الحوسبة عن بعد، يمكنك استخدام إحدى هذه البيئات المنسقة الشائعة للبدء بما يلي:
from azureml.core import Workspace, Environment
ws = Workspace.from_config()
myenv = Environment.get(workspace=ws, name="AzureML-Minimal")
لمزيد من المعلومات والتفاصيل حول البيئات، راجع إنشاء & بيئات برامج استخدام في Azure التعلم الآلي.
هدف الحوسبة المحلية
إذا كان هدف الحوسبة الخاص بك هو جهازك المحلي ، فأنت مسؤول عن ضمان توفر جميع الحزم الضرورية في بيئة Python حيث يتم تشغيل البرنامج النصي. استخدمه python.user_managed_dependencies لاستخدام بيئة Python الحالية (أو Python على المسار الذي تحدده).
from azureml.core import Environment
myenv = Environment("user-managed-env")
myenv.python.user_managed_dependencies = True
# You can choose a specific Python environment by pointing to a Python path
# myenv.python.interpreter_path = '/home/johndoe/miniconda3/envs/myenv/bin/python'
إنشاء تكوين تشغيل البرنامج النصي
الآن بعد أن أصبح لديك هدف حساب (، راجع المتطلبات الأساسية والبيئة (، راجع إنشاء بيئة)، قم بإنشاء تكوين تشغيل برنامج نصي يقوم بتشغيل البرنامج النصي للتدريب (train.pymy_compute_targetmyenv) الموجود في project_folder الدليل:
from azureml.core import ScriptRunConfig
src = ScriptRunConfig(source_directory=project_folder,
script='train.py',
compute_target=my_compute_target,
environment=myenv)
# Set compute target
# Skip this if you are running on your local computer
script_run_config.run_config.target = my_compute_target
إذا لم تحدد بيئة، إنشاء بيئة افتراضية لك.
إذا كان لديك وسيطات سطر الأوامر التي تريد تمريرها إلى البرنامج النصي للتدريب الخاص بك ، فيمكنك تحديدها عبر arguments معلمة منشئ ScriptRunConfig ، على سبيل المثال arguments=['--arg1', arg1_val, '--arg2', arg2_val].
إذا كنت ترغب في تجاوز الحد الأقصى الافتراضي للوقت المسموح به للتشغيل ، فيمكنك القيام بذلك عبر المعلمة max_run_duration_seconds . سيحاول النظام إلغاء التشغيل تلقائيا إذا استغرق وقتا أطول من هذه القيمة.
تحديد تكوين مهمة موزعة
إذا كنت ترغب في تشغيل مهمة تدريب موزعة ، فقم بتوفير التكوين الموزع الخاص بالوظيفة إلى المعلمة distributed_job_config . تتضمن أنواع التهيئة المدعومة MpiConfiguration و TensorflowConfiguration و PyTorchConfiguration.
لمزيد من المعلومات والأمثلة حول تشغيل وظائف Horovod و TensorFlow و PyTorch الموزعة ، راجع:
إرسال التجربة
run = experiment.submit(config=src)
run.wait_for_completion(show_output=True)
هام
عند إرسال تشغيل التدريب، يتم إنشاء لقطة من الدليل الذي يحتوي على البرامج النصية للتدريب وإرسالها إلى هدف الحساب. يتم تخزينه أيضا كجزء من التجربة في مساحة العمل الخاصة بك. إذا قمت بتغيير الملفات وإرسال التشغيل مرة أخرى، تحميل الملفات التي تم تغييرها فقط.
لمنع تضمين الملفات غير الضرورية في اللقطة، قم بإنشاء ملف تجاهل (.gitignore أو .amlignore) في الدليل. أضف الملفات والدلائل المراد استبعادها إلى هذا الملف. لمزيد من المعلومات حول بناء الجملة المطلوب استخدامه داخل هذا الملف، راجع بناء الجملة والأنماط الخاصة ب .gitignore. .amlignore يستخدم الملف نفس بناء الجملة. في .amlignore حالة وجود كلا الملفين، يتم استخدام الملف والملف .gitignore غير مستخدم.
لمزيد من المعلومات حول اللقطات، راجع اللقطات.
هام
المجلدات الخاصة يتلقى مجلدان، المخرجاتوالسجلات، معاملة خاصة من Azure التعلم الآلي. أثناء التدريب، عند كتابة الملفات إلى مجلدات تسمى المخرجاتوالسجلات المتعلقة بالدليل الجذر (و./logs،./outputs على التوالي)، سيتم تحميل الملفات تلقائيا إلى محفوظات التشغيل بحيث يكون لديك حق الوصول إليها بمجرد الانتهاء من التشغيل.
لإنشاء قطع أثرية أثناء التدريب (مثل ملفات النماذج أو نقاط التفتيش أو ملفات البيانات أو الصور المرسومة) ، اكتبها في المجلد ./outputs .
وبالمثل ، يمكنك كتابة أي سجلات من تشغيل التدريب الخاص بك إلى المجلد ./logs . للاستفادة من تكامل TensorBoard في Azure التعلم الآلي، تأكد من كتابة سجلات TensorBoard إلى هذا المجلد. أثناء الجري قيد التقدم ، ستتمكن من تشغيل TensorBoard وبث هذه السجلات. في وقت لاحق ، ستتمكن أيضا من استعادة السجلات من أي من عمليات التشغيل السابقة.
على سبيل المثال، لتنزيل ملف مكتوب إلى مجلد المخرجات إلى جهازك المحلي بعد تشغيل التدريب عن بعد: run.download_file(name='outputs/my_output_file', output_file_path='my_destination_path')
تتبع Git والتكامل
عند بدء تشغيل تدريب حيث يكون الدليل المصدر مستودعا Git محليا، يتم تخزين معلومات حول المستودع في محفوظات التشغيل. لمزيد من المعلومات، راجع تكامل Git ل Azure التعلم الآلي.
أمثلة على دفاتر الملاحظات
راجع دفاتر الملاحظات هذه للحصول على أمثلة حول تكوين عمليات التشغيل لسيناريوهات التدريب المختلفة:
- التدريب على مختلف أهداف الحوسبة
- التدريب باستخدام أطر التعلم الآلي
- الدروس / IMG-تصنيف-part1-training.ipynb
تعرف على كيفية تشغيل دفاتر الملاحظات باتباع المقالة استخدام دفاتر ملاحظات Jupyter لاستكشاف هذه الخدمة.
استكشاف الأخطاء وإصلاحها
AttributeError: كائن 'RoundTripLoader' ليس له سمة 'comment_handling': يأتي هذا الخطأ من الإصدار الجديد (v0.17.5) من
ruamel-yaml، تبعيةazureml-core، التي تقدم تغييرا فاصلا إلىazureml-core. لإصلاح هذا الخطأ ، يرجى إلغاء التثبيتruamel-yamlعن طريق تشغيلpip uninstall ruamel-yamlوتثبيت إصدار مختلف منruamel-yaml؛ الإصدارات المدعومة هي v0.15.35 إلى v0.17.4 (شاملة). يمكنك القيام بذلك عن طريق تشغيلpip install "ruamel-yaml>=0.15.35,<0.17.5".فشل التشغيل مع
jwt.exceptions.DecodeError: رسالة الخطأ الدقيق:jwt.exceptions.DecodeError: It is required that you pass in a value for the "algorithms" argument when calling decode().ضع في اعتبارك الترقية إلى أحدث إصدار من azureml-core:
pip install -U azureml-core.إذا كنت تواجه هذه المشكلة لعمليات التشغيل المحلية، فتحقق من إصدار PyJWT المثبت في بيئتك حيث تبدأ عمليات التشغيل. الإصدارات المدعومة من PyJWT هي < 2.0.0. قم بإلغاء تثبيت PyJWT من البيئة إذا كان الإصدار >= 2.0.0. يمكنك التحقق من إصدار PyJWT ، وإلغاء تثبيت الإصدار الصحيح وتثبيته على النحو التالي:
- بدء تشغيل shell الأوامر، تنشيط بيئة conda حيث يتم تثبيت azureml-core.
- أدخل
pip freezeوابحث عنPyJWT، إذا وجد ، يجب أن يكون < الإصدار المدرج 2.0.0 - إذا لم يكن الإصدار المدرج إصدارا مدعوما ،
pip uninstall PyJWTففي غلاف الأمر وأدخل y للتأكيد. - تثبيت باستخدام
pip install 'PyJWT<2.0.0'
إذا كنت تقوم بإرسال بيئة أنشأها المستخدم مع تشغيلك، ففكر في استخدام أحدث إصدار من azureml-core في تلك البيئة. الإصدارات >= 1.18.0 من azureml-core بالفعل تثبيت PyJWT < 2.0.0. إذا كنت بحاجة إلى استخدام إصدار من azureml-core < 1.18.0 في البيئة التي ترسلها، فتأكد من تحديد PyJWT < 2.0.0 في تبعيات النقطة.
ModuleErrors (لا توجد وحدة نمطية مسماة): إذا كنت تواجه ModuleErrors أثناء إرسال التجارب في Azure ML، فإن البرنامج النصي للتدريب يتوقع تثبيت حزمة ولكن لا تتم إضافتها. بمجرد توفير اسم الحزمة، يقوم Azure ML بتثبيت الحزمة في البيئة المستخدمة لتشغيل التدريب.
إذا كنت تستخدم المقدرين لإرسال التجارب، فيمكنك تحديد اسم حزمة عبر
pip_packagesالمقدر أوconda_packagesمعلمة فيه استنادا إلى المصدر الذي تريد تثبيت الحزمة منه. يمكنك أيضا تحديد ملف yml مع جميع التبعيات الخاصة بك باستخدام أو سرد جميع متطلبات النقطة الخاصة بك في ملف txt باستخدامconda_dependencies_filepip_requirements_fileالمعلمة. إذا كان لديك كائن بيئة Azure ML الخاص بك الذي تريد تجاوز الصورة الافتراضية المستخدمة من قبل المقدر، فيمكنك تحديد تلك البيئة عبرenvironmentمعلمة منشئ المقدر.يمكن رؤية صور رصيف الميناء التي يحتفظ بها Azure ML ومحتوياتها في حاويات AzureML. وترد التبعيات الخاصة بإطار العمل في الوثائق الإطارية ذات الصلة:
ملاحظة
إذا كنت تعتقد أن حزمة معينة شائعة بما يكفي لإضافتها في الصور والبيئات التي يحتفظ بها Azure ML، فيرجى إثارة مشكلة GitHub في حاويات AzureML.
NameError (الاسم غير محدد)، AttributeError (الكائن ليس له سمة): يجب أن يأتي هذا الاستثناء من البرامج النصية للتدريب. يمكنك الاطلاع على ملفات السجل من مدخل Azure للحصول على مزيد من المعلومات حول الاسم المحدد الذي لم يتم تعريفه أو خطأ السمة. من SDK، يمكنك استخدامها
run.get_details()للاطلاع على رسالة الخطأ. سيؤدي ذلك أيضا إلى سرد جميع ملفات السجل التي تم إنشاؤها للتشغيل. يرجى التأكد من إلقاء نظرة على البرنامج النصي للتدريب الخاص بك وإصلاح الخطأ قبل إعادة إرسال الجري.تشغيل التجربة أو حذفها: يمكن أرشفة التجارب باستخدام طريقة Experiment.archive، أو من طريقة عرض علامة التبويب التجربة في Azure التعلم الآلي عميل الاستوديو عبر الزر "أرشفة التجربة". يخفي هذا الإجراء التجربة من استعلامات القوائم وطرق العرض، ولكنه لا يحذفها.
الحذف الدائم للتجارب الفردية أو عمليات التشغيل غير مدعوم حاليا. لمزيد من المعلومات حول حذف أصول مساحة العمل، راجع تصدير بيانات مساحة عمل خدمة التعلم الآلي أو حذفها.
المستند المتري كبير جدا: يحتوي Azure التعلم الآلي على قيود داخلية على حجم الكائنات المترية التي يمكن تسجيلها مرة واحدة من عملية تدريب. إذا واجهت خطأ "المستند المتري كبير جدا" عند تسجيل مقياس ذي قيمة قائمة، فحاول تقسيم القائمة إلى أجزاء أصغر، على سبيل المثال:
run.log_list("my metric name", my_metric[:N]) run.log_list("my metric name", my_metric[N:])داخليا، يقوم Azure ML بتسلسل الكتل التي تحمل نفس اسم المقياس في قائمة متجاورة.
يستغرق هدف الحوسبة وقتا طويلا للبدء: يتم تحميل صور Docker لأهداف الحوسبة من سجل حاوية Azure (ACR). بشكل افتراضي، يقوم Azure التعلم الآلي بإنشاء ACR يستخدم طبقة الخدمة الأساسية. قد يؤدي تغيير ACR لمساحة العمل الخاصة بك إلى المستوى القياسي أو المتميز إلى تقليل الوقت المستغرق لإنشاء الصور وتحميلها. لمزيد من المعلومات، راجع طبقات خدمة تسجيل حاوية Azure.
الخطوات التالية
- البرنامج التعليمي: تدريب نموذج ونشره يستخدم هدف حساب مدار لتدريب نموذج.
- تعرف على كيفية تدريب النماذج باستخدام أطر عمل ML محددة ، مثل Scikit-Learn و TensorFlow و PyTorch.
- تعرف على كيفية ضبط المعلمات التشعبية بكفاءة لإنشاء نماذج أفضل.
- بمجرد أن يكون لديك نموذج مدرب، تعرف على كيفية ومكان نشر النماذج.
- عرض مرجع SDK فئة ScriptRunConfig .
- استخدام Azure التعلم الآلي مع شبكات Azure الظاهرية