إدارة مدخلات ومخرجات المكون والمسار
في هذه المقالة، سوف تتعرف على:
- نظرة عامة على المدخلات والمخرجات في المكون والمسار
- كيفية ترقية مدخلات/مخرجات المكونات إلى مدخلات/مخرجات البنية الأساسية لبرنامج ربط العمليات التجارية
- كيفية تعريف المدخلات الاختيارية
- كيفية تخصيص مسار المخرجات
- كيفية تنزيل المخرجات
- كيفية تسجيل المخرجات كأصل مسمى
نظرة عامة على المدخلات والمخرجات
تدعم البنية الأساسية لبرنامج ربط العمليات التجارية التعلم الآلي Azure المدخلات والمخرجات على كل من مستويات المكون والمسار.
على مستوى المكون، تحدد المدخلات والمخرجات واجهة المكون. يمكن استخدام الإخراج من أحد المكونات كمدخل لمكون آخر في نفس المسار الأصل، ما يسمح بتمرير البيانات أو النماذج بين المكونات. يشكل هذا الترابط رسما بيانيا يوضح تدفق البيانات داخل البنية الأساسية لبرنامج ربط العمليات التجارية.
على مستوى البنية الأساسية لبرنامج ربط العمليات التجارية، تكون المدخلات والمخرجات مفيدة لإرسال مهام البنية الأساسية لبرنامج ربط العمليات التجارية مع مدخلات بيانات أو معلمات مختلفة تتحكم في منطق التدريب (على سبيل المثال learning_rate
). وهي مفيدة بشكل خاص عند استدعاء البنية الأساسية لبرنامج ربط العمليات التجارية عبر نقطة نهاية REST. تمكنك هذه المدخلات والمخرجات من تعيين قيم مختلفة لإدخال البنية الأساسية لبرنامج ربط العمليات التجارية أو الوصول إلى إخراج مهام البنية الأساسية لبرنامج ربط العمليات التجارية من خلال نقطة نهاية REST. لمعرفة المزيد، راجع إنشاء الوظائف وبيانات الإدخال لنقطة نهاية الدفعة.
أنواع المدخلات والمخرجات
يتم دعم الأنواع التالية كمخرجات لمكون أو مسار.
أنواع البيانات. تحقق من أنواع البيانات في Azure التعلم الآلي لمعرفة المزيد حول أنواع البيانات.
uri_file
uri_folder
mltable
أنواع النماذج.
mlflow_model
custom_model
استخدام إخراج البيانات أو النموذج بشكل أساسي لتسلسل المخرجات وحفظها كملفات في موقع تخزين. في الخطوات اللاحقة، يمكن تحميل موقع التخزين هذا أو تنزيله أو تحميله إلى نظام الملفات الهدف للحساب، ما يتيح الخطوة التالية للوصول إلى الملفات أثناء تنفيذ المهمة.
تتطلب هذه العملية التعليمات البرمجية المصدر للمكون تسلسل كائن الإخراج المطلوب - عادة ما يتم تخزينه في الذاكرة - في الملفات. على سبيل المثال، يمكنك تسلسل إطار بيانات pandas كملف CSV. لاحظ أن Azure التعلم الآلي لا يحدد أي أساليب موحدة لتسلسل الكائنات. كمستخدم، لديك المرونة لاختيار الأسلوب المفضل لديك لتسلسل العناصر في الملفات. بعد ذلك، في مكون انتقال البيانات من الخادم، يمكنك إلغاء تسلسل هذه الملفات وقراءتها بشكل مستقل. فيما يلي بعض الأمثلة للرجوع إليها:
- في المثال nyc_taxi_data_regression ، يحتوي مكون الإعداد على
uri_folder
إخراج نوع. في التعليمات البرمجية لمصدر المكون، يقرأ ملفات csv من مجلد الإدخال، ويعالج الملفات ويكتب ملفات CSV المعالجة إلى مجلد الإخراج. - في المثال nyc_taxi_data_regression، يحتوي مكون القطار على
mlflow_model
إخراج نوع. في التعليمات البرمجية المصدر للمكون، فإنه يحفظ النموذج المدرب باستخدامmlflow.sklearn.save_model
الأسلوب .
بالإضافة إلى أنواع البيانات أو النماذج أعلاه، يمكن أن تتبع مدخلات البنية الأساسية لبرنامج ربط العمليات التجارية أو المكونات أيضا أنواعا بدائية.
string
number
integer
boolean
في المثال nyc_taxi_data_regression ، يحتوي مكون التدريب على number
إدخال يسمى test_split_ratio
.
إشعار
إخراج الأنواع الأولية غير مدعوم.
المسار ووضع إدخالات/مخرجات البيانات
بالنسبة لإدخال/إخراج أصول البيانات، يجب تحديد معلمة path
تشير إلى موقع البيانات. يعرض هذا الجدول مواقع البيانات المختلفة التي يدعمها Azure التعلم الآلي pipeline، ويعرض أيضا أمثلة معلمات المسار:
الموقع | الأمثلة | الإدخال | الإخراج |
---|---|---|---|
مسار على الكمبيوتر المحلي | ./home/username/data/my_data |
√ | |
مسار على خادم http(s) عام | https://raw.githubusercontent.com/pandas-dev/pandas/main/doc/data/titanic.csv |
√ | |
مسار على Azure Storage | wasbs://<container_name>@<account_name>.blob.core.windows.net/<path> abfss://<file_system>@<account_name>.dfs.core.windows.net/<path> |
غير مقترح لأنه قد يحتاج إلى تكوين هوية إضافي لقراءة البيانات. | |
مسار على Azure التعلم الآلي Datastore | azureml://datastores/<data_store_name>/paths/<path> |
√ | √ |
مسار إلى أصل بيانات | azureml:<my_data>:<version> |
√ | √ |
إشعار
بالنسبة إلى الإدخال/الإخراج على التخزين، نقترح بشدة استخدام مسار مخزن البيانات التعلم الآلي Azure بدلا من مسار تخزين Azure المباشر. يتم دعم مسار مخزن البيانات عبر أنواع الوظائف المختلفة في البنية الأساسية لبرنامج ربط العمليات التجارية.
بالنسبة لإدخال/إخراج البيانات، يمكنك الاختيار من بين أوضاع مختلفة (تنزيل أو تحميل أو تحميل) لتحديد كيفية الوصول إلى البيانات في هدف الحساب. يعرض هذا الجدول الأوضاع المحتملة لمجموعات مختلفة من النوع/الوضع/الإدخال/الإخراج.
نوع | إدخال/إخراج | upload |
download |
ro_mount |
rw_mount |
direct |
eval_download |
eval_mount |
---|---|---|---|---|---|---|---|---|
uri_folder |
الإدخال | √ | √ | √ | ||||
uri_file |
الإدخال | √ | √ | √ | ||||
mltable |
الإدخال | √ | √ | √ | √ | √ | ||
uri_folder |
الإخراج | √ | √ | |||||
uri_file |
الإخراج | √ | √ | |||||
mltable |
الإخراج | √ | √ | √ |
إشعار
في معظم الحالات، نقترح استخدام ro_mount
أو rw_mount
وضع. لمعرفة المزيد حول الوضع، راجع أوضاع أصول البيانات.
التمثيل المرئي في Azure التعلم الآلي studio
توفر لقطات الشاشة التالية مثالا على كيفية عرض المدخلات والمخرجات في مهمة البنية الأساسية لبرنامج ربط العمليات التجارية في Azure التعلم الآلي studio. يمكن العثور على هذه المهمة المعينة، المسماة nyc-taxi-data-regression
، في azureml-example.
في صفحة مهمة البنية الأساسية لبرنامج ربط العمليات التجارية في الاستوديو، يتم عرض إدخالات/إخراج نوع البيانات/النموذج للمكون كدائرة صغيرة في المكون المقابل، والمعروفة باسم منفذ الإدخال/الإخراج. تمثل هذه المنافذ تدفق البيانات في البنية الأساسية لبرنامج ربط العمليات التجارية.
يتم عرض إخراج مستوى البنية الأساسية لبرنامج ربط العمليات التجارية كمربع أرجواني لتحديد الهوية بسهولة.
عند تمرير الماوس فوق منفذ إدخال/إخراج، يتم عرض النوع.
لن يتم عرض إدخالات النوع البدائي على الرسم البياني. يمكن العثور عليه في علامة التبويب الإعدادات من لوحة نظرة عامة على مهمة المسار (لإدخالات مستوى المسار) أو لوحة المكون (لإدخالات مستوى المكون). تظهر لقطة الشاشة التالية علامة التبويب الإعدادات لمهمة البنية الأساسية لبرنامج ربط العمليات التجارية، ويمكن فتحها عن طريق تحديد ارتباط نظرة عامة على الوظيفة.
إذا كنت ترغب في التحقق من إدخالات مكون، فانقر نقرا مزدوجا فوق المكون لفتح لوحة المكون.
وبالمثل، عند تحرير البنية الأساسية لبرنامج ربط العمليات التجارية في المصمم، يمكنك العثور على مدخلات ومخرجات البنية الأساسية لبرنامج ربط العمليات التجارية في لوحة واجهة البنية الأساسية لبرنامج ربط العمليات التجارية، وإدخالات المكون في لوحة المكون (المشغل بالنقر نقرا مزدوجا فوق المكون).
كيفية ترقية إدخالات المكونات ومخرجاتها إلى مستوى البنية الأساسية لبرنامج ربط العمليات التجارية
يسمح لك ترقية إدخال/إخراج المكون إلى مستوى المسار بالكتابة فوق إدخال/إخراج المكون عند إرسال مهمة البنية الأساسية لبرنامج ربط العمليات التجارية. كما أنه مفيد إذا كنت تريد تشغيل البنية الأساسية لبرنامج ربط العمليات التجارية باستخدام نقطة نهاية REST.
فيما يلي أمثلة لتعزيز مدخلات/مخرجات المكونات إلى مدخلات/مخرجات مستوى البنية الأساسية لبرنامج ربط العمليات التجارية.
$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: 1b_e2e_registered_components
description: E2E dummy train-score-eval pipeline with registered components
inputs:
pipeline_job_training_max_epocs: 20
pipeline_job_training_learning_rate: 1.8
pipeline_job_learning_rate_schedule: 'time-based'
outputs:
pipeline_job_trained_model:
mode: upload
pipeline_job_scored_data:
mode: upload
pipeline_job_evaluation_report:
mode: upload
settings:
default_compute: azureml:cpu-cluster
jobs:
train_job:
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:
type: vs_code
my_jupyter_lab:
type: jupyter_lab
my_tensorboard:
type: tensor_board
log_dir: "outputs/tblogs"
# my_ssh:
# type: tensor_board
# ssh_public_keys: <paste the entire pub key content>
# nodes: all # Use the `nodes` property to pick which node you want to enable interactive services on. If `nodes` are not selected, by default, interactive applications are only enabled on the head node.
score_job:
type: command
component: azureml:my_score@latest
inputs:
model_input: ${{parent.jobs.train_job.outputs.model_output}}
test_data:
type: uri_folder
path: ./data
outputs:
score_output: ${{parent.outputs.pipeline_job_scored_data}}
evaluate_job:
type: command
component: azureml:my_eval@latest
inputs:
scoring_result: ${{parent.jobs.score_job.outputs.score_output}}
outputs:
eval_output: ${{parent.outputs.pipeline_job_evaluation_report}}
يمكن العثور على المثال الكامل في البنية الأساسية لبرنامج ربط العمليات التجارية train-score-eval مع المكونات المسجلة. يقوم هذا المسار بترقية ثلاثة مدخلات وثلاثة مخرجات إلى مستوى البنية الأساسية لبرنامج ربط العمليات التجارية. لنأخذ pipeline_job_training_max_epocs
على سبيل المثال. يتم الإعلان عنه ضمن inputs
القسم على مستوى الجذر، ما يعني إدخال مستوى البنية الأساسية لبرنامج ربط العمليات التجارية الخاصة به. ضمن jobs -> train_job
القسم ، تتم الإشارة إلى الإدخال المسمى max_epocs
باسم ${{parent.inputs.pipeline_job_training_max_epocs}}
، والذي يشير إلى أن الإدخال max_epocs
يشير إلى train_job
إدخال مستوى البنية الأساسية لبرنامج ربط العمليات التجارية pipeline_job_training_max_epocs
. وبالمثل، يمكنك ترقية إخراج البنية الأساسية لبرنامج ربط العمليات التجارية باستخدام نفس المخطط.
Studio
يمكنك ترقية إدخال مكون إلى إدخال مستوى البنية الأساسية لبرنامج ربط العمليات التجارية في صفحة تأليف المصمم. انتقل إلى لوحة إعداد المكون بالنقر نقرا مزدوجا فوق المكون -> ابحث عن الإدخال الذي تريد ترقيته -> حدد النقاط الثلاث على اليمين -> حدد إضافة إلى إدخال البنية الأساسية لبرنامج ربط العمليات التجارية.
إدخال اختياري
بشكل افتراضي، تكون جميع المدخلات مطلوبة ويجب تعيين قيمة (أو قيمة افتراضية) في كل مرة ترسل فيها مهمة البنية الأساسية لبرنامج ربط العمليات التجارية. ومع ذلك، قد تكون هناك مثيلات تحتاج فيها إلى إدخالات اختيارية. في مثل هذه الحالات، لديك المرونة لعدم تعيين قيمة إلى الإدخال عند إرسال مهمة البنية الأساسية لبرنامج ربط العمليات التجارية.
يمكن أن يكون الإدخال الاختياري مفيدا في سيناريوهين أدناه:
إذا كان لديك إدخال نوع بيانات/نموذج اختياري ولم تقم بتعيين قيمة له عند إرسال مهمة المسار، فسيكون هناك مكون في البنية الأساسية لبرنامج ربط العمليات التجارية يفتقر إلى تبعية بيانات مسبوقة. بمعنى آخر، لا يرتبط منفذ الإدخال بأي مكون أو عقدة بيانات/نموذج. يؤدي هذا إلى استدعاء خدمة البنية الأساسية لبرنامج ربط العمليات التجارية هذا المكون مباشرة، بدلا من انتظار التبعية السابقة لتكون جاهزة.
توفر لقطة الشاشة أدناه مثالا واضحا للسيناريو الثاني. إذا قمت بتعيين
continue_on_step_failure = True
للبنية الأساسية لبرنامج ربط العمليات التجارية ولديك عقدة ثانية (node2) تستخدم الإخراج من العقدة الأولى (node1) كإدخل اختياري، فسيظل يتم تنفيذ node2 حتى إذا فشلت node1. ومع ذلك، إذا كانت node2 تستخدم الإدخال المطلوب من node1، فلن يتم تنفيذها إذا فشلت node1.
فيما يلي أمثلة حول كيفية تعريف الإدخال الاختياري.
$schema: https://azuremlschemas.azureedge.net/latest/commandComponent.schema.json
name: train_data_component_cli
display_name: train_data
description: A example train component
tags:
author: azureml-sdk-team
type: command
inputs:
training_data:
type: uri_folder
max_epocs:
type: integer
optional: true
learning_rate:
type: number
default: 0.01
optional: true
learning_rate_schedule:
type: string
default: time-based
optional: true
outputs:
model_output:
type: uri_folder
code: ./train_src
environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest
command: >-
python train.py
--training_data ${{inputs.training_data}}
$[[--max_epocs ${{inputs.max_epocs}}]]
$[[--learning_rate ${{inputs.learning_rate}}]]
$[[--learning_rate_schedule ${{inputs.learning_rate_schedule}}]]
--model_output ${{outputs.model_output}}
عند تعيين الإدخال على أنه optional = true
، تحتاج إلى استخدام $[[]]
لاحتضان سطر الأوامر مع المدخلات. راجع الخط المميز في المثال أعلاه.
إشعار
الإخراج الاختياري غير معتمد.
في الرسم البياني للبنية الأساسية لبرنامج ربط العمليات التجارية، يتم تمثيل المدخلات الاختيارية لنوع البيانات/النموذج بواسطة دائرة منقطة. يمكن تحديد المدخلات الاختيارية للأنوع الأولية ضمن علامة التبويب الإعدادات. على عكس المدخلات المطلوبة، لا تحتوي المدخلات الاختيارية على علامة نجمية بجانبها، مما يدل على أنها ليست إلزامية.
كيفية تخصيص مسار الإخراج
بشكل افتراضي، سيتم تخزين إخراج مكون في azureml://datastores/${{default_datastore}}/paths/${{name}}/${{output_name}}
. {default_datastore}
هو عميل مخزن البيانات الافتراضي الذي تم تعيينه للبنية الأساسية لبرنامج ربط العمليات التجارية. إذا لم يتم تعيينه، فهو تخزين كائن ثنائي كبير الحجم لمساحة العمل. {name}
هو اسم الوظيفة، والذي سيتم حله في وقت تنفيذ الوظيفة. {output_name}
هو اسم الإخراج الذي تم تعريفه للعميل في المكون YAML.
ولكن يمكنك أيضا تخصيص مكان تخزين الإخراج عن طريق تحديد مسار الإخراج. فيما يلي مثال:
pipeline.yaml
يعرف البنية الأساسية لبرنامج ربط العمليات التجارية التي تحتوي على ثلاثة مخرجات على مستوى البنية الأساسية لبرنامج ربط العمليات التجارية. يمكن العثور على YAML الكامل في مسار train-score-eval مع مثال المكونات المسجلة.
يمكنك استخدام الأمر التالي لتعيين مسار إخراج مخصص للإخراج pipeline_job_trained_model
.
# define the custom output path using datastore uri
# add relative path to your blob container after "azureml://datastores/<datastore_name>/paths"
output_path="azureml://datastores/{datastore_name}/paths/{relative_path_of_container}"
# create job and define path using --outputs.<outputname>
az ml job create -f ./pipeline.yml --set outputs.pipeline_job_trained_model.path=$output_path
كيفية تنزيل الإخراج
يمكنك تنزيل إخراج المكون أو إخراج البنية الأساسية لبرنامج ربط العمليات التجارية باتباع المثال أدناه.
تنزيل إخراج مستوى البنية الأساسية لبرنامج ربط العمليات التجارية
# Download all the outputs of the job
az ml job download --all -n <JOB_NAME> -g <RESOURCE_GROUP_NAME> -w <WORKSPACE_NAME> --subscription <SUBSCRIPTION_ID>
# Download specific output
az ml job download --output-name <OUTPUT_PORT_NAME> -n <JOB_NAME> -g <RESOURCE_GROUP_NAME> -w <WORKSPACE_NAME> --subscription <SUBSCRIPTION_ID>
تنزيل مخرجات الوظيفة التابعة
عندما تحتاج إلى تنزيل إخراج مهمة تابعة (إخراج مكون لا يروج إلى مستوى المسار)، يجب أولا سرد كافة كيان الوظيفة التابعة لمهمة المسار ثم استخدام تعليمات برمجية مشابهة لتنزيل الإخراج.
# List all child jobs in the job and print job details in table format
az ml job list --parent-job-name <JOB_NAME> -g <RESOURCE_GROUP_NAME> -w <WORKSPACE_NAME> --subscription <SUBSCRIPTION_ID> -o table
# Select needed child job name to download output
az ml job download --all -n <JOB_NAME> -g <RESOURCE_GROUP_NAME> -w <WORKSPACE_NAME> --subscription <SUBSCRIPTION_ID>
كيفية تسجيل الإخراج كأصل مسمى
يمكنك تسجيل إخراج مكون أو مسار كأصل مسمى عن طريق تعيين name
و version
إلى الإخراج. يمكن إدراج الأصل المسجل في مساحة العمل الخاصة بك من خلال studio UI/CLI/SDK كما يمكن الرجوع إليه في مهامك المستقبلية.
تسجيل إخراج البنية الأساسية لبرنامج ربط العمليات التجارية
display_name: register_pipeline_output
type: pipeline
jobs:
node:
type: command
inputs:
component_in_path:
type: uri_file
path: https://dprepdata.blob.core.windows.net/demo/Titanic.csv
component: ../components/helloworld_component.yml
outputs:
component_out_path: ${{parent.outputs.component_out_path}}
outputs:
component_out_path:
type: mltable
name: pipeline_output # Define name and version to register pipeline output
version: '1'
settings:
default_compute: azureml:cpu-cluster
تسجيل إخراج وظيفة تابعة
display_name: register_node_output
type: pipeline
jobs:
node:
type: command
component: ../components/helloworld_component.yml
inputs:
component_in_path:
type: uri_file
path: 'https://dprepdata.blob.core.windows.net/demo/Titanic.csv'
outputs:
component_out_path:
type: uri_folder
name: 'node_output' # Define name and version to register a child job's output
version: '1'
settings:
default_compute: azureml:cpu-cluster
الخطوات التالية
الملاحظات
https://aka.ms/ContentUserFeedback.
قريبًا: خلال عام 2024، سنتخلص تدريجيًا من GitHub Issues بوصفها آلية إرسال ملاحظات للمحتوى ونستبدلها بنظام ملاحظات جديد. لمزيد من المعلومات، راجعإرسال الملاحظات وعرضها المتعلقة بـ