إنشاء الوظائف وبيانات الإدخال لنقاط نهاية الدفعة

يمكن استخدام نقاط النهاية الدفعية لتنفيذ عمليات دفعية طويلة على كميات كبيرة من البيانات. ويمكن وضع هذه البيانات في أماكن مختلفة. يمكن أن يتلقى بعض أنواع نقاط النهاية الدفعية أيضا معلمات حرفية كمدخلات. سنغطي في هذا البرنامج التعليمي كيف يمكنك تحديد هذه المدخلات والأنواع أو المواقع المختلفة المدعومة.

قبل استدعاء نقطة نهاية

لاستدعاء نقطة نهاية دفعية وإنشاء وظائف بنجاح، تأكد من أن لديك ما يلي:

  • لديك أذونات لتشغيل نشر نقطة نهاية دفعية. يمكن استخدام أدوار عالم بيانات AzureML والمساهم والمالك لتشغيل عملية نشر. بالنسبة لتعريفات الأدوار المخصصة، اقرأ التخويل على نقاط النهاية الدفعية لمعرفة الأذونات المحددة المطلوبة.

  • لديك رمز مميز صالح لمعرف Microsoft Entra يمثل أساس أمان لاستدعاء نقطة النهاية. يمكن أن يكون هذا الأساسي كيان مستخدم أو كيان خدمة. على أي حال، بمجرد استدعاء نقطة نهاية، يتم إنشاء مهمة نشر دفعة ضمن الهوية المقترنة بالرمز المميز. لأغراض الاختبار، يمكنك استخدام بيانات الاعتماد الخاصة بك للادعاء كما هو مذكور أدناه.

    استخدم Azure CLI لتسجيل الدخول باستخدام مصادقة تفاعلية أو مصادقة رمز الجهاز:

    az login
    

    لمعرفة المزيد حول كيفية المصادقة باستخدام أنواع متعددة من بيانات الاعتماد، اقرأ التخويل على نقاط نهاية الدفعة.

  • نظام مجموعة الحوسبة حيث يتم نشر نقطة النهاية لديه حق الوصول لقراءة بيانات الإدخال.

    تلميح

    إذا كنت تستخدم مخزن بيانات بدون بيانات اعتماد أو حساب تخزين Azure خارجي كإدخل للبيانات، فتأكد من تكوين مجموعات الحوسبة للوصول إلى البيانات. يتم استخدام الهوية المدارة لمجموعة الحوسبة لتحميل حساب التخزين. لا تزال هوية المهمة (المستدعي) تستخدم لقراءة البيانات الأساسية التي تسمح لك بتحقيق التحكم في الوصول متعدد المستويات.

إنشاء أساسيات الوظائف

لإنشاء مهمة من نقطة نهاية دفعية، يجب عليك استدعاؤها. يمكن إجراء الاستدعاء باستخدام Azure CLI أو Azure التعلم الآلي SDK ل Python أو استدعاء REST API. توضح الأمثلة التالية أساسيات استدعاء نقطة نهاية دفعية تتلقى مجلد بيانات إدخال واحد للمعالجة. راجع فهم المدخلات والمخرجات للحصول على أمثلة ذات مدخلات ومخرجات مختلفة.

استخدم العملية ضمن invoke نقاط النهاية الدفعية:

az ml batch-endpoint invoke --name $ENDPOINT_NAME \
                            --input https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data

استدعاء توزيع معين

يمكن أن تستضيف نقاط النهاية الدفعية عمليات نشر متعددة ضمن نفس نقطة النهاية. يتم استخدام نقطة النهاية الافتراضية ما لم يحدد المستخدم خلاف ذلك. يمكنك تغيير النشر المستخدم كما يلي:

استخدم الوسيطة --deployment-name أو -d لتحديد اسم النشر:

az ml batch-endpoint invoke --name $ENDPOINT_NAME \
                            --deployment-name $DEPLOYMENT_NAME \
                            --input https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data

تكوين خصائص المهمة

يمكنك تكوين بعض الخصائص في الوظيفة التي تم إنشاؤها في وقت استدعاء.

إشعار

يتوفر تكوين خصائص المهمة فقط في نقاط نهاية الدفعة مع عمليات نشر مكونات البنية الأساسية لبرنامج ربط العمليات التجارية في الوقت الحالي.

تكوين اسم التجربة

استخدم الوسيطة --experiment-name لتحديد اسم التجربة:

az ml batch-endpoint invoke --name $ENDPOINT_NAME \
                            --experiment-name "my-batch-job-experiment" \
                            --input https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data

فهم المدخلات والمخرجات

توفر نقاط النهاية الدفعية واجهة برمجة تطبيقات دائمة يمكن للمستهلكين استخدامها لإنشاء وظائف دفعية. يمكن استخدام نفس الواجهة لتحديد المدخلات والمخرجات التي يتوقعها التوزيع. استخدم الإدخالات لتمرير أي معلومات تحتاجها نقطة النهاية لتنفيذ المهمة.

رسم تخطيطي يوضح كيفية استخدام المدخلات والمخرجات في نقاط نهاية الدفعة.

تدعم نقاط النهاية الدفعية نوعين من المدخلات:

  • مدخلات البيانات، وهي المؤشرات إلى موقع تخزين معين أو أصل Azure التعلم الآلي.
  • المدخلات الحرفية، وهي قيم حرفية (مثل الأرقام أو السلاسل) التي تريد تمريرها إلى المهمة.

يعتمد عدد ونوع المدخلات والمخرجات على نوع توزيع الدفعات. تتطلب عمليات نشر النموذج دائما إدخال بيانات واحدا وتنتج إخراج بيانات واحدا. المدخلات الحرفية غير مدعومة. ومع ذلك، توفر عمليات نشر مكونات البنية الأساسية لبرنامج ربط العمليات التجارية بنية أكثر عمومية لإنشاء نقاط النهاية وتسمح لك بتحديد أي عدد من المدخلات (البيانات والقيم الحرفية) والمخرجات.

يلخص الجدول التالي المدخلات والمخرجات الخاصة بنشر الدفعات:

نوع التوزيع رقم الإدخال أنواع الإدخالات المدعومة رقم الإخراج أنواع الإخراج المدعومة
توزيع النموذج 1 مدخلات البيانات 1 مخرجات البيانات
نشر مكون البنية الأساسية لبرنامج ربط العمليات التجارية [0.N] مدخلات البيانات والمدخلات الحرفية [0.N] مخرجات البيانات

تلميح

تتم تسمية المدخلات والمخرجات دائما. تعمل هذه الأسماء كمفاتيح لتعريفها وتمرير القيمة الفعلية أثناء استدعاء . بالنسبة إلى عمليات نشر النموذج، نظرا لأنها تتطلب دائما إدخالا وإخراجا واحدا، يتم تجاهل الاسم أثناء استدعاء . يمكنك تعيين الاسم الذي يصف حالة الاستخدام الخاصة بك على أفضل نحو، مثل "sales_estimation".

مدخلات البيانات

تشير مدخلات البيانات إلى المدخلات التي تشير إلى موقع يتم فيه وضع البيانات. نظرا لأن نقاط النهاية الدفعية تستهلك عادة كميات كبيرة من البيانات، فلا يمكنك تمرير بيانات الإدخال كجزء من طلب استدعاء. بدلا من ذلك، يمكنك تحديد الموقع الذي يجب أن تنتقل إليه نقطة نهاية الدفعة للبحث عن البيانات. يتم تحميل بيانات الإدخال ودفقها على الحساب الهدف لتحسين الأداء.

تدعم نقاط النهاية الدفعية قراءة الملفات الموجودة في خيارات التخزين التالية:

  • Azure التعلم الآلي Data Assets، بما في ذلك Folder (uri_folder) وFile (uri_file).
  • Azure التعلم الآلي Data Stores، بما في ذلك Azure Blob Storage وAzure Data Lake Storage Gen1 وAzure Data Lake Storage Gen2.
  • حسابات تخزين Azure، بما في ذلك Azure Data Lake Storage Gen1 وAzure Data Lake Storage Gen2 وAzure Blob Storage.
  • مجلدات/ملفات البيانات المحلية (Azure التعلم الآلي CLI أو Azure التعلم الآلي SDK ل Python). ومع ذلك، ينتج عن هذه العملية تحميل البيانات المحلية إلى Azure التعلم الآلي Data Store الافتراضي لمساحة العمل التي تعمل عليها.

هام

إشعار الإهمال: يتم إهمال مجموعات البيانات من النوع FileDataset (V1) وسيتم إيقافها في المستقبل. ستستمر نقاط النهاية الدفعية الحالية التي تعتمد على هذه الوظيفة في العمل ولكن نقاط النهاية الدفعية التي تم إنشاؤها باستخدام GA CLIv2 (2.4.0 والأحدث) أو واجهة برمجة تطبيقات GA REST (2022-05-01 والأحدث) لن تدعم مجموعة بيانات V1.

