في PowerShell، curl هو اسم مستعار ل Invoke-WebRequest ويصبح curl -d "key=val" -X POST uriInvoke-WebRequest -Body "key=val" -Method POST -Uri uri.
في حين أنه من الممكن استدعاء واجهة برمجة تطبيقات REST من PowerShell، تفترض الأمثلة في هذه المقالة أنك تستخدم Bash.
الأداة المساعدة jq لمعالجة JSON. يتم استخدام هذه الأداة المساعدة لاستخراج القيم من مستندات JSON التي يتم إرجاعها من استدعاءات REST API.
استنساخ مستودع الأمثلة
تستند القصاصات البرمجية في هذه المقالة إلى أمثلة في Azure التعلم الآلي أمثلة GitHub repo. لاستنساخ المستودع إلى بيئة التطوير الخاصة بك، استخدم الأمر التالي:
استخدم --depth 1 لنسخ آخر تثبيت فقط في المستودع، ما يقلل الوقت اللازم لإكمال العملية.
مثال الوظيفة
تستخدم الأمثلة في هذه المقالة مجموعة بيانات زهرة قزحية القزحية لتدريب نموذج MLFlow.
التدريب في السحابة
عند التدريب في السحابة، يجب عليك الاتصال بمساحة عمل Azure التعلم الآلي وتحديد مورد حساب سيتم استخدامه لتشغيل مهمة التدريب.
1. تعيين مساحة العمل
تلميح
استخدم علامات التبويب أدناه لتحديد الطريقة التي تريد استخدامها لتدريب نموذج. سيؤدي تحديد علامة تبويب إلى تبديل جميع علامات التبويب في هذه المقالة تلقائيا إلى علامة التبويب نفسها. يمكنك تحديد علامة تبويب أخرى في أي وقت.
للاتصال بمساحة العمل، تحتاج إلى معلمات المعرف - اشتراك ومجموعة موارد واسم مساحة العمل. ستستخدم هذه التفاصيل في MLClient من azure.ai.ml مساحة الاسم للحصول على مؤشر إلى مساحة عمل Azure التعلم الآلي المطلوبة. للمصادقة، يمكنك استخدام مصادقة Azure الافتراضية. افحص هذا المثال لمزيد من التفاصيل حول كيفية تكوين بيانات الاعتماد وتعيين مساحة عمل.
#import required libraries
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
#Enter details of your Azure Machine Learning workspace
subscription_id = '<SUBSCRIPTION_ID>'
resource_group = '<RESOURCE_GROUP>'
workspace = '<AZUREML_WORKSPACE_NAME>'
#connect to the workspace
ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group, workspace)
عند استخدام Azure CLI، تحتاج إلى معلمات المعرف - اشتراك ومجموعة موارد واسم مساحة العمل. بينما يمكنك تحديد هذه المعلمات لكل أمر، يمكنك أيضا تعيين الإعدادات الافتراضية التي سيتم استخدامها لجميع الأوامر. استخدم الأوامر التالية لتعيين القيم الافتراضية. استبدل <subscription ID>و <Azure Machine Learning workspace name>و <resource group> بقيم التكوين:
az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>
تستخدم $SUBSCRIPTION_IDأمثلة واجهة برمجة تطبيقات REST في هذه المقالة العناصر $RESOURCE_GROUP$LOCATIONالنائبة و$WORKSPACE. استبدل العناصر النائبة بالقيم الخاصة بك كما يلي:
$SUBSCRIPTION_ID: معرّف اشتراك Azure الخاص بك.
$RESOURCE_GROUP: مجموعة موارد Azure التي تحتوي على مساحة العمل الخاصة بك.
$LOCATION: منطقة Azure حيث توجد مساحة العمل الخاصة بك.
$WORKSPACE: اسم مساحة عمل Azure التعلم الآلي.
$COMPUTE_NAME: اسم مجموعة حساب Azure التعلم الآلي.
وتستخدم طلبات REST الإدارية رمز مصادقة مميز لكيان الخدمة. يمكنك استرداد رمز مميز باستخدام الأمر التالي. يتم تخزين الرمز المميز في $TOKEN متغير البيئة:
يستخدم موفر الخدمة الوسيطة api-version للتأكد من التوافق. تختلف الوسيطة api-version من خدمة إلى أخرى. قم بتعيين إصدار API كمُتغير للتوافق مع الإصدارات المستقبلية:
API_VERSION="2022-05-01"
عند التدريب باستخدام واجهة برمجة تطبيقات REST، يجب تحميل البيانات والبرامج النصية للتدريب إلى حساب تخزين يمكن لمساحة العمل الوصول إليه. يحصل المثال التالي على معلومات التخزين لمساحة العمل الخاصة بك ويحفظها في متغيرات حتى نتمكن من استخدامها لاحقا:
نظام مجموعة حساب Azure التعلم الآلي هو مورد حساب مدار بالكامل يمكن استخدامه لتشغيل مهمة التدريب. في الأمثلة التالية، يتم إنشاء نظام مجموعة حساب يسمى cpu-compute .
لتشغيل هذا البرنامج النصي، ستستخدم command الذي ينفذ main.py برنامج Python النصي الموجود ضمن ./sdk/python/jobs/single-step/lightgbm/iris/src/. سيتم تشغيل الأمر عن طريق إرساله ك job إلى Azure التعلم الآلي.
إشعار
لاستخدام الحوسبة بلا خادم، احذف compute="cpu-cluster" في هذه التعليمة البرمجية.
# submit the command
returned_job = ml_client.jobs.create_or_update(command_job)
# get a URL for the status of the job
returned_job.studio_url
في الأمثلة أعلاه، قمت بتكوين:
code - المسار حيث توجد التعليمة البرمجية لتشغيل الأمر
command - الأمر الذي يحتاج للتشغيل
environment - البيئة اللازمة لتشغيل البرنامج النصي للتدريب. في هذا المثال، نستخدم بيئة منسقة أو جاهزة يوفرها Azure التعلم الآلي تسمى AzureML-lightgbm-3.2-ubuntu18.04-py37-cpu. نستخدم أحدث إصدار من هذه البيئة باستخدام @latest التوجيه . يمكنك أيضا استخدام بيئات مخصصة عن طريق تحديد صورة docker أساسية وتحديد conda yaml فوقها.
inputs - قاموس الإدخالات باستخدام أزواج من قيمة الاسم للأمر. المفتاح هو اسم للإدخال ضمن سياق الوظيفة والقيمة هي قيمة الإدخال. تتم الإشارة إلى الإدخالات ب command استخدام ${{inputs.<input_name>}} التعبير. لاستخدام الملفات أو المجلدات كمدخلات، يمكنك استخدام Input الفئة. لمزيد من المعلومات، راجع تعبيرات SDK وCLI v2.
عند إرسال المهمة، يتم إرجاع عنوان URL إلى حالة الوظيفة في Azure التعلم الآلي studio. استخدم واجهة مستخدم الاستوديو لعرض تقدم المهمة. يمكنك أيضا استخدام returned_job.status للتحقق من الحالة الحالية للوظيفة.
az ml job create يتطلب الأمر المستخدم في هذا المثال ملف تعريف مهمة YAML. محتويات الملف المستخدم في هذا المثال هي:
إشعار
لاستخدام الحوسبة بلا خادم، احذف compute: azureml:cpu-cluster" في هذه التعليمة البرمجية.
code - المسار حيث توجد التعليمة البرمجية لتشغيل الأمر
command - الأمر الذي يحتاج للتشغيل
inputs - قاموس الإدخالات باستخدام أزواج من قيمة الاسم للأمر. المفتاح هو اسم للإدخال ضمن سياق الوظيفة والقيمة هي قيمة الإدخال. تتم الإشارة إلى الإدخالات ب command استخدام ${{inputs.<input_name>}} التعبير. لمزيد من المعلومات، راجع تعبيرات SDK وCLI v2.
environment - البيئة اللازمة لتشغيل البرنامج النصي للتدريب. في هذا المثال، نستخدم بيئة منسقة أو جاهزة يوفرها Azure التعلم الآلي تسمى AzureML-sklearn-0.24-ubuntu18.04-py37-cpu. نستخدم أحدث إصدار من هذه البيئة باستخدام @latest التوجيه . يمكنك أيضا استخدام بيئات مخصصة عن طريق تحديد صورة docker أساسية وتحديد conda yaml فوقها.
لإرسال المهمة، استخدم الأمر التالي. يتم تخزين معرف التشغيل (الاسم) لمهمة التدريب في $run_id المتغير:
run_id=$(az ml job create -f jobs/single-step/scikit-learn/iris/job.yml --query name -o tsv)
يمكنك استخدام معرف التشغيل المخزن لإرجاع معلومات حول المهمة. تفتح --web المعلمة واجهة مستخدم الويب Azure التعلم الآلي studio حيث يمكنك التنقل في التفاصيل حول الوظيفة:
az ml job show -n $run_id --web
كجزء من إرسال المهمة، يجب تحميل البرامج النصية التدريبية والبيانات إلى موقع تخزين سحابي يمكن لمساحة عمل Azure التعلم الآلي الوصول إليه.
استخدم أمر Azure CLI التالي لتحميل البرنامج النصي للتدريب. يحدد الأمر الدليل الذي يحتوي على الملفات المطلوبة للتدريب، وليس ملفا فرديا. إذا كنت ترغب في استخدام REST لتحميل البيانات بدلا من ذلك، فراجع مرجع Put Blob :
az storage blob upload-batch -d $AZUREML_DEFAULT_CONTAINER/testjob -s cli/jobs/single-step/scikit-learn/iris/src/ --account-name $AZURE_STORAGE_ACCOUNT
إنشاء مرجع تم إصداره إلى بيانات التدريب. في هذا المثال، البيانات موجودة بالفعل في السحابة وتقع في https://azuremlexamples.blob.core.windows.net/datasets/iris.csv. لمزيد من المعلومات حول الرجوع إلى البيانات، راجع البيانات في Azure التعلم الآلي:
تسجيل مرجع تم إصداره إلى البرنامج النصي للتدريب للاستخدام مع وظيفة. في هذا المثال، موقع البرنامج النصي هو حساب التخزين الافتراضي والحاوية التي قمت بتحميلها إلى في الخطوة 1. يتم إرجاع معرف التعليمات البرمجية للتدريب الذي تم إصداره وتخزينه في $TRAIN_CODE المتغير:
إنشاء البيئة التي ستستخدمها المجموعة لتشغيل البرنامج النصي للتدريب. في هذا المثال، نستخدم بيئة منسقة أو جاهزة يوفرها Azure التعلم الآلي تسمى AzureML-lightgbm-3.2-ubuntu18.04-py37-cpu. يسترد الأمر التالي قائمة بإصدارات البيئة، مع وجود الأحدث في أعلى المجموعة. jq يستخدم لاسترداد معرف أحدث إصدار ([0])، والذي يتم تخزينه بعد ذلك في $ENVIRONMENT المتغير.
وأخيرا، أرسل الوظيفة. يوضح المثال التالي كيفية إرسال المهمة، والإشارة إلى معرف التعليمات البرمجية للتدريب، ومعرف البيئة، وعنوان URL لبيانات الإدخال، ومعرف مجموعة الحوسبة. سيتم تخزين موقع إخراج الوظيفة في $JOB_OUTPUT المتغير:
تلميح
يجب أن يكون اسم الوظيفة فريدا. في هذا المثال، uuidgen يتم استخدام لإنشاء قيمة فريدة للاسم.
إشعار
لاستخدام الحوسبة بلا خادم، احذف السطر في هذه التعليمة البرمجية \"computeId\": .
name يتم استخدام الخاصية التي تم إرجاعها بواسطة مهمة التدريب كجزء من المسار إلى النموذج.
from azure.ai.ml.entities import Model
from azure.ai.ml.constants import AssetTypes
run_model = Model(
path="azureml://jobs/{}/outputs/artifacts/paths/model/".format(returned_job.name),
name="run-model-example",
description="Model created from run.",
type=AssetTypes.MLFLOW_MODEL
)
ml_client.models.create_or_update(run_model)
تلميح
يتم استخدام الاسم (المخزن في $run_id المتغير) كجزء من المسار إلى النموذج.
az ml model create -n sklearn-iris-example -v 1 -p runs:/$run_id/model --type mlflow_model
تلميح
يتم استخدام الاسم (المخزن في $run_id المتغير) كجزء من المسار إلى النموذج.
قريبًا: خلال عام 2024، سنتخلص تدريجيًا من GitHub Issues بوصفها آلية إرسال ملاحظات للمحتوى ونستبدلها بنظام ملاحظات جديد. لمزيد من المعلومات، راجع https://aka.ms/ContentUserFeedback.