قم بإنشاء وتشغيل تدفقات التعلم الآلي باستخدام المكونات مع CLI للتعلم الآلي من Azure
ينطبق على:ملحق CLI للتعلم الآلي من Microsoft Azure v2 (الحالي)
في هذه المقالة، ستتعلم كيفية إنشاء وتشغيل مسارات التعلم الآلي باستخدام Azure CLI والمكونات. يمكنك إنشاء تدفقات بدون استخدام المكونات، لكن المكونات توفر أكبر قدر من المرونة وإعادة الاستخدام. يمكن تعريف Azure التعلم الآلي Pipelines في YAML وتشغيلها من CLI، أو تأليفها في Python، أو تأليفها في Azure التعلم الآلي studio المصمم باستخدام واجهة مستخدم السحب والإفلات. تركز هذه الوثيقة على CLI.
المتطلبات الأساسية
في حال لم يكن لديك اشتراك Azure، فأنشئ حساباً مجانيّاً قبل البدء. جرّب الإصدار المجاني أو المدفوع من «التعلم الآلي» من Azure.
مساحة عمل للتعلم الآلي من Microsoft Azure. إنشاء موارد مساحة العمل.
استنساخ مستودع الأمثلة:
git clone https://github.com/Azure/azureml-examples --depth 1 cd azureml-examples/cli/jobs/pipelines-with-components/basics
القراءة المسبقة المقترحة
إنشاء تدفقك الأول مع المكون
دعونا ننشئ البنية الأساسية لبرنامج ربط العمليات التجارية الأولى مع المكونات باستخدام مثال. يهدف هذا القسم إلى منحك انطباعا أوليا عما يبدو عليه المسار والمكون في Azure التعلم الآلي مع مثال ملموس.
من cli/jobs/pipelines-with-components/basics
دليل المستودع azureml-examples
، انتقل إلى الدليل الفرعي 3b_pipeline_with_data
. هناك ثلاثة أنواع من الملفات في هذا الدليل. هذه هي الملفات التي تحتاج إلى إنشائها عند إنشاء البنية الأساسية لبرنامج ربط العمليات التجارية الخاصة بك.
pipeline.yml: يحدد ملف YAML هذا تدفق التعلم الآلي. يصف ملف YAML هذا كيفية تقسيم مهمة تعلم الآلة الكاملة إلى سير عمل متعدد الخطوات. على سبيل المثال، بالنظر إلى مهمة التعلم الآلي البسيطة لاستخدام البيانات التاريخية لتدريب نموذج تنبؤ المبيعات، قد تحتاج إلى إنشاء سير عمل تسلسلي باستخدام معالجة البيانات وتدريب النموذج وخطوات تقييم النموذج. كل خطوة عبارة عن مكون له واجهة محددة جيدًا ويمكن تطويره واختباره وتحسينه بشكل مستقل. يحدد مسار YAML أيضا كيفية اتصال الخطوات الفرعية بخطوات أخرى في المسار، على سبيل المثال، تنشئ خطوة تدريب النموذج ملف نموذج وسيمر ملف النموذج إلى خطوة تقييم النموذج.
component.yml: يحدد ملف YAML هذا المكون. يقوم بحزم المعلومات التالية:
- بيانات التعريف: الاسم، واسم العرض، والإصدار، والوصف، والنوع، إلخ. تساعد البيانات الوصفية في وصف المكون وإدارته.
- الواجهة: المدخلات والمخرجات. على سبيل المثال، يأخذ مكون تدريب النموذج بيانات التدريب وعدد العهود كمدخل، وينشئ ملف نموذج مدرب كإخراج. بمجرد تحديد الواجهة، يمكن للفرق المختلفة تطوير واختبار المكون بشكل مستقل.
- الأمر، التعليمات البرمجية والبيئة: الأمر، التعليمات البرمجية والبيئة لتشغيل المكون. الأمر هو أمر شل لتنفيذ المكون. يشير الرمز عادةً إلى دليل التعليمات البرمجية المصدر. يمكن أن تكون البيئة بيئة Azure التعلم الآلي (منظمة أو تم إنشاؤها بواسطة العميل) أو صورة docker أو بيئة conda.
component_src: هذا هو دليل التعليمات البرمجية المصدر لمكون معين. يحتوي على التعليمات البرمجية المصدر التي يتم تنفيذها في المكون. يمكنك استخدام لغتك المفضلة (Python، R...). يجب تنفيذ الكود باستخدام أمر shell. يمكن أن تأخذ التعليمات البرمجية المصدر بعض الإدخالات من سطر أوامر shell للتحكم في كيفية تنفيذ هذه الخطوة. على سبيل المثال، قد تأخذ خطوة التدريب بيانات التدريب، ومعدل التعلم، وعدد العهود للتحكم في عملية التدريب. يتم استخدام وسيطة أمر shell لتمرير المدخلات والمخرجات إلى التعليمات البرمجية.
لنقم الآن بإنشاء تدفق باستخدام مثال 3b_pipeline_with_data
. نشرح المعنى التفصيلي لكل ملف في الأقسام التالية.
قم أولاً بإدراج موارد الحوسبة المتاحة لديك باستخدام الأمر التالي:
az ml compute list
إذا لم يكن لديك، فأنشئ مجموعة تسمى cpu-cluster
عن طريق تشغيل:
إشعار
تخطي هذه الخطوة لاستخدام الحوسبة بلا خادم.
az ml compute create -n cpu-cluster --type amlcompute --min-instances 0 --max-instances 10
الآن، قم بإنشاء وظيفة تدفق محددة في ملف pipeline.yml باستخدام الأمر التالي. تتم الإشارة إلى هدف الحساب في ملف pipeline.yml ك azureml:cpu-cluster
. إذا كان هدف الحساب الخاص بك يستخدم اسمًا مختلفًا، فتذكر تحديثه في ملف pipeline.yml.
az ml job create --file pipeline.yml
يجب أن تتلقى قاموس JSON مع معلومات حول مهمة البنية الأساسية لبرنامج ربط العمليات التجارية بما في ذلك:
مفتاح | الوصف |
---|---|
name |
اسم الوظيفة المستند إلى GUID. |
experiment_name |
الاسم الذي سيتم تنظيم الوظائف تحته في الاستوديو. |
services.Studio.endpoint |
عنوان URL لمراقبة ومراجعة وظيفة التدفق. |
status |
حالة الوظيفة. سيكون هذا على الأرجح Preparing في هذه المرحلة. |
افتح services.Studio.endpoint
عنوان URL لمشاهدة مرئيات الرسم البياني للبنية الأساسية لبرنامج ربط العمليات التجارية.
افهم تعريف التدفق YAML
دعنا نلقي نظرة على تعريف التدفق في ملف 3b_pipeline_with_data/pipeline.yml.
إشعار
لاستخدام الحوسبة بلا خادم، استبدل default_compute: azureml:cpu-cluster
ب default_compute: azureml:serverless
في هذا الملف.
$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: 3b_pipeline_with_data
description: Pipeline with 3 component jobs with data dependencies
settings:
default_compute: azureml:cpu-cluster
outputs:
final_pipeline_output:
mode: rw_mount
jobs:
component_a:
type: command
component: ./componentA.yml
inputs:
component_a_input:
type: uri_folder
path: ./data
outputs:
component_a_output:
mode: rw_mount
component_b:
type: command
component: ./componentB.yml
inputs:
component_b_input: ${{parent.jobs.component_a.outputs.component_a_output}}
outputs:
component_b_output:
mode: rw_mount
component_c:
type: command
component: ./componentC.yml
inputs:
component_c_input: ${{parent.jobs.component_b.outputs.component_b_output}}
outputs:
component_c_output: ${{parent.outputs.final_pipeline_output}}
# mode: upload
يصف الجدول الحقول الأكثر استخداما لمخطط YAML للمسار. لمعرفة المزيد، راجع مخطط YAML للبنية الأساسية لبرنامج ربط العمليات التجارية الكاملة.
المفتاح | الوصف |
---|---|
النوع | مطلوب. يجب أن يكون pipeline نوع المهمة لوظائف البنية الأساسية لبرنامج ربط العمليات التجارية. |
display_name | عرض اسم مهمة البنية الأساسية لبرنامج ربط العمليات التجارية في واجهة مستخدم الاستوديو. قابل للتحرير في واجهة مستخدم الاستوديو. لا يجب أن يكون فريدًا في جميع الوظائف في مساحة العمل. |
الوظائف | مطلوب. قاموس لمجموعة الوظائف الفردية لتشغيلها كخطوات داخل خط البنية الأساسية لبرنامج ربط العمليات التجارية. تعتبر هذه الوظائف وظائف فرعية لوظيفة خط البنية الأساسية لبرنامج ربط العمليات التجارية الأم. في هذا الإصدار، أنواع الوظائف المدعومة قيد الإعداد هي command وsweep |
إدخال | قاموس المدخلات لوظيفة التدفق. المفتاح هو اسم للإدخال ضمن سياق الوظيفة والقيمة هي قيمة الإدخال. يمكن الرجوع إلى مدخلات التدفق هذه من خلال مدخلات وظيفة فردية في التدفق باستخدام تعبير ${{ parent.inputs.<input_name> }}. |
نتائج | قاموس تكوينات الإخراج لوظيفة التدفق. المفتاح هو اسم الإخراج ضمن سياق الوظيفة والقيمة هي تكوين الإخراج. يمكن الرجوع إلى مخرجات التدفق هذه من خلال مخرجات وظيفة فردية في التدفق باستخدام تعبير ${{ parents.outputs.<output_name> }}. |
في مثال 3b_pipeline_with_data، قمنا بإنشاء تدفق من ثلاث خطوات.
- يتم تحديد الخطوات الثلاث ضمن
jobs
. جميع أنواع الخطوات الثلاث هي مهمة القيادة. يوجد تعريف لكل خطوة في ملفcomponent.yml
المقابل. يمكنك مشاهدة ملفات YAML المكونة ضمن دليل 3b_pipeline_with_data. سنشرح المكون S.yaml في القسم التالي. - يحتوي التدفق هذا على تبعية للبيانات، وهو أمر شائع في معظم التدفقات في العالم الحقيقي. يأخذ Component_a إدخال البيانات من المجلد المحلي ضمن
./data
(السطر 17-20) ويمرر مخرجاته إلى componentB (السطر 29). يمكن الإشارة إلى إخراج Component_a كـ${{parent.jobs.component_a.outputs.component_a_output}}
. - يحدد
compute
الحساب الافتراضي لهذا التدفق. إذا كان أحد المكونات ضمنjobs
يعرف حسابا مختلفا لهذا المكون، فإن النظام يحترم الإعداد المحدد للمكون.
قراءة البيانات وكتابتها في التدفق
أحد السيناريوهات الشائعة هو قراءة البيانات وكتابتها في التدفق الخاص بك. في Azure التعلم الآلي، نستخدم نفس المخطط لقراءة البيانات وكتابتها لجميع أنواع المهام (مهمة البنية الأساسية لبرنامج ربط العمليات التجارية ووظيفة الأمر ووظيفة المسح). فيما يلي أمثلة على مهمة البنية الأساسية لبرنامج ربط العمليات التجارية لاستخدام البيانات للسيناريوهات الشائعة.
- البيانات المحلية
- ملف ويب بعنوان URL عام
- Azure التعلم الآلي مخزن البيانات والمسار
- أصل بيانات Azure التعلم الآلي
فهم تعريف المكون YAML
الآن لنلقِ نظرة على componentA.yml كمثال لفهم تعريف المكون YAML.
$schema: https://azuremlschemas.azureedge.net/latest/commandComponent.schema.json
type: command
name: component_a
display_name: componentA
version: 1
inputs:
component_a_input:
type: uri_folder
outputs:
component_a_output:
type: uri_folder
code: ./componentA_src
environment:
image: python
command: >-
python hello.py --componentA_input ${{inputs.component_a_input}} --componentA_output ${{outputs.component_a_output}}
يتم وصف المخطط الأكثر استخداما للمكون YAML في الجدول. لمعرفة المزيد، راجع مخطط YAML المكون الكامل.
المفتاح | الوصف |
---|---|
الاسم | مطلوب. اسم المكوّن. يجب أن يكون فريدا عبر مساحة عمل Azure التعلم الآلي. يجب أن يبدأ بحرف صغير. السماح بالأحرف الصغيرة والأرقام والشرطة السفلية (_). الحد الأقصى للطول هو 255 حرفًا. |
display_name | عرض اسم المكوّن في واجهة مستخدم الاستوديو. يمكن أن يكون غير أحادي داخل مساحة العمل. |
الأمر | مطلوب تنفيذ الأمر |
الكود | المسار المحلي لدليل الرموز المصدرية الذي سيتم تحميله واستخدامه للمكون. |
بيئة | مطلوب. البيئة المستخدمة لتنفيذ المكون. |
إدخال | قاموس مدخلات المكونات. المفتاح هو اسم المدخل في سياق المكون والقيمة هي تعريف المدخلات المكونة. يمكن الإشارة إلى المدخلات في الأمر باستخدام تعبير {{ inputs.<input_name> }}. |
نتائج | قاموس مدخلات المكونات. المفتاح هو اسم المدخل في سياق المكون والقيمة هي تعريف المدخلات المكونة. يمكن الإشارة إلى المخرجات في الأمر باستخدام تعبير ${{ outputs.<output_name> }}. |
is_deterministic | ما إذا كنت تريد إعادة استخدام نتيجة المهمة السابقة إذا لم تتغير إدخالات المكون. القيمة الافتراضية هي true ، والمعروفة أيضًا باسم إعادة استخدام بشكل افتراضي. السيناريو الشائع لتعيينه كـ false هو فرض إعادة تحميل البيانات من التخزين على السحابة أو عنوان URL. |
على سبيل المثال في 3b_pipeline_with_data/componentA.yml، يحتوي componentA على إدخال بيانات واحد ومخرج بيانات واحد، ويمكن توصيلهما بخطوات أخرى في التدفق الأصلي. سيتم تحميل جميع الملفات الموجودة ضمن code
القسم في المكون YAML إلى Azure التعلم الآلي عند إرسال مهمة البنية الأساسية لبرنامج ربط العمليات التجارية. في هذا المثال، سيتم تحميل الملفات ضمن ./componentA_src
(السطر 16 في componentA.yml). يمكنك مشاهدة التعليمات البرمجية المصدر التي تم تحميلها في واجهة مستخدم Studio: حدد خطوة ComponentA بشكل مزدوج وانتقل إلى علامة التبويب Snapshot، كما هو موضح في لقطة الشاشة التالية. يمكننا أن نرى أنه نص برمجي hello-world يقوم ببعض الطباعة البسيطة، ويكتب التاريخ والوقت الحالي إلى المسار componentA_output
. يأخذ المكون الإدخال والإخراج من خلال وسيطة سطر الأوامر، ويتم التعامل معه في hello.py باستخدام argparse
.
المدخلات والمخرجات
المدخلات والمخرجات تحدد واجهة المكون. يمكن أن يكون الإدخال والإخراج إما بقيمة حرفية (من النوع string
أو number
أو integer
أو boolean
) أو كائنًا يحتوي على مخطط إدخال.
إدخال الكائن (من النوع uri_file
وuri_folder
وmltable
وmlflow_model
وcustom_model
) يمكن أن يتصل بخطوات أخرى في وظيفة التدفق الأصلي، وبالتالي تمرير البيانات/النموذج إلى خطوات أخرى. في الرسم البياني للبنية الأساسية لبرنامج ربط العمليات التجارية، يتم عرض إدخال نوع الكائن كنقطة اتصال.
مدخلات القيمة الحرفية (string
وnumber
وinteger
وboolean
) هي المعلمات التي يمكنك تمريرها إلى المكون في وقت التشغيل. يمكنك إضافة القيمة الافتراضية للمدخلات الحرفية ضمن حقل default
. بالنسبة إلى النوع number
وinteger
، يمكنك أيضًا إضافة الحد الأدنى والحد الأقصى للقيمة المقبولة باستخدام الحقلين min
وmax
. إذا تجاوزت قيمة الإدخال الحد الأدنى والحد الأقصى، تفشل البنية الأساسية لبرنامج ربط العمليات التجارية عند التحقق من الصحة. يحدث التحقق من الصحة قبل إرسال وظيفة تدفق لتوفير وقتك. يعمل التحقق من الصحة مع CLI وPython SDK وواجهة مستخدم المصمم. تظهر لقطة الشاشة التالية مثالا للتحقق من الصحة في واجهة مستخدم المصمم. وبالمثل، يمكنك تحديد القيم المسموح بها في الحقل enum
.
إذا كنت تريد إضافة إدخال إلى مكون، فتذكر تحرير ثلاثة أماكن:
inputs
الحقل في المكون YAMLcommand
الحقل في المكون YAML.- التعليمات البرمجية لمصدر المكون لمعالجة إدخال سطر الأوامر. تم وضع علامة عليه باللون الأخضر في لقطة الشاشة السابقة.
لمعرفة المزيد حول المدخلات والمخرجات، راجع إدارة المدخلات والمخرجات للمكون والمسار.
البيئة
تتولى البيئة تحديد البيئة لتنفيذ المكون. قد تكون بيئة Azure التعلم الآلي (مسجلة أو مخصصة) أو صورة docker أو بيئة conda. راجع الأمثلة التالية:
- azure التعلم الآلي أصول البيئة المسجلة. تمت الإشارة إليه في المكون الذي يلي بناء الجملة
azureml:<environment-name>:<environment-version>
. - صورة Docker عام
- ملف كوندا يجب استخدام ملف Conda مع الصورة الأساسية.
تسجيل مكون لإعادة الاستخدام والمشاركة
في حين أن بعض المكونات خاصة بمسار معين، فإن الفائدة الحقيقية للمكونات تأتي من إعادة الاستخدام والمشاركة. قم بتسجيل أحد المكونات في مساحة عمل "التعلم الآلي" لديك لإتاحته لإعادة الاستخدام. تدعم المكونات المسجلة الإصدار التلقائي حتى تتمكن من تحديث المكون ولكن تأكد من أن التدفقات التي تتطلب إصدارًا أقدم ستستمر في العمل.
في مستودع أمثلة azureml، انتقل إلى الدليل cli/jobs/pipelines-with-components/basics/1b_e2e_registered_components
.
لتسجيل مكون، استخدم الأمر az ml component create
:
az ml component create --file train.yml
az ml component create --file score.yml
az ml component create --file eval.yml
بعد تشغيل هذه الأوامر حتى الاكتمال، يمكنك رؤية المكونات في Studio، ضمن الأصول - > المكونات:
حدد مكونًا. ترى معلومات مفصلة لكل إصدار من المكون.
ضمن علامة التبويب تفاصيل ، سترى المعلومات الأساسية للمكون مثل الاسم، الذي تم إنشاؤه بواسطة، الإصدار وما إلى ذلك. ترى حقولا قابلة للتحرير للعلامات والوصف. يمكن استخدام العلامات لإضافة كلمات رئيسية يتم البحث عنها بسرعة. يدعم حقل الوصف تنسيق Markdown ويجب استخدامه لوصف وظائف المكون والاستخدام الأساسي.
ضمن علامة التبويب الوظائف ، سترى محفوظات جميع المهام التي تستخدم هذا المكون.
استخدم المكونات المسجلة في ملف YAML لوظيفة التدفق
لنستخدم 1b_e2e_registered_components
لتوضيح كيفية استخدام المكون المسجل في التدفق YAML. انتقل إلى دليل 1b_e2e_registered_components
، وافتح ملف pipeline.yml
. تتشابه المفاتيح والقيم الموجودة في الحقلين inputs
وoutputs
مع تلك التي تمت مناقشتها بالفعل. الاختلاف الوحيد المهم هو قيمة الحقل component
في إدخالات jobs.<JOB_NAME>.component
. تكون قيمة component
بالشكل azureml:<COMPONENT_NAME>:<COMPONENT_VERSION>
. يحدد التعريف train-job
، على سبيل المثال، أحدث إصدار من المكون المسجل my_train
الذي يجب استخدامه:
type: command
component: azureml:my_train@latest
inputs:
training_data:
type: uri_folder
path: ./data
max_epocs: ${{parent.inputs.pipeline_job_training_max_epocs}}
learning_rate: ${{parent.inputs.pipeline_job_training_learning_rate}}
learning_rate_schedule: ${{parent.inputs.pipeline_job_learning_rate_schedule}}
outputs:
model_output: ${{parent.outputs.pipeline_job_trained_model}}
services:
my_vscode:
إدارة المكونات
يمكنك التحقق من تفاصيل المكون وإدارة المكون باستخدام CLI (v2). استخدم az ml component -h
للحصول على إرشادات مفصلة حول أمر المكون. يسرد الجدول التالي جميع الأوامر المتوفرة. راجع المزيد من الأمثلة في مرجع Azure CLI.
الأوامر | الوصف |
---|---|
az ml component create |
إنشاء مكون |
az ml component list |
قائمة المكونات في مساحة العمل |
az ml component show |
عرض تفاصيل المكون |
az ml component update |
تحديث مكون. فقط عدد قليل من الحقول (الوصف، اسم العرض) تدعم التحديث |
az ml component archive |
أرشفة حاوية مكون |
az ml component restore |
استعادة مكون مؤرشف |