إدخالات القيمة الحرفية

تشير المدخلات الحرفية إلى المدخلات التي يمكن تمثيلها وحلها في وقت استدعاء، مثل السلاسل والأرقام والقيم المنطقية. عادة ما تستخدم مدخلات حرفية لتمرير المعلمات إلى نقطة النهاية كجزء من نشر مكون البنية الأساسية لبرنامج ربط العمليات التجارية. تدعم نقاط النهاية الدفعية أنواع القيم الحرفية التالية:

  • string
  • boolean
  • float
  • integer

يتم دعم المدخلات الحرفية فقط في عمليات نشر مكونات البنية الأساسية لبرنامج ربط العمليات التجارية. راجع إنشاء وظائف باستخدام مدخلات حرفية لمعرفة كيفية تحديدها.

مخرجات البيانات

تشير مخرجات البيانات إلى الموقع الذي يجب وضع نتائج وظيفة الدفعة فيه. يتم تعريف المخرجات بالاسم، ويقوم Azure التعلم الآلي تلقائيا بتعيين مسار فريد لكل إخراج مسمى. ومع ذلك، يمكنك تحديد مسار آخر إذا لزم الأمر.

هام

تدعم نقاط النهاية الدفعية فقط كتابة المخرجات في مخازن بيانات Azure Blob Storage. إذا كنت بحاجة إلى الكتابة إلى حساب تخزين مع تمكين مساحات أسماء هرمية (تعرف أيضا باسم Azure Datalake Gen2 أو ADLS Gen2)، لاحظ أنه يمكن تسجيل خدمة التخزين هذه كمخزن بيانات Azure Blob Storage نظرا لأن الخدمات متوافقة تماما. بهذه الطريقة، يمكنك كتابة المخرجات من نقاط نهاية الدفعة إلى ADLS Gen2.

إنشاء وظائف باستخدام مدخلات البيانات

توضح الأمثلة التالية كيفية إنشاء وظائف، وأخذ مدخلات البيانات من أصول البيانات، ومخازن البيانات، وحسابات تخزين Azure.

إدخال البيانات من أصل بيانات

يتم دعم أصول بيانات Azure التعلم الآلي (المعروفة سابقا باسم مجموعات البيانات) كمدخلات للوظائف. اتبع هذه الخطوات لتشغيل مهمة نقطة نهاية دفعية باستخدام البيانات المخزنة في أصل بيانات مسجل في Azure التعلم الآلي:

تحذير

أصول البيانات من نوع جدول (MLTable) غير مدعومة حاليا.

  1. قم أولا بإنشاء أصل البيانات. يتكون أصل البيانات هذا من مجلد يحتوي على ملفات 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: heart-classifier-mlflow/data
    

    ثم قم بإنشاء أصل البيانات:

    az ml data create -f heart-dataset-unlabeled.yml
    
  2. إنشاء الإدخال أو الطلب:

    DATASET_ID=$(az ml data show -n heart-dataset-unlabeled --label latest | jq -r .id)
    

    إشعار

    سيبدو معرف أصول البيانات مثل /subscriptions/<subscription>/resourcegroups/<resource-group>/providers/Microsoft.MachineLearningServices/workspaces/<workspace>/data/<data-asset>/versions/<version>. يمكنك أيضا استخدام azureml:/<datasset_name>@latest كطريقة لتحديد الإدخال.

  3. تشغيل نقطة النهاية:

    استخدم الوسيطة --set لتحديد الإدخال:

    az ml batch-endpoint invoke --name $ENDPOINT_NAME \
        --set inputs.heart_dataset.type="uri_folder" inputs.heart_dataset.path=$DATASET_ID
    

    بالنسبة لنقطة نهاية تخدم نشر نموذج، يمكنك استخدام الوسيطة --input لتحديد إدخال البيانات، حيث يتطلب نشر النموذج دائما إدخال بيانات واحدا فقط.

    az ml batch-endpoint invoke --name $ENDPOINT_NAME --input $DATASET_ID
    

    تميل الوسيطة --set إلى إنتاج أوامر طويلة عند تحديد إدخالات متعددة. في مثل هذه الحالات، ضع مدخلاتك في YAML ملف واستخدم --file لتحديد المدخلات التي تحتاجها لاستدعاء نقطة النهاية.

    inputs.yml

    inputs:
      heart_dataset: azureml:/<datasset_name>@latest
    
    az ml batch-endpoint invoke --name $ENDPOINT_NAME --file inputs.yml
    

