ملف تعريف النموذج الخاص بك لتحديد استخدام الموارد

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

المتطلبات الأساسية

تفترض هذه المقالة أنك قمت بتدريب نموذج وتسجيله باستخدام Azure التعلم الآلي. راجع نموذج البرنامج التعليمي هنا للحصول على مثال للتدريب وتسجيل نموذج scikit-learn مع Azure التعلم الآلي.

التقييدات

  • لن يعمل التنميط عندما يكون سجل حاوية Azure (ACR) لمساحة العمل الخاصة بك خلف شبكة ظاهرية.

تشغيل ملف التعريف

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

من أجل تعريف النموذج الخاص بك ، ستحتاج إلى:

  • نموذج مسجل.
  • تكوين استدلال يستند إلى البرنامج النصي للإدخال وتعريف بيئة الاستدلال.
  • مجموعة بيانات جدولية أحادية العمود، حيث يحتوي كل صف على سلسلة تمثل بيانات طلب العينة.

هام

في هذه المرحلة ، ندعم فقط تنميط الخدمات التي تتوقع أن تكون بيانات طلبها عبارة عن سلسلة ، على سبيل المثال: json متسلسل بسلسلة ، نص ، صورة سلسلة متسلسلة ، إلخ. سيتم وضع محتوى كل صف من مجموعة البيانات (السلسلة) في نص طلب HTTP وإرساله إلى الخدمة التي تغلف نموذج التسجيل.

هام

نحن ندعم فقط تنميط ما يصل إلى 2 من وحدات المعالجة المركزية في ChinaEast2 ومنطقة USGovAmazon.

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

import json
from azureml.core import Datastore
from azureml.core.dataset import Dataset
from azureml.data import dataset_type_definitions

input_json = {'data': [[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
                       [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]]}
# create a string that can be utf-8 encoded and
# put in the body of the request
serialized_input_json = json.dumps(input_json)
dataset_content = []
for i in range(100):
    dataset_content.append(serialized_input_json)
dataset_content = '\n'.join(dataset_content)
file_name = 'sample_request_data.txt'
f = open(file_name, 'w')
f.write(dataset_content)
f.close()

# upload the txt file created above to the Datastore and create a dataset from it
data_store = Datastore.get_default(ws)
data_store.upload_files(['./' + file_name], target_path='sample_request_data')
datastore_path = [(data_store, 'sample_request_data' +'/' + file_name)]
sample_request_data = Dataset.Tabular.from_delimited_files(
    datastore_path, separator='\n',
    infer_column_types=True,
    header=dataset_type_definitions.PromoteHeadersBehavior.NO_HEADERS)
sample_request_data = sample_request_data.register(workspace=ws,
                                                   name='sample_request_data',
                                                   create_new_version=True)

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

from azureml.core.model import InferenceConfig, Model
from azureml.core.dataset import Dataset


model = Model(ws, id=model_id)
inference_config = InferenceConfig(entry_script='path-to-score.py',
                                   environment=myenv)
input_dataset = Dataset.get_by_name(workspace=ws, name='sample_request_data')
profile = Model.profile(ws,
            'unique_name',
            [model],
            inference_config,
            input_dataset=input_dataset)

profile.wait_for_completion(True)

# see the result
details = profile.get_details()

APPLY TO: Azure CLI ml extensionع1 v2 (معاينة)

يوضح الأمر التالي كيفية تعريف نموذج باستخدام CLI:

az ml model profile -g <resource-group-name> -w <workspace-name> --inference-config-file <path-to-inf-config.json> -m <model-id> --idi <input-dataset-id> -n <unique-name>

تلميح

لاستمرار المعلومات التي يتم إرجاعها عن طريق التنميط، استخدم العلامات أو الخصائص الخاصة بالنموذج. يؤدي استخدام العلامات أو الخصائص إلى تخزين البيانات مع النموذج في سجل النموذج. توضح الأمثلة التالية إضافة علامة جديدة تحتوي على requestedCpu المعلومات والمعلومات requestedMemoryInGb :

model.add_tags({'requestedCpu': details['requestedCpu'],
                'requestedMemoryInGb': details['requestedMemoryInGb']})
az ml model profile -g <resource-group-name> -w <workspace-name> --i <model-id> --add-tag requestedCpu=1 --add-tag requestedMemoryInGb=0.5

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