CLI (الإصدار 2) مخطط YAML لوظيفة الأمر

ينطبق على:ملحق Azure CLI ml الإصدار 2 (الحالي)

يمكن إيجاد مخطط المصدر JSON في https://azuremlschemas.azureedge.net/latest/commandJob.schema.json.

ملاحظة

يعتمد بناء YAML المفصل في هذا المستند على مخطط JSON لأحدث إصدار من ملحق الإصدار الثاني من واجهة مستوى الاستدعاء للتعليم الآلي. إن هذا البناء مضمون للعمل فقط مع أحدث إصدار من ملحق الإصدار الثاني من واجهة مستوى الاستدعاء للتعليم الآلي. بإمكانك العثور على مخططات إصدارات الملحق الأقدم في https://azuremlschemasprod.azureedge.net/.

بناء YAML

المفتاح النوع الوصف القيم المسموح بها القيمة الافتراضية
$schema سلسلة مخطط YAML. إذا كنت تستخدم ملحق التعلم الآلي من Microsoft Azure VS Code لتأليف ملف YAML، بما في ذلك $schema في الجزء العلوي من ملفك، يمكنك من استدعاء المخطط وإكمال الموارد.
type const نوع الوظيفة. command command
name سلسلة اسم الوظيفة. يجب أن يكون فريداً في جميع الوظائف في مساحة العمل. إذا تم حذفه، سيقوم التعلم الآلي من Microsoft Azure بإنشاء GUID تلقائيا للاسم.
display_name سلسلة عرض اسم الوظيفة في أستوديو "واجهة المستخدم" UI. يمكن أن يكون غير فريد داخل مساحة العمل. إذا تم حذفه، سيقوم التعلم الآلي من Microsoft Azure بإنشاء معرف صفة-اسم قابل للقراءة من قبل الإنسان تلقائيا لاسم العرض.
experiment_name سلسلة اسم التجربة لتنظيم الوظيفة تحته. سيتم تنظيم سجل تشغيل كل وظيفة ضمن التجربة المقابلة في علامة تبويب "التجارب" الخاصة بالاستوديو. إذا تم حذفه، فسيعمل التعلم الآلي من Microsoft Azure على تعيينه افتراضيا إلى اسم دليل العمل حيث تم إنشاء المهمة.
description سلسلة وصف الوظيفة.
tags كائن قاموس العلامات للوظيفة.
command سلسلة مطلوب (في حالة عدم استخدام الحقل component). الأمر المراد تنفيذه.
code سلسلة المسار المحلي إلى دليل التعليمة البرمجية المصدر ليتم تحميله واستخدامه للوظيفة.
environment سلسلة أو عنصر مطلوب (في حالة عدم استخدام الحقل component). البيئة المراد استخدامها لهذا المنصب. يمكن أن يكون هذا مرجعاً لبيئة إصدار موجودة في مساحة العمل أو مواصفات بيئة مضمنة.

للإشارة إلى بيئة موجودة، استخدم azureml:<environment_name>:<environment_version> البنية أو azureml:<environment_name>@latest (للإشارة إلى أحدث إصدار من البيئة).

لتعريف بيئة مضمنة، يرجى اتباع مخطط البيئة. استبعد الخصائص name وversion لأنها غير مدعومة للبيئات المضمنة.
environment_variables كائن قاموس متغير البيئة وأزواج القيمة الرئيسية للمجموعة على العملية حيث يتم تنفيذ الأمر.
distribution كائن تشكيل توزيع سيناريوهات التدريب الموزعة. أحد MpiConfiguration أو PyTorchConfiguration أو TensorFlowConfiguration.
compute سلسلة اسم هدف الحساب المراد تنفيذ المهمة عليه. يمكن أن يكون هذا مرجعاً إلى حساب موجود في مساحة العمل (باستخدام بناء الجملة azureml:<compute_name>) أو local لتعيين التنفيذ المحلي. ملاحظة: الوظائف في البنية الأساسية لبرنامج ربط العمليات التجارية لا تدعم local ك compute local
resources.instance_count عدد صحيح عدد العقد المطلوب استخدامها للوظيفة. 1
resources.instance_type سلسلة نوع المثيل المراد استخدامه للوظيفة. قابل للتطبيق على المهام التي يتم تشغيلها على حساب Kubernetes الذي يدعم Azure Arc (حيث يكون هدف الحساب المحدد في الحقل compute هو type: kubernentes). إذا تم حذفه، فسيتم تعيينه افتراضياً على نوع المثيل الافتراضي لنظام مجموعة Kubernetes. لمزيد من المعلومات، راجع إنشاء وتحديد أنواع مثيلات Kubernetes.
resources.shm_size سلسلة حجم كتلة الذاكرة المشتركة لحاوية docker. يجب أن يكون هذا بتنسيق <number><unit> حيث يجب أن يكون الرقم أكبر من 0 ويمكن أن تكون الوحدة واحدة من b (بايت) k أو (كيلوبايت) m أو (ميغابايت) أو g (غيغابايت). 2g
limits.timeout عدد صحيح الحد الأقصى للوقت بالثواني المسموح بتشغيل المهمة. بمجرد الوصول إلى هذا الحد، سيقوم النظام بإلغاء المهمة.
inputs كائن قاموس مدخلات الوظيفة. المفتاح هو اسم للإدخال ضمن سياق الوظيفة والقيمة هي قيمة الإدخال.

