توزيع نماذج MLflow في عمليات توزيع الدفعات
ينطبق على:ملحق ML Azure CLI v2 (الحالي)Python SDK azure-ai-ml v2 (الحالي)
في هذه المقالة، تعرف على كيفية نشر نماذج MLflow إلى Azure التعلم الآلي لكلا الاستدلال الدفعي باستخدام نقاط النهاية الدفعية. عند نشر نماذج MLflow إلى نقاط نهاية الدفعة، التعلم الآلي Azure:
- يوفر صورة أساسية MLflow/ بيئة منسقة تحتوي على التبعيات المطلوبة لتشغيل وظيفة Azure التعلم الآلي Batch.
- إنشاء مسار مهمة دفعية مع برنامج نصي لتسجيل النقاط لك يمكن استخدامه لمعالجة البيانات باستخدام التوازي.
إشعار
لمزيد من المعلومات حول أنواع ملفات الإدخال المدعومة وتفاصيل حول كيفية عمل نموذج MLflow، راجع الاعتبارات عند النشر للاستدلال الدفعي.
حول هذا المثال
يوضح هذا المثال كيف يمكنك نشر نموذج MLflow إلى نقطة نهاية دفعية لتنفيذ تنبؤات الدفعة. يستخدم هذا المثال نموذج MLflow استنادا إلى مجموعة بيانات أمراض القلب UCI. تحتوي قاعدة البيانات على 76 سمة، لكننا نستخدم مجموعة فرعية من 14 منها. يحاول النموذج التنبؤ بوجود مرض القلب في المريض. وهو عدد صحيح يقدر من 0 (بدون حضور) إلى 1 (حالة حضور).
تم تدريب النموذج باستخدام XGBBoost
مصنف وتم حزم جميع المعالجة المسبقة المطلوبة كبنية scikit-learn
أساسية لبرنامج ربط العمليات التجارية، ما يجعل هذا النموذج مسارا من طرف إلى طرف ينتقل من البيانات الأولية إلى التنبؤات.
يستند المثال في هذه المقالة إلى نماذج التعليمات البرمجية الموجودة في مستودع أمثلة azureml. لتشغيل الأوامر محليا دون الحاجة إلى نسخ/لصق YAML والملفات الأخرى، قم أولا باستنساخ المستودع ثم تغيير الدلائل إلى المجلد:
git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples/cli
ملفات هذا المثال موجودة في:
cd endpoints/batch/deploy-models/heart-classifier-mlflow
المتابعة في Jupyter Notebooks
يمكنك متابعة هذا النموذج في دفاتر الملاحظات التالية. في المستودع المستنسخ، افتح دفتر الملاحظات: mlflow-for-batch-tabular.ipynb.
المتطلبات الأساسية
قبل اتباع الخطوات الواردة في هذه المقالة، تأكد من توفر المتطلبات الأساسية التالية لديك:
اشتراك Azure. في حال لم يكن لديك اشتراك Azure، فأنشئ حساباً مجانيّاً قبل البدء. جرّب الإصدار المجاني أو المدفوع من «التعلم الآلي» من Azure.
مساحة عمل للتعلم الآلي من Microsoft Azure. إذا لم يكن لديك واحدة، فاستخدم الخطوات الواردة في مقالة إدارة مساحات عمل Azure التعلم الآلي لإنشاء واحدة.
تأكد من أن لديك الأذونات التالية في مساحة العمل:
إنشاء نقاط النهاية والنشرات الدفعية أو إدارتها: استخدم دور المالك أو المساهم أو الدور المخصص الذي يسمح .
Microsoft.MachineLearningServices/workspaces/batchEndpoints/*
إنشاء عمليات نشر ARM في مجموعة موارد مساحة العمل: استخدم دور المالك أو المساهم أو الدور المخصص الذي يسمح
Microsoft.Resources/deployments/write
به في مجموعة الموارد حيث يتم نشر مساحة العمل.
تحتاج إلى تثبيت البرنامج التالي للعمل مع Azure التعلم الآلي:
Azure CLI وملحق
ml
Azure التعلم الآلي.az extension add -n ml
إشعار
تم تقديم عمليات نشر مكونات البنية الأساسية لبرنامج ربط العمليات التجارية لنقاط النهاية الدفعية في الإصدار 2.7 من
ml
الملحق ل Azure CLI. استخدمaz extension update --name ml
للحصول على الإصدار الأخير منه.
الاتصال بمساحة العمل
مساحة العمل هي المورد ذو المستوى الأعلى للتعلم الآلي من Microsoft Azure، حيث توفر مكانًا مركزيًا للعمل مع جميع البيانات الاصطناعية التي تنشئها عند استخدام التعلم الآلي من Microsoft Azure. في هذا القسم، سنتصل بمساحة العمل التي ستؤدي فيها مهام التوزيع.
قم بتمرير قيم معرف الاشتراك ومساحة العمل والموقع ومجموعة الموارد في التعليمات البرمجية التالية:
az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
الخطوات
اتبع هذه الخطوات لنشر نموذج MLflow إلى نقطة نهاية دفعية لتشغيل الاستدلال الدفعي على البيانات الجديدة:
يمكن لنقطة نهاية الدفعة نشر النماذج المسجلة فقط. في هذه الحالة، لدينا بالفعل نسخة محلية من النموذج في المستودع، لذلك نحتاج فقط إلى نشر النموذج إلى السجل في مساحة العمل. يمكنك تخطي هذه الخطوة إذا كان النموذج الذي تحاول نشره مسجلا بالفعل.
قبل المضي قدما، نحتاج إلى التأكد من أن عمليات توزيع الدفعات التي نحن على وشك إنشائها يمكن تشغيلها على بعض البنية الأساسية (الحساب). يمكن تشغيل عمليات توزيع الدفعات على أي حساب Azure التعلم الآلي موجود بالفعل في مساحة العمل. وهذا يعني أن عمليات نشر دفعات متعددة يمكن أن تشترك في نفس البنية الأساسية للحساب. في هذا المثال، سنعمل على مجموعة حساب Azure التعلم الآلي تسمى
cpu-cluster
. لنتحقق من وجود الحساب على مساحة العمل أو إنشائها بخلاف ذلك.الآن حان الوقت لإنشاء نقطة نهاية الدفعة والنشر. لنبدأ بنقطة النهاية أولا. تتطلب نقاط النهاية اسما ووصفا فقط ليتم إنشاؤها. سينتهي اسم نقطة النهاية في URI المقترن بنقطة النهاية الخاصة بك. ولهذا السبب، يجب أن تكون أسماء نقاط النهاية الدفعية فريدة داخل منطقة Azure. على سبيل المثال، يمكن أن تكون هناك نقطة نهاية دفعة واحدة فقط بالاسم
mybatchendpoint
فيwestus2
.أنشئ نقطة النهاية:
لإنشاء نقطة نهاية جديدة، قم بإنشاء
YAML
تكوين كما يلي:endpoint.yml
$schema: https://azuremlschemas.azureedge.net/latest/batchEndpoint.schema.json name: heart-classifier-batch description: A heart condition classifier for batch inference auth_mode: aad_token
ثم قم بإنشاء نقطة النهاية باستخدام الأمر التالي:
az ml batch-endpoint create -n $ENDPOINT_NAME -f endpoint.yml
الآن، اسمح بإنشاء النشر. لا تتطلب منك نماذج MLflow الإشارة إلى بيئة أو برنامج نصي لتسجيل النقاط عند إنشاء عمليات التوزيع أثناء إنشائها لك. ومع ذلك، يمكنك تحديدها إذا كنت تريد تخصيص كيفية استنتاج التوزيع.
لإنشاء نشر جديد ضمن نقطة النهاية التي تم إنشاؤها، قم بإنشاء
YAML
تكوين كما يلي. يمكنك التحقق من مخطط YAML لنقطة نهاية الدفعة الكاملة للحصول على خصائص إضافية.deployment-simple/deployment.yml
$schema: https://azuremlschemas.azureedge.net/latest/modelBatchDeployment.schema.json endpoint_name: heart-classifier-batch name: classifier-xgboost-mlflow description: A heart condition classifier based on XGBoost type: model model: azureml:heart-classifier-mlflow@latest compute: azureml:batch-cluster resources: instance_count: 2 settings: max_concurrency_per_instance: 2 mini_batch_size: 2 output_action: append_row output_file_name: predictions.csv retry_settings: max_retries: 3 timeout: 300 error_threshold: -1 logging_level: info
ثم قم بإنشاء النشر باستخدام الأمر التالي:
az ml batch-deployment create --file deployment-simple/deployment.yml --endpoint-name $ENDPOINT_NAME --set-default
هام
تكوين
timeout
في النشر الخاص بك استنادا إلى المدة التي يستغرقها النموذج الخاص بك لتشغيل الاستدلال على دفعة واحدة. كلما كان حجم الدفعة أكبر كلما طالت مدة هذه القيمة. Remeber الذيmini_batch_size
يشير إلى عدد الملفات في دفعة، وليس عدد العينات. عند العمل مع البيانات الجدولية، قد يحتوي كل ملف على صفوف متعددة مما سيزيد من الوقت المستغرق لنقطة نهاية الدفعة لمعالجة كل ملف. استخدم القيم العالية على هذه الحالات لتجنب أخطاء المهلة.على الرغم من أنه يمكنك استدعاء نشر معين داخل نقطة نهاية، فسترغب عادة في استدعاء نقطة النهاية نفسها والسماح لنقطة النهاية بتحديد التوزيع الذي يجب استخدامه. يسمى هذا النشر التوزيع "الافتراضي". يمنحك هذا إمكانية تغيير النشر الافتراضي وبالتالي تغيير النموذج الذي يخدم النشر دون تغيير العقد مع المستخدم الذي يستدعي نقطة النهاية. استخدم الإرشادات التالية لتحديث النشر الافتراضي:
عند هذه النقطة، تكون نقطة النهاية الدفعية جاهزة للاستخدام.
اختبار التوزيع
لاختبار نقطة النهاية الخاصة بنا، سنستخدم عينة من البيانات غير المسماة الموجودة في هذا المستودع والتي يمكن استخدامها مع النموذج. يمكن لنقاط النهاية الدفعية معالجة البيانات الموجودة في السحابة والتي يمكن الوصول إليها من مساحة عمل Azure التعلم الآلي فقط. في هذا المثال، سنقوم بتحميله إلى مخزن بيانات Azure التعلم الآلي. على وجه الخصوص، سنقوم بإنشاء أصل بيانات يمكن استخدامه لاستدعاء نقطة النهاية لتسجيل النقاط. ومع ذلك، لاحظ أن نقاط النهاية الدفعية تقبل البيانات التي يمكن وضعها في مواقع مختلفة.
دعونا ننشئ أصل البيانات أولا. يتكون أصل البيانات هذا من مجلد يحتوي على ملفات CSV متعددة نريد معالجتها بالتوازي باستخدام نقاط نهاية الدفعة. يمكنك تخطي هذه الخطوة هو أن بياناتك مسجلة بالفعل كأصل بيانات أو تريد استخدام نوع إدخال مختلف.
أ. إنشاء تعريف أصل بيانات في
YAML
:heart-dataset-unlabeled.yml
$schema: https://azuremlschemas.azureedge.net/latest/data.schema.json name: heart-dataset-unlabeled description: An unlabeled dataset for heart classification. type: uri_folder path: data
ب. إنشاء أصل البيانات:
az ml data create -f heart-dataset-unlabeled.yml
الآن بعد تحميل البيانات وجاهزة للاستخدام، دعنا نستدعي نقطة النهاية:
JOB_NAME = $(az ml batch-endpoint invoke --name $ENDPOINT_NAME --input azureml:heart-dataset-unlabeled@latest --query name -o tsv)
إشعار
قد لا يتم تثبيت الأداة المساعدة
jq
على كل تثبيت. يمكنك الحصول على إرشادات التثبيت في هذا الارتباط.تلميح
لاحظ كيف أننا لا نشير إلى اسم النشر في عملية الاستدعاء. وذلك لأن نقطة النهاية توجه المهمة تلقائيا إلى النشر الافتراضي. نظرا لأن نقطة النهاية لدينا تحتوي على نشر واحد فقط، فإن هذه هي النقطة الافتراضية. يمكنك استهداف توزيع معين عن طريق الإشارة إلى الوسيطة/المعلمة
deployment_name
.يتم بدء مهمة دفعية بمجرد إرجاع الأمر. يمكنك مراقبة حالة المهمة حتى تنتهي:
تحليل المخرجات
يتم إنشاء تنبؤات الإخراج في predictions.csv
الملف كما هو موضح في تكوين النشر. تنشئ الوظيفة إخراجا مسمى يسمى score
حيث يتم وضع هذا الملف. يتم إنشاء ملف واحد فقط لكل مهمة دفعية.
يتم تنظيم الملف كما يلي:
يوجد صف واحد لكل نقطة بيانات تم إرسالها إلى النموذج. بالنسبة للبيانات الجدولية، فهذا يعني أن الملف (
predictions.csv
) يحتوي على صف واحد لكل صف موجود في كل ملف من الملفات المعالجة. بالنسبة إلى أنواع البيانات الأخرى (مثل الصور والصوت والنص)، يوجد صف واحد لكل ملف تمت معالجته.الأعمدة التالية في الملف (بالترتيب):
row
(اختياري)، فهرس الصف المقابل في ملف بيانات الإدخال. ينطبق هذا فقط إذا كانت بيانات الإدخال جدولية. يتم إرجاع التنبؤات بنفس الترتيب الذي تظهر به في ملف الإدخال حتى تتمكن من الاعتماد على رقم الصف لمطابقة التنبؤ المقابل.prediction
، التنبؤ المقترن ببيانات الإدخال. يتم إرجاع هذه القيمة "كما هي" التي تم توفيرها بواسطة دالة النموذجpredict().
.file_name
، اسم الملف الذي تمت قراءة البيانات منه. في البيانات الجدولية، استخدم هذا الحقل لمعرفة التنبؤ الذي ينتمي إلى بيانات الإدخال.
يمكنك تنزيل نتائج الوظيفة باستخدام اسم الوظيفة:
لتنزيل التنبؤات، استخدم الأمر التالي:
az ml job download --name $JOB_NAME --output-name score --download-path ./
بمجرد تنزيل الملف، يمكنك فتحه باستخدام الأداة المفضلة لديك. يقوم المثال التالي بتحميل التنبؤات باستخدام Pandas
إطار البيانات.
import pandas as pd
score = pd.read_csv(
"named-outputs/score/predictions.csv", names=["row", "prediction", "file"]
)
يبدو الإخراج كما يلي:
الصف | التنبؤ | ملف |
---|---|---|
1 | 1 | heart-unlabeled-0.csv |
1 | 1 | heart-unlabeled-0.csv |
2 | 0 | heart-unlabeled-0.csv |
... | ... | ... |
307 | 0 | heart-unlabeled-3.csv |
تلميح
لاحظ أن بيانات الإدخال في هذا المثال كانت بيانات جدولية بتنسيق CSV
وكان هناك 4 ملفات إدخال مختلفة (heart-unlabeled-0.csv heart-unlabeled-1.csv heart-unlabeled-2.csv heart-unlabeled-3.csv).
اعتبارات عند التوزيع للاستدلال الدفعي
يدعم Azure التعلم الآلي نشر نماذج MLflow إلى نقاط نهاية الدفعة دون الإشارة إلى برنامج نصي لتسجيل النقاط. يمثل هذا طريقة ملائمة لتوزيع النماذج التي تتطلب معالجة كميات كبيرة من البيانات بطريقة الدُفعات. يستخدم Azure التعلم الآلي معلومات في مواصفات نموذج MLflow لتنسيق عملية الاستدلال.
كيف يتم توزيع العمل على العمال
توزع نقاط النهاية الدفعية العمل على مستوى الملف، لكل من البيانات المنظمة وغير المنظمة. ونتيجة لذلك، يتم دعم ملف URI ومجلدات URI فقط لهذه الميزة. يعالج كل عامل دفعات من Mini batch size
الملفات في المرة الواحدة. بالنسبة للبيانات الجدولية، لا تأخذ نقاط النهاية الدفعية في الاعتبار عدد الصفوف داخل كل ملف عند توزيع العمل.
تحذير
لا يتم استكشاف هياكل المجلدات المتداخلة أثناء الاستدلال. إذا كنت تقوم بتقسيم بياناتك باستخدام المجلدات، فتأكد من تبسيط البنية مسبقا.
ستستدعي عمليات النشر الدفعية دالة predict
نموذج MLflow مرة واحدة لكل ملف. بالنسبة لملفات CSV التي تحتوي على صفوف متعددة، قد يفرض هذا ضغط ذاكرة في الحساب الأساسي وقد يزيد الوقت الذي يستغرقه النموذج لتسجيل ملف واحد (خاصة للنماذج باهظة الثمن مثل نماذج اللغات الكبيرة). إذا واجهت العديد من استثناءات نفاد الذاكرة أو إدخالات المهلة في السجلات، ففكر في تقسيم البيانات في ملفات أصغر بصفوف أقل أو تنفيذ الدفعات على مستوى الصف داخل النموذج/البرنامج النصي لتسجيل النقاط.
يدعم أنواع الملفات
يتم دعم أنواع البيانات التالية للاستدلال الدفعي عند نشر نماذج MLflow دون بيئة برنامج نصي لتسجيل النقاط. إذا كنت ترغب في معالجة نوع ملف مختلف، أو تنفيذ الاستدلال بطريقة مختلفة تقوم بها نقاط النهاية الدفعية بشكل افتراضي، يمكنك دائما إنشاء النشر باستخدام برنامج نصي لتسجيل النقاط كما هو موضح في استخدام نماذج MLflow مع برنامج نصي لتسجيل النقاط.
امتداد الملف | تم إرجاع النوع كمدخلات للنموذج | متطلبات التوقيع |
---|---|---|
.csv ، ، .parquet .pqt |
pd.DataFrame |
ColSpec . إذا لم يتم توفيرها، فلن يتم فرض كتابة الأعمدة. |
.png ، .jpg ، .jpeg ، .tiff ، ، .bmp .gif |
np.ndarray |
TensorSpec . تتم إعادة تشكيل المدخلات لتتناسب مع شكل الموترات إذا كان ذلك متاحاً. في حالة عدم توفر أي توقيع، يتم استنتاج الموترات من النوع np.uint8 . للحصول على إرشادات إضافية، اقرأ اعتبارات نماذج MLflow التي تعالج الصور. |
تحذير
لاحظ أن أي ملف غير مدعوم قد يكون موجودا في بيانات الإدخال سيجعل المهمة تفشل. سترى إدخال خطأ كما يلي: "ERROR:azureml:Error processing input file: '/mnt/batch/tasks/.../a-given-file.avro'. نوع الملف 'avro' غير معتمد.".
فرض التوقيع لنماذج MLflow
يتم فرض أنواع بيانات الإدخال بواسطة مهام توزيع الدفعات أثناء قراءة البيانات باستخدام توقيع نموذج MLflow المتوفر. وهذا يعني أن إدخال البيانات يجب أن يتوافق مع الأنواع المشار إليها في توقيع النموذج. إذا تعذر تحليل البيانات كما هو متوقع، فستفشل المهمة مع ظهور رسالة خطأ مشابهة للرسالة التالية: "ERROR:azureml:Error processing input file: '/mnt/batch/tasks/.../a-given-file.csv'. الاستثناء: قيمة حرفية غير صحيحة ل int() مع الأساس 10: 'value'".
تلميح
التواقيع في نماذج MLflow اختيارية ولكن يتم تشجيعها بشدة لأنها توفر طريقة ملائمة للكشف المبكر عن مشكلات توافق البيانات. لمزيد من المعلومات حول كيفية تسجيل النماذج بالتوقيعات، اقرأ نماذج التسجيل مع توقيع مخصص أو بيئة أو عينات.
يمكنك فحص توقيع نموذج النموذج الخاص بك عن طريق فتح MLmodel
الملف المقترن بنموذج MLflow الخاص بك. لمزيد من التفاصيل حول كيفية عمل التواقيع في MLflow، راجع التواقيع في MLflow.
دعم النكهة
تدعم عمليات نشر الدفعات فقط نشر نماذج MLflow باستخدام نكهة pyfunc
. إذا كنت بحاجة إلى نشر نكهة مختلفة، فشاهد استخدام نماذج MLflow مع برنامج نصي لتسجيل النقاط.
تخصيص عمليات توزيع نماذج MLflow باستخدام برنامج نصي لتسجيل النقاط
يمكن نشر نماذج MLflow إلى نقاط نهاية الدفعة دون الإشارة إلى برنامج نصي لتسجيل النقاط في تعريف التوزيع. ومع ذلك، يمكنك الاشتراك للإشارة إلى هذا الملف (يشار إليه عادة باسم برنامج تشغيل الدفعة) لتخصيص كيفية تنفيذ الاستدلال.
عادة ما تحدد سير العمل هذا عندما:
- تحتاج إلى معالجة نوع ملف غير مدعوم من قبل عمليات نشر MLflow في الدفعات.
- تحتاج إلى تخصيص طريقة تشغيل النموذج، على سبيل المثال، استخدام نكهة معينة لتحميله مع
mlflow.<flavor>.load()
. - تحتاج إلى القيام بمعالجة ما قبل/ نقاط البيع في روتين تسجيل النقاط الخاص بك عندما لا يتم ذلك من قبل النموذج نفسه.
- لا يمكن تمثيل إخراج النموذج بشكل جيد في البيانات الجدولية. على سبيل المثال، إنه موتر يمثل صورة.
- لا يمكنك معالجة كل ملف مرة واحدة بسبب قيود الذاكرة ويحتاج إلى قراءته في مجموعات.
هام
إذا اخترت الإشارة إلى برنامج نصي لتسجيل النقاط لتوزيع نموذج MLflow، فستضطر أيضا إلى تحديد البيئة التي سيتم تشغيل النشر فيها.
الخطوات
استخدم الخطوات التالية لنشر نموذج MLflow مع برنامج نصي مخصص لتسجيل النقاط.
حدد المجلد حيث يتم وضع نموذج MLflow الخاص بك.
أ. انتقل إلى مدخل Azure التعلم الآلي.
ب. انتقل إلى قسم Models.
جـ. حدد النموذج الذي تحاول نشره وانقر فوق علامة التبويب Artifacts.
د. دون المجلد الذي يتم عرضه. تمت الإشارة إلى هذا المجلد عند تسجيل النموذج.
إنشاء برنامج نصي لتسجيل النقاط. لاحظ كيف تم تضمين اسم
model
المجلد الذي حددته من قبل في الدالةinit()
.deployment-custom/code/batch_driver.py
# Copyright (c) Microsoft. All rights reserved. # Licensed under the MIT license. import os import glob import mlflow import pandas as pd import logging def init(): global model global model_input_types global model_output_names # AZUREML_MODEL_DIR is an environment variable created during deployment # It is the path to the model folder # Please provide your model's folder name if there's one model_path = glob.glob(os.environ["AZUREML_MODEL_DIR"] + "/*/")[0] # Load the model, it's input types and output names model = mlflow.pyfunc.load(model_path) if model.metadata and model.metadata.signature: if model.metadata.signature.inputs: model_input_types = dict( zip( model.metadata.signature.inputs.input_names(), model.metadata.signature.inputs.pandas_types(), ) ) if model.metadata.signature.outputs: if model.metadata.signature.outputs.has_input_names(): model_output_names = model.metadata.signature.outputs.input_names() elif len(model.metadata.signature.outputs.input_names()) == 1: model_output_names = ["prediction"] else: logging.warning( "Model doesn't contain a signature. Input data types won't be enforced." ) def run(mini_batch): print(f"run method start: {__file__}, run({len(mini_batch)} files)") data = pd.concat( map( lambda fp: pd.read_csv(fp).assign(filename=os.path.basename(fp)), mini_batch ) ) if model_input_types: data = data.astype(model_input_types) # Predict over the input data, minus the column filename which is not part of the model. pred = model.predict(data.drop("filename", axis=1)) if pred is not pd.DataFrame: if not model_output_names: model_output_names = ["pred_col" + str(i) for i in range(pred.shape[1])] pred = pd.DataFrame(pred, columns=model_output_names) return pd.concat([data, pred], axis=1)
دعونا ننشئ بيئة حيث يمكن تنفيذ البرنامج النصي لتسجيل النقاط. نظرا لأن نموذجنا هو MLflow، يتم تحديد متطلبات conda أيضا في حزمة النموذج (لمزيد من التفاصيل حول نماذج MLflow والملفات المضمنة فيه راجع تنسيق MLmodel). سنقوم بعد ذلك ببناء البيئة باستخدام تبعيات conda من الملف. ومع ذلك، نحتاج أيضا إلى تضمين الحزمة
azureml-core
المطلوبة لنشر الدفعات.تلميح
إذا كان النموذج الخاص بك مسجلا بالفعل في سجل النموذج، يمكنك تنزيل/نسخ
conda.yml
الملف المقترن بالنموذج الخاص بك عن طريق الانتقال إلى Azure التعلم الآلي studio> Models > حدد النموذج الخاص بك من القائمة > Artifacts. افتح المجلد الجذر في التنقل وحددconda.yml
الملف المدرج. انقر فوق تنزيل محتواه أو نسخه.هام
يستخدم هذا المثال بيئة conda المحددة في
/heart-classifier-mlflow/environment/conda.yaml
. تم إنشاء هذا الملف عن طريق الجمع بين ملف تبعيات MLflow conda الأصلي وإضافة الحزمةazureml-core
. لا يمكنك استخدامconda.yml
الملف من النموذج مباشرة.تكوين التوزيع:
لإنشاء نشر جديد ضمن نقطة النهاية التي تم إنشاؤها، قم بإنشاء
YAML
تكوين كما يلي. يمكنك التحقق من مخطط YAML لنقطة نهاية الدفعة الكاملة للحصول على خصائص إضافية.توزيع مخصص/deployment.yml
$schema: https://azuremlschemas.azureedge.net/latest/modelBatchDeployment.schema.json endpoint_name: heart-classifier-batch name: classifier-xgboost-custom description: A heart condition classifier based on XGBoost type: model model: azureml:heart-classifier-mlflow@latest environment: name: batch-mlflow-xgboost image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest conda_file: environment/conda.yaml code_configuration: code: code scoring_script: batch_driver.py compute: azureml:batch-cluster resources: instance_count: 2 settings: max_concurrency_per_instance: 2 mini_batch_size: 2 output_action: append_row output_file_name: predictions.csv retry_settings: max_retries: 3 timeout: 300 error_threshold: -1 logging_level: info
دعونا ننشئ النشر الآن:
عند هذه النقطة، تكون نقطة النهاية الدفعية جاهزة للاستخدام.
تنظيف الموارد
يوصى بتشغيل التعليمات البرمجية التالية لحذف نقطة النهاية الدفعية وجميع عمليات التوزيع الأساسية. لن يتم حذف مهام تسجيل الدفعة.
az ml batch-endpoint delete --name $ENDPOINT_NAME --yes