إنشاء حزم نموذج (معاينة)
حزمة النموذج هي قدرة في Azure التعلم الآلي تسمح لك بجمع جميع التبعيات المطلوبة لنشر نموذج التعلم الآلي إلى نظام أساسي لتقديم الخدمات. يوفر إنشاء الحزم قبل توزيع النماذج توزيعا قويا وموثوقا به وسير عمل MLOps أكثر كفاءة. يمكن نقل الحزم عبر مساحات العمل وحتى خارج Azure التعلم الآلي.
هام
تُعد هذه الميزة قيد الإصدار الأولي العام في الوقت الحالي. يجري توفير إصدار المعاينة هذا دون اتفاقية على مستوى الخدمة، ولا نوصي باستخدامه لأحمال عمل الإنتاج. بعض الميزات ربما لا تكون مدعمة أو بها بعض القدرات المقيدة.
لمزيد من المعلومات، راجع شروط الاستخدام التكميلية لمعاينات Microsoft Azure.
في هذه المقالة، ستتعلم كيفية حزم نموذج للتوزيع.
المتطلبات الأساسية
قبل اتباع الخطوات الواردة في هذه المقالة، تأكد من توفر المتطلبات الأساسية التالية لديك:
اشتراك Azure. في حال لم يكن لديك اشتراك Azure، فأنشئ حساباً مجانيّاً قبل البدء. جرّب الإصدار المجاني أو المدفوع من «التعلم الآلي» من Azure.
مساحة عمل للتعلم الآلي من Microsoft Azure. إذا لم يكن لديك واحدة، فاستخدم الخطوات الواردة في مقالة كيفية إدارة مساحاتالعمل لإنشاء مساحة عمل.
يتم استخدام عناصر التحكم في الوصول المستندة إلى الدور في (Azure RBAC) لمنح الوصول إلى العمليات في التعلم الآلي من Microsoft Azure. لتنفيذ الخطوات الواردة في هذه المقالة، يجب تعيين دور المالك أو المساهم لحساب المستخدم الخاص بك لمساحة عمل Azure التعلم الآلي أو دور مخصص. لمزيدٍ من المعلومات، راجع إدارة الوصول إلى مساحة عمل Azure Machine Learning.
حول هذا المثال
في هذا المثال، ستتعلم كيفية حزم النماذج في Azure التعلم الآلي.
نسخ المستودع
يستند المثال في هذه المقالة إلى نماذج التعليمات البرمجية الموجودة في مستودع أمثلة azureml. لتشغيل الأوامر محليا دون الحاجة إلى نسخ/لصق YAML والملفات الأخرى، قم أولا باستنساخ المستودع ثم تغيير الدلائل إلى المجلد:
git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples/cli
يستخدم هذا القسم المثال في نقاط نهاية المجلد /online/deploy-packages/custom-model.
الاتصال بمساحة العمل
الاتصال إلى مساحة عمل Azure التعلم الآلي حيث ستقوم بعملك.
az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
حزم نموذج
يمكنك إنشاء حزم نماذج بشكل صريح للسماح لك بالتحكم في كيفية إجراء عملية التعبئة والتغليف. استخدم سير العمل هذا عندما:
- تريد تخصيص كيفية إنشاء حزمة النموذج.
- تريد نشر حزمة النموذج خارج Azure التعلم الآلي.
- تريد استخدام حزم النموذج في سير عمل MLOps.
يمكنك إنشاء حزم نموذج عن طريق تحديد:
- نموذج إلى حزمة: يمكن أن تحتوي كل حزمة نموذج على نموذج واحد فقط. لا يدعم Azure التعلم الآلي حزم نماذج متعددة ضمن حزمة النموذج نفسها.
- البيئة الأساسية: تستخدم البيئات للإشارة إلى الصورة الأساسية، وفي حزم Python تعتمد التبعيات التي يحتاجها النموذج الخاص بك. بالنسبة لنماذج MLflow، يقوم Azure التعلم الآلي تلقائيا بإنشاء البيئة الأساسية. بالنسبة للنماذج المخصصة، تحتاج إلى تحديدها.
- خدمة التكنولوجيا: مكدس الاستدلال المستخدم لتشغيل النموذج.
تسجيل النموذج
تتطلب حزم النموذج تسجيل النموذج إما في مساحة العمل الخاصة بك أو في سجل Azure التعلم الآلي. في هذا المثال، لديك بالفعل نسخة محلية من النموذج في المستودع، لذلك تحتاج فقط إلى نشر النموذج إلى السجل في مساحة العمل. يمكنك تخطي هذا القسم إذا كان النموذج الذي تحاول نشره مسجلا بالفعل.
MODEL_NAME='sklearn-regression'
MODEL_PATH='model'
az ml model create --name $MODEL_NAME --path $MODEL_PATH --type custom_model
إنشاء البيئة الأساسية
تستخدم البيئات الأساسية للإشارة إلى الصورة الأساسية وتبعيات حزمة Python النموذجية. يتطلب نموذجنا استخدام الحزم التالية كما هو موضح في ملف conda:
conda.yaml
name: model-env
channels:
- conda-forge
dependencies:
- python=3.9
- numpy=1.23.5
- pip=23.0.1
- scikit-learn=1.2.2
- scipy=1.10.1
- xgboost==1.3.3
إشعار
كيف تختلف البيئة الأساسية عن البيئة التي تستخدمها لنشر النموذج إلى نقاط النهاية عبر الإنترنت والدفعة؟ عند نشر النماذج إلى نقاط النهاية، تحتاج بيئتك إلى تضمين تبعيات النموذج وحزم Python المطلوبة لنقاط النهاية المدارة عبر الإنترنت للعمل. وهذا يجلب عملية يدوية في النشر، حيث يجب عليك الجمع بين متطلبات النموذج الخاص بك ومتطلبات النظام الأساسي لخدمة. من ناحية أخرى، فإن استخدام حزم النموذج يزيل هذا الاحتكاك، حيث سيتم إدخال الحزم المطلوبة لخادم الاستدلال تلقائيا في حزمة النموذج في وقت التعبئة والتغليف.
إنشاء البيئة كما يلي:
إنشاء تعريف بيئة:
sklearn-regression-env.yml
$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: sklearn-regression-env
image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu22.04
conda_file: conda.yaml
description: An environment for models built with XGBoost and Scikit-learn.
ثم قم بإنشاء البيئة:
az ml environment create -f environment/sklearn-regression-env.yml
إنشاء مواصفات حزمة
يمكنك إنشاء حزم نماذج في Azure التعلم الآلي، باستخدام Azure CLI أو Azure التعلم الآلي SDK ل Python. تدعم مواصفات الحزمة المخصصة السمات التالية:
السمة | النوع | الوصف | مطلوب |
---|---|---|---|
target_environment |
str |
اسم الحزمة المراد إنشاؤها. نتيجة عملية الحزمة هي بيئة في Azure التعلم الآلي. | نعم |
base_environment_source |
object |
الصورة الأساسية التي يجب استخدامها لإنشاء الحزمة حيث يتم تحديد تبعيات النموذج. | نعم، ما لم يكن النموذج هو MLflow. |
base_environment_source.type |
str |
نوع الصورة الأساسية. يتم دعم استخدام بيئة أخرى فقط كصورة أساسية (type: environment_asset ). |
|
base_environment_source.resource_id |
str |
معرف المورد للبيئة الأساسية المراد استخدامها. استخدام تنسيق azureml:<name>:<version> أو معرف مورد طويل. |
|
inferencing_server |
object |
خادم الاستدلال لاستخدامه. | نعم |
inferencing_server.type |
azureml_online custom |
استخدم azureml_online لخادم الاستدلال التعلم الآلي Azure، أو custom لخادم مخصص عبر الإنترنت مثل خدمة TensorFlow أو خدمة Torch. |
نعم |
inferencing_server.code_configuration |
object |
تكوين التعليمات البرمجية مع روتين الاستدلال. يجب أن يحتوي على ملف Python واحد على الأقل مع أساليب init و run . |
نعم، ما لم يكن النموذج هو MLflow. |
model_configuration |
object |
تكوين النموذج. استخدم هذه السمة للتحكم في كيفية حزم النموذج في الصورة الناتجة. | لا |
model_configuration.mode |
download copy |
الإشارة إلى كيفية وضع النموذج في الحزمة. القيم المحتملة هي download (افتراضي) و copy . استخدم download عندما تريد تنزيل النموذج من سجل النموذج في وقت النشر. ينشئ هذا الخيار صور docker أصغر نظرا لعدم تضمين النموذج عليه. استخدم copy عندما تريد قطع اتصال الصورة ب Azure التعلم الآلي. سيتم نسخ النموذج داخل صورة docker في وقت الحزمة. copy غير معتمد على مساحات العمل الخاصة الممكنة للارتباط. |
لا |
إنشاء مواصفات حزمة كما يلي:
package-moe.yml
$schema: http://azureml/sdk-2-0/ModelVersionPackage.json base_environment_source: type: environment_asset resource_id: azureml:sklearn-regression-env:1 target_environment: sklearn-regression-online-pkg inferencing_server: type: azureml_online code_configuration: code: src scoring_script: score.py
بدء عملية حزمة النموذج:
نتيجة عملية الحزمة هي بيئة.
حزم نموذج له تبعيات في موجزات Python الخاصة
يمكن لحزم النماذج حل تبعيات Python المتوفرة في الموجزات الخاصة. لاستخدام هذه الإمكانية، تحتاج إلى إنشاء اتصال من مساحة العمل الخاصة بك إلى الموجز وتحديد تكوين الرمز المميز PAT. توضح التعليمات البرمجية Python التالية كيف يمكنك تكوين مساحة العمل حيث تقوم بتشغيل عملية الحزمة.
from azure.ai.ml.entities import WorkspaceConnection
from azure.ai.ml.entities import PatTokenConfiguration
# fetching secrets from env var to secure access, these secrets can be set outside or source code
git_pat = os.environ["GIT_PAT"]
credentials = PatTokenConfiguration(pat=git_pat)
ws_connection = WorkspaceConnection(
name="<workspace_connection_name>",
target="<git_url>",
type="git",
credentials=credentials,
)
ml_client.connections.create_or_update(ws_connection)
بمجرد إنشاء الاتصال، أنشئ حزمة النموذج كما هو موضح في قسم حزمة نموذج. في المثال التالي، تستخدم البيئة الأساسية للحزمة موجزا خاصا لتبعية bar
Python ، كما هو محدد في ملف conda التالي:
conda.yml
name: foo
channels:
- defaults
dependencies:
- python
- pip
- pip:
- --extra-index-url <python_feed_url>
- bar
إذا كنت تستخدم نموذج MLflow، تتم الإشارة إلى تبعيات النموذج داخل النموذج نفسه، وبالتالي لا توجد حاجة إلى بيئة أساسية. بدلا من ذلك، حدد تبعيات الموجز الخاصة عند تسجيل النموذج، كما هو موضح في نماذج التسجيل مع توقيع مخصص أو بيئة أو عينات.
حزم نموذج مستضاف في سجل
توفر حزم النماذج طريقة ملائمة لجمع التبعيات قبل النشر. ومع ذلك، عندما تتم استضافة النماذج في السجلات، يكون هدف التوزيع عادة مساحة عمل أخرى. عند إنشاء حزم في هذا الإعداد، استخدم الخاصية target_environment
لتحديد الموقع الكامل حيث تريد إنشاء حزمة النموذج، بدلا من اسمها فقط.
تنشئ التعليمات البرمجية التالية حزمة t5-base
من النموذج من سجل:
الاتصال إلى السجل حيث يوجد النموذج ومساحة العمل التي تحتاج فيها إلى إنشاء حزمة النموذج:
احصل على مرجع إلى النموذج الذي تريد حزمه. في هذه الحالة، نقوم بتعبئة النموذج
t5-base
منazureml
السجل.تكوين مواصفات الحزمة. نظرا لأن النموذج الذي نريد حزمه هو MLflow، فإن البيئة الأساسية والبرنامج النصي لتسجيل النقاط اختياري.
ابدأ العملية لإنشاء حزمة النموذج:
يتم الآن إنشاء الحزمة في مساحة العمل الهدف وجاهزة للتوزيع.
نماذج الحزمة للنشر خارج Azure التعلم الآلي
يمكن نشر حزم النموذج خارج Azure التعلم الآلي إذا لزم الأمر. لضمان قابلية النقل، تحتاج فقط إلى التأكد من تعيين الوضع على copy
تكوين النموذج في الحزمة بحيث يتم نسخ النموذج نفسه داخل صورة docker التي تم إنشاؤها بدلا من الرجوع إليها من سجل النموذج في Azure التعلم الآلي.
توضح التعليمات البرمجية التالية كيفية التكوين copy
في حزمة نموذج:
package-external.yml
$schema: http://azureml/sdk-2-0/ModelVersionPackage.json
base_environment_source:
type: environment_asset
resource_id: azureml:sklearn-regression-env:1
target_environment: sklearn-regression-docker-pkg
inferencing_server:
type: azureml_online
code_configuration:
code: src
scoring_script: score.py
model_configuration:
mode: copy
الخطوة التالية
- حزم نموذج ونشره في نقاط النهاية عبر الإنترنت.
- حزم نموذج ونشره في App Service.