قم بإنشاء وتشغيل تدفقات التعلم الآلي باستخدام المكونات مع CLI للتعلم الآلي من Azure

ينطبق على:ملحق CLI للتعلم الآلي من Microsoft Azure v2 (الحالي)

في هذه المقالة، ستتعلم كيفية إنشاء وتشغيل مسارات التعلم الآلي باستخدام Azure CLI والمكونات. يمكنك إنشاء تدفقات بدون استخدام المكونات، لكن المكونات توفر أكبر قدر من المرونة وإعادة الاستخدام. يمكن تعريف Azure التعلم الآلي Pipelines في YAML وتشغيلها من CLI، أو تأليفها في Python، أو تأليفها في Azure التعلم الآلي studio المصمم باستخدام واجهة مستخدم السحب والإفلات. تركز هذه الوثيقة على CLI.

المتطلبات الأساسية

القراءة المسبقة المقترحة

إنشاء تدفقك الأول مع المكون

دعونا ننشئ البنية الأساسية لبرنامج ربط العمليات التجارية الأولى مع المكونات باستخدام مثال. يهدف هذا القسم إلى منحك انطباعا أوليا عما يبدو عليه المسار والمكون في 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 لمشاهدة مرئيات الرسم البياني للبنية الأساسية لبرنامج ربط العمليات التجارية.

Screenshot of a graph visualization of the pipeline.

افهم تعريف التدفق 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 يعرف حسابا مختلفا لهذا المكون، فإن النظام يحترم الإعداد المحدد للمكون.

Screenshot of the pipeline with data example.

قراءة البيانات وكتابتها في التدفق

أحد السيناريوهات الشائعة هو قراءة البيانات وكتابتها في التدفق الخاص بك. في 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.

Screenshot of pipeline with data example showing componentA.

المدخلات والمخرجات

المدخلات والمخرجات تحدد واجهة المكون. يمكن أن يكون الإدخال والإخراج إما بقيمة حرفية (من النوع 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.

Screenshot of the input and output of the train linear regression model component.

إذا كنت تريد إضافة إدخال إلى مكون، فتذكر تحرير ثلاثة أماكن:

  • inputs الحقل في المكون YAML
  • command الحقل في المكون YAML.
  • التعليمات البرمجية لمصدر المكون لمعالجة إدخال سطر الأوامر. تم وضع علامة عليه باللون الأخضر في لقطة الشاشة السابقة.

لمعرفة المزيد حول المدخلات والمخرجات، راجع إدارة المدخلات والمخرجات للمكون والمسار.

البيئة

تتولى البيئة تحديد البيئة لتنفيذ المكون. قد تكون بيئة Azure التعلم الآلي (مسجلة أو مخصصة) أو صورة 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، ضمن الأصول - > المكونات:

Screenshot of Studio showing the components that were just registered.

حدد مكونًا. ترى معلومات مفصلة لكل إصدار من المكون.

ضمن علامة التبويب تفاصيل ، سترى المعلومات الأساسية للمكون مثل الاسم، الذي تم إنشاؤه بواسطة، الإصدار وما إلى ذلك. ترى حقولا قابلة للتحرير للعلامات والوصف. يمكن استخدام العلامات لإضافة كلمات رئيسية يتم البحث عنها بسرعة. يدعم حقل الوصف تنسيق 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 استعادة مكون مؤرشف

الخطوات التالية