CLI (v2) بناء جملة YAML الأساسية

APPLY TO: Azure CLI ml extension v1 v2 (معاينة)

يحتوي كل كيان من كيانات Azure التعلم الآلي على تمثيل YAML مخطط. يمكنك إنشاء كيان جديد من ملف تكوين YAML بامتداد .yml أو .yaml ملحق.

توفر هذه المقالة نظرة عامة على مفاهيم بناء الجملة الأساسية التي ستواجهها أثناء تكوين ملفات YAML هذه.

هام

تُعد هذه الميزة قيد المعاينة العامة في الوقت الحالي. يجري توفير إصدار المعاينة هذا من دون اتفاقية على مستوى الخدمة، ولا يوصى به لأحمال العمل الخاصة بالإنتاج. بعض الميزات ربما لا تكون مدعمة أو بها بعض القدرات المقيدة. لمزيد من المعلومات، راجع ⁧⁩شروط الاستخدام التكميلية لمعاينات Microsoft Azure⁧⁩.

الرجوع إلى كيان Azure ML

يوفر Azure ML بناء جملة مرجعي (يتكون من تنسيق مختصر وطويل) للرجوع إلى كيان Azure ML موجود عند تكوين ملف YAML. على سبيل المثال، يمكنك الرجوع إلى بيئة مسجلة موجودة في مساحة العمل الخاصة بك لاستخدامها كبيئة لوظيفة.

Referencing a Azure ML asset

هناك خياران للرجوع إلى أصل Azure ML (البيئات والنماذج والبيانات والمكونات):

  • الإشارة إلى إصدار صريح من مادة عرض:

    • بناء الجملة المختصرة: azureml:<asset_name>:<asset_version>
    • بناء جملة اليد الطويلة، والذي يتضمن معرف مورد Azure Resource Manager (ARM) للأصل:
    azureml:/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.MachineLearningServices/workspaces/<workspace-name>/environments/<environment-name>/versions/<environment-version>
    
  • الرجوع إلى أحدث إصدار من مادة عرض:

    في بعض وحدات السيناريو، قد ترغب في الرجوع إلى أحدث إصدار من مادة العرض دون الحاجة إلى البحث بشكل صريح عن سلسلة الإصدار الفعلية نفسها وتحديدها. يتم تعريف أحدث إصدار على أنه أحدث إصدار (يعرف أيضا باسم الأحدث) تم إنشاؤه من مادة عرض تحت اسم معين.

    يمكنك الرجوع إلى أحدث إصدار باستخدام بناء الجملة التالي: azureml:<asset_name>@latest. سيقوم Azure ML بحل الإشارة إلى إصدار أصل صريح في مساحة العمل.

Reference an Azure ML resource

للرجوع إلى مورد Azure ML (مثل الحوسبة)، يمكنك استخدام أي من بناء الجملة التالي:

  • بناء الجملة المختصرة: azureml:<resource_name>
  • بناء جملة اليد الطويلة، والذي يتضمن معرف مورد ARM للمورد:
azureml:/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.MachineLearningServices/workspaces/<workspace-name>/computes/<compute-name>

Azure ML data reference URI

يوفر Azure ML تنسيق URI مرجعي للبيانات الملائمة للإشارة إلى البيانات في خدمة تخزين Azure. يمكن استخدام هذا للسيناريوهات التي تحتاج فيها إلى تحديد موقع تخزين سحابي في ملف YAML الخاص بك، مثل إنشاء نموذج Azure ML من ملف (ملفات) في التخزين، أو الإشارة إلى البيانات لتمريرها كإدخال إلى وظيفة.

لاستخدام تنسيق URI للبيانات هذا، يجب أولا تسجيل خدمة التخزين التي تريد الرجوع إليها كمخزن بيانات في مساحة العمل الخاصة بك. سيتعامل Azure ML مع الوصول إلى البيانات باستخدام بيانات الاعتماد التي قدمتها أثناء إنشاء مخزن البيانات.

يتكون التنسيق من مخزن بيانات في مساحة العمل الحالية والمسار الموجود على مخزن البيانات إلى الملف أو المجلد الذي تريد الإشارة إليه:

azureml://datastores/<datastore-name>/paths/<path-on-datastore>/

على سبيل المثال:

  • azureml://datastores/workspaceblobstore/paths/example-data/
  • azureml://datastores/workspaceblobstore/paths/example-data/iris.csv

بالإضافة إلى مرجع بيانات Azure ML URI، يدعم Azure ML أيضا بروتوكولات URI للتخزين المباشر التالية: httpsو و ، abfssو ، بالإضافة إلى عناوين URI العامة http و wasbsadlhttps URI.

بناء جملة التعبير لتكوين مهام ومكونات Azure ML

تسمح ملفات YAML المهمة والمكونة ل v2 باستخدام التعبيرات للربط بالسياقات لسيناريوهات مختلفة. حالة الاستخدام الأساسية هي استخدام تعبير لقيمة قد لا تكون معروفة في وقت تأليف التكوين، ولكن يجب حلها في وقت التشغيل.