يمكن الإشارة إلى المدخلات في command باستخدام التعبير ${{ inputs.<input_name> }}.
inputs.<input_name> رقم أو عدد صحيح أو منطقي أو سلسلة أو عنصر قيمة حرفية (من نوع رقم، أو عدد صحيح، أو منطقي، أو سلسلة) أو عنصر يحتوي على مواصفات بيانات إدخال المهمة.
outputs كائن قاموس تكوينات إخراج الوظيفة. المفتاح هو اسم الإخراج ضمن سياق الوظيفة والقيمة هي تكوين الإخراج.

يمكن الإشارة إلى المخرجات في command باستخدام التعبير ${{ outputs.<output_name> }}.
outputs.<output_name> كائن يمكنك ترك الكائن فارغا، وفي هذه الحالة بشكل افتراضي سيكون الإخراج من النوع uri_folder وسيقوم التعلم الآلي من Microsoft Azure بإنشاء موقع إخراج للإخراج. ستتم كتابة الملف (الملفات) إلى دليل الإخراج عبر تثبيت إدخال القراءة والكتابة. إذا كنت تريد تحديد وضع مختلف للمخرجات، فقدم عنصراً يحتوي على مواصفات مخرجات الوظيفة.
identity كائن يتم استخدام الهوية للوصول إلى البيانات. يمكن أن يكون UserIdentityConfiguration أو ManagedIdentityConfiguration أو None. إذا كان UserIdentityConfiguration، فسيتم استخدام هوية مقدم الوظيفة للوصول إلى بيانات الإدخال وكتابة النتيجة إلى مجلد الإخراج، وإلا، فسيتم استخدام الهوية المدارة لهدف الحساب.

تكوينات التوزيع

تكوين MpiConfiguration

المفتاح النوع الوصف القيم المسموح بها
type const مطلوب نوع النشر. mpi
process_count_per_instance عدد صحيح مطلوب عدد العمليات لكل عقدة لإطلاقها للوظيفة.

تكوين PyTorchConfiguration

المفتاح النوع الوصف القيم المسموح بها القيمة الافتراضية
type const مطلوب نوع النشر. pytorch
process_count_per_instance عدد صحيح عدد العمليات لكل عقدة لإطلاقها للوظيفة. 1

تكوين TensorFlowConfiguration

المفتاح النوع الوصف القيم المسموح بها القيمة الافتراضية
type const مطلوب نوع النشر. tensorflow
worker_count عدد صحيح عدد العمال الذين سيتم إطلاقهم للوظيفة. الإعدادات الافتراضية لـ resources.instance_count.
parameter_server_count عدد صحيح عدد خوادم المعلمات التي سيتم تشغيلها للمهمة. 0

مدخلات الوظيفة

المفتاح النوع الوصف القيم المسموح بها القيمة الافتراضية
type سلسلة نوع إدخال الوظيفة. حدد uri_file لبيانات الإدخال التي تشير إلى مصدر البيانات بملف واحد، أو uri_folder لبيانات الإدخال التي تشير إلى مصدر المجلد. uri_file, uri_folder, mlflow_model, custom_model uri_folder
path سلسلة المسار إلى البيانات المراد استخدامها كمدخلات. يمكن تحديد ذلك بعدة طرق:

- مسار محلي لملف أو مجلد مصدر البيانات، على سبيل المثالpath: ./iris.csv. سيتم تحميل البيانات أثناء تقديم الوظيفة.

- معرّف URI لمسار السحابة إلى الملف أو المجلد لاستخدامه كمدخل. أنواع URI المتوافقة هي azureml، https، wasbs، abfss، adl. راجع بنية yaml الأساسية لمزيد من المعلومات حول كيفية استخدام تنسيق URIazureml://.

