نشر النماذج باستخدام REST (معاينة)
تعرف على كيفية استخدام واجهة برمجة تطبيقات Azure التعلم الآلي REST لنشر النماذج (المعاينة).
هام
تُعد هذه الميزة قيد المعاينة العامة في الوقت الحالي. يجري توفير إصدار المعاينة هذا من دون اتفاقية على مستوى الخدمة، ولا يوصى به لأحمال العمل الخاصة بالإنتاج. بعض الميزات ربما لا تكون مدعمة أو بها بعض القدرات المقيدة. لمزيد من المعلومات، راجع شروط الاستخدام التكميلية لمعاينات Microsoft Azure.
تستخدم واجهة برمجة تطبيقات REST أفعال HTTP القياسية لإنشاء الموارد واستردادها وتحديثها وحذفها. تعمل واجهة برمجة تطبيقات REST مع أي لغة أو أداة يمكنها تقديم طلبات HTTP. هيكل REST المباشر يجعله خيارا جيدا في بيئات البرمجة النصية وأتمتة MLOps.
في هذه المقالة، ستتعرف على كيفية استخدام واجهات برمجة تطبيقات REST الجديدة من أجل:
- إنشاء أصول التعلم الآلي
- إنشاء وظيفة تدريب أساسية
- إنشاء مهمة مسح ضبط المعلمات التشعبية
المتطلبات الأساسية
- اشتراك Azure لديك حقوق إدارية فيه. إذا لم يكن لديك مثل هذا الاشتراك ، فجرب الاشتراك الشخصي المجاني أو المدفوع.
- مساحة عمل Azure التعلم الآلي.
- مدير خدمة في مساحة العمل الخاصة بك. تستخدم طلبات REST الإدارية المصادقة الرئيسية للخدمة.
- رمز مصادقة رئيسي للخدمة. اتبع الخطوات الواردة في استرداد رمز مميز للمصادقة الأساسية للخدمة لاسترداد هذا الرمز المميز.
- الأداة المساعدة حليقة . يتوفر برنامج curl في نظام Windows الفرعي لـ Linux أو أي توزيع UNIX. في PowerShell ، الضفيرة هي اسم مستعار ل Invoke-WebRequest وتصبح
curl -d "key=val" -X POST uriInvoke-WebRequest -Body "key=val" -Method POST -Uri uri.
تعيين اسم نقطة النهاية
ملاحظة
يجب أن تكون أسماء نقاط النهاية فريدة على مستوى منطقة Azure. على سبيل المثال، يمكن أن يكون هناك نقطة نهاية واحدة فقط تحمل اسم نقطة النهاية الخاصة بي في westus2.
export ENDPOINT_NAME=endpt-rest-`echo $RANDOM`
Azure التعلم الآلي نقاط النهاية عبر الإنترنت
تسمح لك نقاط النهاية عبر الإنترنت (المعاينة) بنشر النموذج الخاص بك دون الحاجة إلى إنشاء وإدارة البنية التحتية الأساسية بالإضافة إلى مجموعات Kubernetes. في هذه المقالة، ستقوم بإنشاء نقطة نهاية ونشر عبر الإنترنت، والتحقق من صحتها من خلال استدعائها. ولكن سيتعين عليك أولا تسجيل الأصول اللازمة للنشر ، بما في ذلك النموذج والتعليمات البرمجية والبيئة.
هناك العديد من الطرق لإنشاء Azure التعلم الآلي نقاط النهاية عبر الإنترنت بما في ذلك Azure CLI، وبصريا باستخدام الاستوديو. المثال التالي نقطة نهاية عبر الإنترنت مع واجهة برمجة تطبيقات REST.
إنشاء أصول التعلم الآلي
أولا، قم بإعداد أصول Azure التعلم الآلي لتكوين وظيفتك.
في استدعاءات واجهة برمجة تطبيقات REST التالية، نستخدم SUBSCRIPTION_ID، RESOURCE_GROUP، ، LOCATIONوكعناصر WORKSPACE نائبة. استبدل العناصر النائبة بقيمتك الخاصة.
يطلب REST الإداري رمزا مميزا للمصادقة الرئيسية للخدمة. استبدل TOKEN بقيمتك الخاصة. يمكنك استرداد هذا الرمز المميز باستخدام الأمر التالي:
response=$(curl -H "Content-Length: 0" --location --request POST "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/onlineEndpoints/$ENDPOINT_NAME/token?api-version=$API_VERSION" \
--header "Authorization: Bearer $TOKEN")
accessToken=$(echo $response | jq -r '.accessToken')
يستخدم موفر الخدمة الوسيطة لضمان التوافق api-version . تختلف الوسيطة api-version من خدمة إلى أخرى. قم بتعيين إصدار واجهة برمجة التطبيقات كمتغير لاستيعاب الإصدارات المستقبلية:
API_VERSION="2021-10-01"
الحصول على تفاصيل حساب التخزين
لتسجيل النموذج والرمز ، يجب أولا تحميلهما إلى حساب تخزين. تتوفر تفاصيل حساب التخزين في مخزن البيانات. في هذا المثال، يمكنك الحصول على مخزن البيانات الافتراضي وحساب تخزين Azure لمساحة العمل الخاصة بك. قم بالاستعلام عن مساحة العمل الخاصة بك باستخدام طلب GET للحصول على ملف JSON يحتوي على المعلومات.
يمكنك استخدام الأداة jq لتحليل نتيجة JSON والحصول على القيم المطلوبة. يمكنك أيضا استخدام مدخل Azure للعثور على نفس المعلومات:
# Get values for storage account
response=$(curl --location --request GET "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/datastores?api-version=$API_VERSION&isDefault=true" \
--header "Authorization: Bearer $TOKEN")
AZUREML_DEFAULT_DATASTORE=$(echo $response | jq -r '.value[0].name')
AZUREML_DEFAULT_CONTAINER=$(echo $response | jq -r '.value[0].properties.containerName')
export AZURE_STORAGE_ACCOUNT=$(echo $response | jq -r '.value[0].properties.accountName')
& رمز التسجيل Upload
الآن بعد أن أصبح لديك مخزن البيانات ، يمكنك تحميل البرنامج النصي لتسجيل النقاط. استخدم واجهة سطر الأوامر لتخزين Azure لتحميل نقطة إلى الحاوية الافتراضية:
az storage blob upload-batch -d $AZUREML_DEFAULT_CONTAINER/score -s endpoints/online/model-1/onlinescoring
تلميح
يمكنك أيضا استخدام طرق أخرى للتحميل، مثل مدخل Azure أو مستكشف تخزين Azure.
بمجرد تحميل التعليمات البرمجية الخاصة بك ، يمكنك تحديد التعليمات البرمجية الخاصة بك مع طلب PUT والرجوع إلى مخزن البيانات مع datastoreId:
curl --location --request PUT "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/codes/score-sklearn/versions/1?api-version=$API_VERSION" \
--header "Authorization: Bearer $TOKEN" \
--header "Content-Type: application/json" \
--data-raw "{
\"properties\": {
\"codeUri\": \"https://$AZURE_STORAGE_ACCOUNT.blob.core.windows.net/$AZUREML_DEFAULT_CONTAINER/score\"
}
}"
نموذج Upload والتسجيل
على غرار التعليمات البرمجية ، Upload ملفات النموذج:
az storage blob upload-batch -d $AZUREML_DEFAULT_CONTAINER/model -s endpoints/online/model-1/model
الآن ، سجل النموذج:
curl --location --request PUT "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/models/sklearn/versions/1?api-version=$API_VERSION" \
--header "Authorization: Bearer $TOKEN" \
--header "Content-Type: application/json" \
--data-raw "{
\"properties\": {
\"modelUri\":\"azureml://subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/workspaces/$WORKSPACE/datastores/$AZUREML_DEFAULT_DATASTORE/paths/model/sklearn_regression_model.pkl\"
}
}"
خلق بيئة
يجب تشغيل النشر في بيئة تحتوي على التبعيات المطلوبة. إنشاء البيئة باستخدام طلب PUT. استخدم صورة عامل رصيف من سجل حاويات Microsoft. يمكنك تكوين صورة عامل الرصيف باستخدام وإضافة تبعيات conda باستخدام DockercondaFile.
في المقتطف التالي، تمت قراءة محتويات بيئة Conda (ملف YAML) في متغير بيئة:
ENV_VERSION=$RANDOM
curl --location --request PUT "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/environments/sklearn-env/versions/$ENV_VERSION?api-version=$API_VERSION" \
--header "Authorization: Bearer $TOKEN" \
--header "Content-Type: application/json" \
--data-raw "{
\"properties\":{
\"condaFile\": \"$CONDA_FILE\",
\"image\": \"mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04:20210727.v1\"
}
}"
إنشاء نقطة نهاية
إنشاء نقطة النهاية عبر الإنترنت:
response=$(curl --location --request PUT "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/onlineEndpoints/$ENDPOINT_NAME?api-version=$API_VERSION" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer $TOKEN" \
--data-raw "{
\"identity\": {
\"type\": \"systemAssigned\"
},
\"properties\": {
\"authMode\": \"AMLToken\"
},
\"location\": \"$LOCATION\"
}")
إنشاء النشر
إنشاء نشر ضمن نقطة النهاية:
response=$(curl --location --request PUT "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/onlineEndpoints/$ENDPOINT_NAME/deployments/blue?api-version=$API_VERSION" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer $TOKEN" \
--data-raw "{
\"location\": \"$LOCATION\",
\"sku\": {
\"capacity\": 1,
\"name\": \"Standard_F2s_v2\"
},
\"properties\": {
\"endpointComputeType\": \"Managed\",
\"scaleSettings\": {
\"scaleType\": \"Default\"
},
\"model\": \"/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/models/sklearn/versions/1\",
\"codeConfiguration\": {
\"codeId\": \"/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/codes/score-sklearn/versions/1\",
\"scoringScript\": \"score.py\"
},
\"environmentId\": \"/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/environments/sklearn-env/versions/$ENV_VERSION\"
}
}")
استدعاء نقطة النهاية لتسجيل البيانات باستخدام النموذج الخاص بك
نحن بحاجة إلى تسجيل uri ورمز الوصول لاستدعاء نقطة النهاية. أولا الحصول على أوري التهديف:
response=$(curl --location --request GET "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/onlineEndpoints/$ENDPOINT_NAME?api-version=$API_VERSION" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer $TOKEN")
scoringUri=$(echo $response | jq -r '.properties' | jq -r '.scoringUri')
احصل على الرمز المميز للوصول إلى نقطة النهاية:
response=$(curl -H "Content-Length: 0" --location --request POST "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/onlineEndpoints/$ENDPOINT_NAME/token?api-version=$API_VERSION" \
--header "Authorization: Bearer $TOKEN")
accessToken=$(echo $response | jq -r '.accessToken')
الآن ، استدعي نقطة النهاية باستخدام curl:
curl --location --request POST $scoringUri \
--header "Authorization: Bearer $accessToken" \
--header "Content-Type: application/json" \
--data-raw @endpoints/online/model-1/sample-request.json
تحقق من السجلات
تحقق من سجلات النشر:
curl --location --request POST "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/onlineEndpoints/$ENDPOINT_NAME/deployments/blue/getLogs?api-version=$API_VERSION" \
--header "Authorization: Bearer $TOKEN" \
--header "Content-Type: application/json" \
--data-raw "{ \"tail\": 100 }"
حذف نقطة النهاية
إذا كنت لن تستخدم النشر، فيجب عليك حذفه باستخدام الأمر أدناه (يحذف نقطة النهاية وجميع عمليات النشر الأساسية):
curl --location --request DELETE "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/onlineEndpoints/$ENDPOINT_NAME?api-version=$API_VERSION" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer $TOKEN" || true
الخطوات التالية
- تعرف على كيفية نشر النموذج الخاص بك باستخدام Azure CLI.
- تعرف على كيفية نشر النموذج باستخدام الاستوديو.
- تعرف على كيفية استكشاف أخطاء نشر نقاط النهاية عبر الإنترنت وتسجيلها (معاينة) وإصلاحها
- تعرف على كيفية الوصول إلى موارد Azure باستخدام نقطة نهاية عبر الإنترنت وهوية مدارة (معاينة)
- تعرف على كيفية مراقبة نقاط النهاية عبر الإنترنت.
- تعرف على خزينة طرح نقاط النهاية عبر الإنترنت (المعاينة).
- عرض تكاليف نقطة النهاية (المعاينة) المدارة عبر الإنترنت من Azure التعلم الآلي.
- قائمة وحدات SKU لنقاط النهاية المدارة عبر الإنترنت (معاينة).
- تعرف على القيود المفروضة على نقاط النهاية المدارة عبر الإنترنت في إدارة الحصص النسبية للموارد باستخدام Azure التعلم الآلي.