استخدم بناء الجملة التالي لإخبار Azure ML بتقييم تعبير بدلا من معاملته كسلسلة:

${{ <expression> }}

يتم تغطية السيناريوهات المدعومة أدناه.

وضع المعلمات command مع inputs وسياقات outputs الوظيفة

يمكنك تحديد القيم الحرفية ومسارات URI وأصول بيانات Azure ML المسجلة كمدخلات لمهمة. command يمكن بعد ذلك وضع معلمة مع مراجع لتلك المدخلات باستخدام بناء الجملة${{inputs.<input_name>}}. سيتم حل الإشارات إلى المدخلات الحرفية إلى القيمة الحرفية في وقت التشغيل ، بينما سيتم حل الإشارات إلى مدخلات البيانات إلى مسار التنزيل أو مسار التحميل mode (اعتمادا على المحدد).

وبالمثل ، يمكن أيضا الإشارة إلى مخرجات الوظيفة في command. لكل إخراج مسمى محدد في القاموس outputs ، سيقوم Azure ML بإنشاء موقع إخراج على مخزن البيانات الافتراضي حيث يمكنك كتابة الملفات إليه. يعتمد موقع الإخراج لكل إخراج مسمى على المسار المجرب التالي: <default-datastore>/azureml/<job-name>/<output_name>/. سيؤدي وضع معلمة command باستخدام ${{outputs.<output_name>}} بناء الجملة إلى حل هذا المرجع إلى المسار الذي تم إنشاؤه بواسطة النظام، بحيث يمكن للبرنامج النصي كتابة الملفات إلى هذا الموقع من المهمة.

في المثال أدناه لملف YAML لمهمة أمر ، يتم تحديد المعلمة command بمدخلين ، إدخال حرفي وإدخال بيانات ، وإخراج واحد. في وقت التشغيل، سيتم حل التعبير إلى ، ${{inputs.learning_rate}} وسيتم ${{inputs.iris}} حل التعبير إلى 0.01مسار iris.csv تنزيل الملف. ${{outputs.model_dir}} سيتم حلها إلى مسار التركيب لموقع الإخراج الذي تم إنشاؤه بواسطة النظام والمقابل للإخراج model_dir .

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
code: ./src
command: python train.py --lr ${{inputs.learning_rate}} --training-data ${{inputs.iris}} --model-dir ${{outputs.model_dir}}
environment: azureml:AzureML-Minimal@latest
compute: azureml:cpu-cluster
inputs:
  learning_rate: 0.01
  iris:
    type: uri_file
    path: https://azuremlexamples.blob.core.windows.net/datasets/iris.csv
    mode: download
outputs:
  model_dir:

وضع معلمة command مع search_space سياق مهمة الاجتياح

ستستخدم أيضا بناء جملة التعبير هذا عند إجراء ضبط المعلمات الفائقة عبر مهمة اكتساح، نظرا لأن القيم الفعلية للمعلمات التشعبية غير معروفة أثناء وقت تأليف المهمة. عند تشغيل مهمة كنس، سيقوم Azure ML بتحديد search_spaceقيم المعلمات التشعبية لكل إصدار تجريبي استنادا إلى ملف . للوصول إلى هذه القيم في البرنامج النصي للتدريب الخاص بك ، يجب عليك تمريرها عبر وسيطات سطر الأوامر الخاصة بالبرنامج النصي. للقيام بذلك، استخدم ${{search_space.<hyperparameter>}} بناء الجملة في trial.commandملف .

في المثال أدناه لملف YAML لمهمة كنس، ${{search_space.learning_rate}}${{search_space.boosting}} سيتم حل والمراجع الموجودة إلى trial.command قيم المعلمات التشعبية الفعلية المحددة لكل إصدار تجريبي عند إرسال المهمة التجريبية للتنفيذ.

$schema: https://azuremlschemas.azureedge.net/latest/sweepJob.schema.json
type: sweep
sampling_algorithm:
  type: random
search_space:
  learning_rate:
    type: uniform
    min_value: 0.01
    max_value: 0.9
  boosting:
    type: choice
    values: ["gbdt", "dart"]
objective:
  goal: minimize
  primary_metric: test-multi_logloss
trial:
  code: ./src
  command: >-
    python train.py 
    --training-data ${{inputs.iris}}
    --lr ${{search_space.learning_rate}}
    --boosting ${{search_space.boosting}}
  environment: azureml:AzureML-Minimal@latest
inputs:
  iris:
    type: uri_file
    path: https://azuremlexamples.blob.core.windows.net/datasets/iris.csv
    mode: download
compute: azureml:cpu-cluster

ربط المدخلات والمخرجات بين الخطوات في مهمة خط أنابيب

تستخدم التعبيرات أيضا لربط المدخلات والمخرجات بين الخطوات في مهمة خط الأنابيب. على سبيل المثال، يمكنك ربط إدخال مهمة واحدة (المهمة B) في خط أنابيب بمخرجات مهمة أخرى (المهمة A). سيشير هذا الاستخدام إلى Azure ML بتدفق تبعية الرسم البياني لخط الأنابيب، وسيتم تنفيذ المهمة B بعد المهمة A، نظرا لأن إخراج المهمة A مطلوب كمدخل للمهمة B.