إدخال البيانات من مخازن البيانات

يمكن الرجوع إلى البيانات من Azure التعلم الآلي مخازن البيانات المسجلة مباشرة بواسطة مهام توزيع الدفعات. في هذا المثال، يمكنك أولا تحميل بعض البيانات إلى مخزن البيانات الافتراضي في مساحة عمل Azure التعلم الآلي ثم تشغيل نشر دفعة عليها. اتبع هذه الخطوات لتشغيل مهمة نقطة نهاية دفعية باستخدام البيانات المخزنة في مخزن بيانات.

  1. الوصول إلى مخزن البيانات الافتراضي في مساحة عمل Azure التعلم الآلي. إذا كانت بياناتك في مخزن مختلف، يمكنك استخدام هذا المخزن بدلا من ذلك. لست مطالبا باستخدام مخزن البيانات الافتراضي.

    DATASTORE_ID=$(az ml datastore show -n workspaceblobstore | jq -r '.id')
    

    إشعار

    سيبدو معرف مخازن البيانات مثل /subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.MachineLearningServices/workspaces/<workspace>/datastores/<data-store>.

    تلميح

    يسمى مخزن بيانات الكائن الثنائي كبير الحجم الافتراضي في مساحة العمل workspaceblobstore. يمكنك تخطي هذه الخطوة إذا كنت تعرف بالفعل معرف المورد لمخزن البيانات الافتراضي في مساحة العمل الخاصة بك.

  2. تحتاج إلى تحميل بعض البيانات النموذجية إلى مخزن البيانات. يفترض هذا المثال أنك قمت بالفعل بتحميل نموذج البيانات المضمنة في المستودع في المجلد sdk/python/endpoints/batch/deploy-models/heart-classifier-mlflow/data في المجلد heart-disease-uci-unlabeled في حساب تخزين الكائن الثنائي كبير الحجم. تأكد من القيام بذلك قبل المضي قدما.

  3. إنشاء الإدخال أو الطلب:

    ضع مسار الملف في المتغير التالي:

    DATA_PATH="heart-disease-uci-unlabeled"
    INPUT_PATH="$DATASTORE_ID/paths/$DATA_PATH"
    

    إشعار

    راجع كيفية إلحاق المسار paths بمعرف المورد لمخزن البيانات للإشارة إلى أن ما يلي هو مسار داخله.

    تلميح

    يمكنك أيضا استخدام azureml://datastores/<data-store>/paths/<data-path> كطريقة لتحديد الإدخال.

  4. تشغيل نقطة النهاية:

    استخدم الوسيطة --set لتحديد الإدخال:

    az ml batch-endpoint invoke --name $ENDPOINT_NAME \
        --set inputs.heart_dataset.type="uri_folder" inputs.heart_dataset.path=$INPUT_PATH
    

    بالنسبة لنقطة نهاية تخدم نشر نموذج، يمكنك استخدام الوسيطة --input لتحديد إدخال البيانات، حيث يتطلب نشر النموذج دائما إدخال بيانات واحدا فقط.

    az ml batch-endpoint invoke --name $ENDPOINT_NAME --input $INPUT_PATH --input-type uri_folder
    

    تميل الوسيطة --set إلى إنتاج أوامر طويلة عند تحديد إدخالات متعددة. في مثل هذه الحالات، ضع مدخلاتك في YAML ملف واستخدم --file لتحديد المدخلات التي تحتاجها لاستدعاء نقطة النهاية.

    inputs.yml

    inputs:
      heart_dataset:
        type: uri_folder
        path: azureml://datastores/<data-store>/paths/<data-path>
    
    az ml batch-endpoint invoke --name $ENDPOINT_NAME --file inputs.yml
    

    إذا كانت بياناتك عبارة عن ملف، فاستخدمها uri_file كنوع بدلا من ذلك.

إدخال البيانات من حسابات تخزين Azure

يمكن لنقاط نهاية دفعة Azure التعلم الآلي قراءة البيانات من مواقع السحابة في حسابات تخزين Azure، العامة والخاصة على حد سواء. استخدم الخطوات التالية لتشغيل مهمة نقطة نهاية دفعية باستخدام البيانات المخزنة في حساب تخزين:

إشعار

تحقق من القسم تكوين مجموعات الحوسبة للوصول إلى البيانات لمعرفة المزيد حول التكوين الإضافي المطلوب لقراءة البيانات بنجاح من مجموعات التخزين.

  1. إنشاء الإدخال أو الطلب:

    INPUT_DATA = "https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data"
    

    إذا كانت بياناتك عبارة عن ملف:

    INPUT_DATA = "https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data/heart.csv"
    
  2. تشغيل نقطة النهاية:

    استخدم الوسيطة --set لتحديد الإدخال:

    az ml batch-endpoint invoke --name $ENDPOINT_NAME \
        --set inputs.heart_dataset.type="uri_folder" inputs.heart_dataset.path=$INPUT_DATA
    

    بالنسبة لنقطة نهاية تخدم نشر نموذج، يمكنك استخدام الوسيطة --input لتحديد إدخال البيانات، حيث يتطلب نشر النموذج دائما إدخال بيانات واحدا فقط.

    az ml batch-endpoint invoke --name $ENDPOINT_NAME --input $INPUT_DATA --input-type uri_folder
    

    تميل الوسيطة --set إلى إنتاج أوامر طويلة عند تحديد إدخالات متعددة. في مثل هذه الحالات، ضع مدخلاتك في YAML ملف واستخدم --file لتحديد المدخلات التي تحتاجها لاستدعاء نقطة النهاية.

    inputs.yml

    inputs:
      heart_dataset:
        type: uri_folder
        path: https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data
    
    az ml batch-endpoint invoke --name $ENDPOINT_NAME --file inputs.yml
    

    إذا كانت بياناتك عبارة عن ملف، فاستخدمها uri_file كنوع بدلا من ذلك.

إنشاء وظائف باستخدام مدخلات حرفية

يمكن أن تأخذ عمليات نشر مكونات البنية الأساسية لبرنامج ربط العمليات التجارية مدخلات حرفية. يوضح المثال التالي كيفية تحديد إدخال يسمى score_mode، من النوع string، بقيمة append:

ضع مدخلاتك في YAML ملف واستخدمها --file لتحديد المدخلات التي تحتاجها لاستدعاء نقطة النهاية.

inputs.yml

inputs:
  score_mode:
    type: string
    default: append
az ml batch-endpoint invoke --name $ENDPOINT_NAME --file inputs.yml

يمكنك أيضا استخدام الوسيطة --set لتحديد القيمة. ومع ذلك، فإنه يميل إلى إنتاج أوامر طويلة عند تحديد إدخالات متعددة:

az ml batch-endpoint invoke --name $ENDPOINT_NAME \
    --set inputs.score_mode.type="string" inputs.score_mode.default="append"

إنشاء وظائف باستخدام مخرجات البيانات

يوضح المثال التالي كيفية تغيير الموقع حيث يتم وضع الإخراج المسمى score . للاكتمال، تقوم هذه الأمثلة أيضا بتكوين إدخال يسمى heart_dataset.

  1. استخدم مخزن البيانات الافتراضي في مساحة عمل Azure التعلم الآلي لحفظ المخرجات. يمكنك استخدام أي مخزن بيانات آخر في مساحة العمل الخاصة بك طالما أنه حساب تخزين كائن ثنائي كبير الحجم.

    DATASTORE_ID=$(az ml datastore show -n workspaceblobstore | jq -r '.id')
    

    إشعار

    سيبدو معرف مخازن البيانات مثل /subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.MachineLearningServices/workspaces/<workspace>/datastores/<data-store>.

  2. إنشاء إخراج بيانات:

    DATA_PATH="batch-jobs/my-unique-path"
    OUTPUT_PATH="$DATASTORE_ID/paths/$DATA_PATH"
    

    للاكتمال، قم أيضا بإنشاء إدخال بيانات:

    INPUT_PATH="https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data"
    

    إشعار

    راجع كيفية إلحاق المسار paths بمعرف المورد لمخزن البيانات للإشارة إلى أن ما يلي هو مسار داخله.

  3. تشغيل النشر:

    استخدم الوسيطة --set لتحديد الإدخال:

    az ml batch-endpoint invoke --name $ENDPOINT_NAME \
        --set inputs.heart_dataset.path=$INPUT_PATH \
        --set outputs.score.path=$OUTPUT_PATH
    

الخطوات التالية