- أصل بيانات Azure Machine Learning مسجل موجود لاستخدامه كمدخل. للإشارة إلى أصل بيانات مسجل، استخدم azureml:<data_name>:<data_version> البنية أو azureml:<data_name>@latest (للإشارة إلى أحدث إصدار من أصل البيانات)، على سبيل المثال path: azureml:cifar10-data:1 أو path: azureml:cifar10-data@latest.
mode سلسلة طريقة كيفية تسليم البيانات إلى هدف الحساب.

بالنسبة للقراءة فقط (ro_mount)، سيتم استهلاك البيانات كمسار تحميل. سيتم تحميل المجلد كمجلد وسيتم تحميل الملف كملف. سيقوم التعلم الآلي من Microsoft Azure بحل الإدخال إلى مسار التحميل.

بالنسبة للوضع download، سيتم تنزيل البيانات إلى هدف الحساب. سيقوم التعلم الآلي من Microsoft Azure بحل الإدخال إلى المسار الذي تم تنزيله.

إذا كنت تريد فقط عنوان URL الخاص بموقع تخزين عنصر (عناصر) البيانات بدلاً من تحميل البيانات نفسها أو تنزيلها، يمكنك استخدام الوضعdirect. سيؤدي هذا إلى تمرير عنوان URL الخاص بموقع التخزين باعتباره مدخل الوظيفة. لاحظ أنه في هذه الحالة، أنت مسؤول مسؤولية كاملة عن التعامل مع بيانات الاعتماد للوصول إلى التخزين.

eval_mount الأوضاع و eval_download فريدة من نوعها ل MLTable، وإما تحميل البيانات كمسار أو تنزيل البيانات إلى هدف الحساب.

لمزيد من المعلومات حول الأوضاع، راجع الوصول إلى البيانات في وظيفة
ro_mount, download, direct, eval_download, eval_mount ro_mount

مخرجات المهمة

المفتاح النوع الوصف القيم المسموح بها القيمة الافتراضية
type سلسلة نوع مخرجات الوظيفة. بالنسبة للنوع الافتراضيuri_folder، سيتوافق الإخراج مع مجلد. uri_folder , mlflow_model, custom_model uri_folder
mode سلسلة وضع كيفية تسليم ملف (ملفات) الإخراج إلى وحدة التخزين الوجهة. بالنسبة لوضع تحميل القراءة والكتابة (rw_mount)، سيكون دليل الإخراج دليلاً مُثبتاً. بالنسبة لوضع التحميل، سيتم تحميل الملف (الملفات) المكتوبة في نهاية المهمة. rw_mount, upload rw_mount

تكوينات الهوية

تكوين معرف المستخدم

المفتاح النوع الوصف القيم المسموح بها
type const مطلوب نوع الهوية. user_identity

تكوين ManagedIdentity

المفتاح النوع الوصف القيم المسموح بها
type const مطلوب نوع الهوية. managed أو managed_identity

الملاحظات

يمكن استخدام الأمر az ml job لإدارة وظائف التعلم الآلي من Microsoft Azure.

أمثلة

الأمثلة متوفرة في مستودع أمثلة GitHub. يتم عرض العديد أدناه.

YAML: أهلاً بالعالم

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo "hello world"
environment:
  image: library/python:latest

YAML: الاسم المعروض، واسم التجربة، والوصف، والعلامات

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo "hello world"
environment:
  image: library/python:latest
tags:
  hello: world
display_name: hello-world-example
experiment_name: hello-world-example
description: |
  # Azure Machine Learning "hello world" job

  This is a "hello world" job running in the cloud via Azure Machine Learning!

  ## Description

  Markdown is supported in the studio for job descriptions! You can edit the description there or via CLI.

YAML: متغيرات البيئة

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo $hello_env_var
environment:
  image: library/python:latest
environment_variables:
  hello_env_var: "hello world"

YAML: التعليمة البرمجية المصدر

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: ls
code: src
environment:
  image: library/python:latest

YAML: المدخلات الحرفية

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: |
  echo ${{inputs.hello_string}}
  echo ${{inputs.hello_number}}
environment:
  image: library/python:latest
inputs:
  hello_string: "hello world"
  hello_number: 42

YAML: الكتابة إلى النواتج الافتراضية

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo "hello world" > ./outputs/helloworld.txt
environment:
  image: library/python:latest

YAML: الكتابة إلى إخراج البيانات المسماة

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo "hello world" > ${{outputs.hello_output}}/helloworld.txt
outputs:
  hello_output:
environment:
  image: python

YAML: إدخال ملف URI لمخزن البيانات

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: |
  echo "--iris-csv: ${{inputs.iris_csv}}"
  python hello-iris.py --iris-csv ${{inputs.iris_csv}}
code: src
inputs:
  iris_csv:
    type: uri_file 
    path: azureml://datastores/workspaceblobstore/paths/example-data/iris.csv
environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest

YAML: إدخال مجلد URI لمخزن البيانات

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: |
  ls ${{inputs.data_dir}}
  echo "--iris-csv: ${{inputs.data_dir}}/iris.csv"
  python hello-iris.py --iris-csv ${{inputs.data_dir}}/iris.csv
code: src
inputs:
  data_dir:
    type: uri_folder 
    path: azureml://datastores/workspaceblobstore/paths/example-data/
environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest

YAML: إدخال ملف URI

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: |
  echo "--iris-csv: ${{inputs.iris_csv}}"
  python hello-iris.py --iris-csv ${{inputs.iris_csv}}
code: src
inputs:
  iris_csv:
    type: uri_file 
    path: https://azuremlexamples.blob.core.windows.net/datasets/iris.csv
environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest

YAML: إدخال مجلد URI

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: |
  ls ${{inputs.data_dir}}
  echo "--iris-csv: ${{inputs.data_dir}}/iris.csv"
  python hello-iris.py --iris-csv ${{inputs.data_dir}}/iris.csv
code: src
inputs:
  data_dir:
    type: uri_folder 
    path: wasbs://datasets@azuremlexamples.blob.core.windows.net/
environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest

YAML: دفتر ملاحظات عبر طاحونة ورق

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: |
  pip install ipykernel papermill
  papermill hello-notebook.ipynb outputs/out.ipynb -k python
code: src
environment:
  image: library/python:3.11.6

YAML: تدريب نموذج Python الأساسي

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
code: src
command: >-
  python main.py 
  --iris-csv ${{inputs.iris_csv}}
  --C ${{inputs.C}}
  --kernel ${{inputs.kernel}}
  --coef0 ${{inputs.coef0}}
inputs:
  iris_csv: 
    type: uri_file
    path: wasbs://datasets@azuremlexamples.blob.core.windows.net/iris.csv
  C: 0.8
  kernel: "rbf"
  coef0: 0.1
environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest
compute: azureml:cpu-cluster
display_name: sklearn-iris-example
experiment_name: sklearn-iris-example
description: Train a scikit-learn SVM on the Iris dataset.

YAML: تدريب نموذج R الأساسي مع سياق بناء Docker المحلي

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: >
  Rscript train.R 
  --data_folder ${{inputs.iris}}
code: src
inputs:
  iris: 
    type: uri_file
    path: https://azuremlexamples.blob.core.windows.net/datasets/iris.csv
environment:
  build:
    path: docker-context
compute: azureml:cpu-cluster
display_name: r-iris-example
experiment_name: r-iris-example
description: Train an R model on the Iris dataset.

YAML: توزيع PyTorch

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
code: src
command: >-
  python train.py
  --epochs ${{inputs.epochs}}
  --learning-rate ${{inputs.learning_rate}}
  --data-dir ${{inputs.cifar}}
inputs:
  epochs: 1
  learning_rate: 0.2
  cifar:
     type: uri_folder
     path: azureml:cifar-10-example@latest
environment: azureml:AzureML-acpt-pytorch-1.13-cuda11.7@latest
compute: azureml:gpu-cluster
distribution:
  type: pytorch
  process_count_per_instance: 1
resources:
  instance_count: 2
display_name: pytorch-cifar-distributed-example
experiment_name: pytorch-cifar-distributed-example
description: Train a basic convolutional neural network (CNN) with PyTorch on the CIFAR-10 dataset, distributed via PyTorch.

YAML: توزيع TensorFlow

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
code: src
command: >-
  python train.py
  --epochs ${{inputs.epochs}}
  --model-dir ${{inputs.model_dir}}
inputs:
  epochs: 1
  model_dir: outputs/keras-model
environment: azureml:AzureML-tensorflow-2.12-cuda11@latest
compute: azureml:gpu-cluster
resources:
  instance_count: 2
distribution:
  type: tensorflow
  worker_count: 2
display_name: tensorflow-mnist-distributed-example
experiment_name: tensorflow-mnist-distributed-example
description: Train a basic neural network with TensorFlow on the MNIST dataset, distributed via TensorFlow.

YAML: توزيع MPI

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
code: src
command: >-
  python train.py
  --epochs ${{inputs.epochs}}
inputs:
  epochs: 1
environment: azureml:AzureML-tensorflow-2.12-cuda11@latest
compute: azureml:gpu-cluster
resources:
  instance_count: 2
distribution:
  type: mpi
  process_count_per_instance: 1
display_name: tensorflow-mnist-distributed-horovod-example
experiment_name: tensorflow-mnist-distributed-horovod-example
description: Train a basic neural network with TensorFlow on the MNIST dataset, distributed via Horovod.

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