بالنسبة لملف YAML لمهمة خط الأنابيب، inputs يتم تقييم أقسام كل outputs وظيفة فرعية ضمن السياق الأصلي (مهمة خط الأنابيب ذات المستوى الأعلى). من commandناحية أخرى ، سوف تحل في السياق الحالي (وظيفة الطفل).

هناك طريقتان لربط المدخلات والمخرجات في مهمة خط الأنابيب:

ربط المدخلات والمخرجات ذات المستوى الأعلى لمهمة خط الأنابيب

يمكنك ربط مدخلات أو مخرجات مهمة فرعية (خطوة خط أنابيب) بمدخلات/مخرجات مهمة خط الأنابيب الأصل ذات المستوى الأعلى باستخدام بناء الجملة التالي: ${{parent.inputs.<input_name>}} أو ${{parent.outputs.<output_name>}}. هذه الإشارة تحل إلى parent السياق ؛ وبالتالي المدخلات / المخرجات على المستوى الأعلى.

في المثال أدناه ، يرتبط الإدخال (raw_data) للخطوة الأولى prep بإدخال خط أنابيب المستوى الأعلى عبر ${{parent.inputs.input_data}}. يرتبط الناتج (model_dir) للخطوة النهائية train بإخراج مهمة خط الأنابيب من المستوى الأعلى عبر ${{parent.outputs.trained_model}}.

ربط مدخلات ومخرجات وظيفة طفل آخر (خطوة)

لربط مدخلات / مخرجات خطوة واحدة بمدخلات / مخرجات خطوة أخرى ، استخدم بناء الجملة التالي: ${{parent.jobs.<step_name>.inputs.<input_name>}} أو ${{parent.jobs.<step_name>.outputs.<outputs_name>}}. مرة أخرى ، يحل هذا المرجع إلى السياق الأصل ، لذلك يجب أن يبدأ التعبير ب parent.jobs.<step_name>.

في المثال أدناه ، يرتبط الإدخال () للخطوة train بإخراج (clean_datatraining_data) للخطوة prep عبر ${{parent.jobs.prep.outputs.clean_data}}. سيتم استخدام البيانات المعدة من prep الخطوة كبيانات تدريبية للخطوة train .

من ناحية أخرى ، فإن مراجع السياق داخل command الخصائص ستحل إلى السياق الحالي. على سبيل المثال ، سيتم حل المرجع في prep الخطوة command إلى مدخلات السياق الحالي ، ${{inputs.raw_data}} وهو prep وظيفة الطفل. سيتم إجراء البحث على prep.inputs، لذلك يجب تعريف إدخال مسمى raw_data هناك.

$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
inputs:
  input_data: 
    type: uri_folder
    path: https://azuremlexamples.blob.core.windows.net/datasets/cifar10/
outputs:
  trained_model:
jobs:
  prep:
    type: command
    inputs:
      raw_data: ${{parent.inputs.input_data}}
    outputs:
      clean_data:
    code: src/prep
    environment: azureml:AzureML-Minimal@latest
    command: >-
      python prep.py 
      --raw-data ${{inputs.raw_data}} 
      --prep-data ${{outputs.clean_data}}
    compute: azureml:cpu-cluster
  train:
    type: command
    inputs: 
      training_data: ${{parent.jobs.prep.outputs.clean_data}}
      num_epochs: 1000
    outputs:
      model_dir: ${{parent.outputs.trained_model}}
    code: src/train
    environment: azureml:AzureML-Minimal@latest
    command: >-
      python train.py 
      --epochs ${{inputs.num_epochs}}
      --training-data ${{inputs.training_data}} 
      --model-output ${{outputs.model_dir}}
    compute: azureml:gpu-cluster

وضع معلمات command مع inputs وسياقات outputs المكون

على command غرار الوظيفة ، command يمكن أيضا تحديد معلمة المكون مع الإشارة إلى inputs السياقات والسياقات outputs . في هذه الحالة ، تكون الإشارة إلى مدخلات ومخرجات المكون. عند تشغيل المكون في مهمة، سيقوم Azure ML بحل تلك الإشارات إلى قيم إدخال وإخراج وقت تشغيل المهمة المحددة لمدخلات ومخرجات المكون المعني. فيما يلي مثال على استخدام بناء جملة السياق لمواصفات YAML لمكون الأوامر.

$schema: https://azuremlschemas.azureedge.net/latest/commandComponent.schema.json
type: command
code: ./src
command: python train.py --lr ${{inputs.learning_rate}} --training-data ${{inputs.iris}} --model-dir ${{outputs.model_dir}}
environment: azureml:AzureML-Minimal@latest
inputs:
  learning_rate:
    type: number
    default: 0.01
  iris:
    type: uri_file
outputs:
  model_dir:
    type: uri_folder

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