إعداد تدريب AutoML للبيانات الجدولية باستخدام Azure التعلم الآلي CLI وPython SDK

ينطبق على:ملحق ML Azure CLI v2 (الحالي)Python SDK azure-ai-ml v2 (الحالي)

في هذا الدليل، تعرف على كيفية إعداد التعلم الآلي التلقائي التلقائي، وظيفة التدريب باستخدام Azure التعلم الآلي Python SDK v2. يختار التعلم الآلي خوارزمية ومعلمات تشعبية لك وينشئ نموذجاً جاهزاً للتوزيع. يقدم هذا الدليل تفاصيل عن الخيارات المختلفة التي يمكنك استخدامها لتكوين تجارب التعلم الآلي.

إذا كنت تفضل تجربة عدم استخدام التعليمات البرمجية، فيمكنك أيضاً إعداد تدريب AutoML من دون رمز في أستوديو Azure Machine Learning.

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

لاستخدام معلومات SDK، قم بتثبيت Azure التعلم الآلي SDK v2 ل Python.

لتثبيت SDK، يمكنك إما

  • إنشاء مثيل حساب، والذي قام بالفعل بتثبيت أحدث Azure التعلم الآلي Python SDK وتم تكوينه مسبقا لسير عمل التعلم الآلي. راجع إنشاء مثيل حساب Azure التعلم الآلي للحصول على مزيد من المعلومات.
  • تثبيت SDK على جهازك المحلي

إعداد مساحة العمل الخاصة بك

لتعيين مساحة العمل، تحتاج إلى توفير اشتراك ومجموعة موارد واسم مساحة العمل.

يتم استخدام تفاصيل مساحة العمل في MLClient من azure.ai.ml للحصول على مقبض إلى مساحة عمل Azure التعلم الآلي المطلوبة.

في المثال التالي، يتم استخدام مصادقة Azure الافتراضية مع تكوين مساحة العمل الافتراضية أو من أي ملف config.json ربما تكون قد نسخته في بنية المجلدات. إذا لم يتم العثور على أي config.json ، فأنت بحاجة إلى تقديم subscription_id resource_group ومساحة العمل يدويا عند إنشاء MLClient.

from azure.identity import DefaultAzureCredential
from azure.ai.ml import MLClient

credential = DefaultAzureCredential()
ml_client = None
try:
    ml_client = MLClient.from_config(credential)
except Exception as ex:
    print(ex)
    # Enter details of your Azure Machine Learning workspace
    subscription_id = "<SUBSCRIPTION_ID>"
    resource_group = "<RESOURCE_GROUP>"
    workspace = "<AZUREML_WORKSPACE_NAME>"
    ml_client = MLClient(credential, subscription_id, resource_group, workspace)

مصدر البيانات وتنسيقها

لتوفير بيانات التدريب لـ AutoML في SDK v2، يلزمك تحميلها في السحابة من خلال MLTable.

متطلبات تحميل البيانات في MLTable:

  • يجب أن تكون البيانات في نموذج مجدول.
  • يجب أن تكون القيمة المطلوب التنبؤ بها، العمود الهدف، في البيانات.

يجب أن تكون بيانات التدريب قابلة للوصول من الحساب البعيد. تقبل ML v2 الآلي (Python SDK وCLI/ YAML) أصول بيانات MLTable (الإصدار 2)، على الرغم من التوافق مع الإصدارات السابقة، فهي تدعم أيضاً الإصدار 1 من مجموعات البيانات الجدولية من الإصدار 1 (مجموعة بيانات جدولية مسجلة) من خلال نفس خصائص مجموعة بيانات الإدخال. ومع ذلك، فإن التوصية هي استخدام MLTable المتاح في الإصدار 2. في هذا المثال، نفترض أن البيانات مخزنة في المسار المحلي، ./train_data/bank_marketing_train_data.csv

يمكنك إنشاء MLTable باستخدام mltable Python SDK كما في المثال التالي:

import mltable

paths = [
    {'file': './train_data/bank_marketing_train_data.csv'}
]

train_table = mltable.from_delimited_files(paths)
train_table.save('./train_data')

تنشئ هذه التعليمة البرمجية ملفا جديدا، ./train_data/MLTableيحتوي على تنسيق الملف وإرشادات التحميل.

الآن يحتوي ./train_data المجلد على ملف تعريف MLTable بالإضافة إلى ملف البيانات، bank_marketing_train_data.csv.

لمزيد من المعلومات حول MLTable، راجع مقالة الكيفية mltable

بيانات التدريب والتحقق من الصحة والاختبار

يمكنك تحديد بيانات تدريب منفصلة ومجموعات بيانات التحقق، ومع ذلك يجب تقديم بيانات التدريب إلى المعلمة training_data في وظيفة المصنع لمهمة التعلم الآلي.

إذا لم تحدد معلمة validation_data أو n_cross_validation بشكل صريح، فإن التعلم الآلي التلقائي يطبق التقنيات الافتراضية لتحديد كيفية إجراء التحقق من الصحة. يعتمد هذا التحديد على عدد الصفوف في مجموعة البيانات المعينة لمعلمة training_data.

حجم بيانات التدريب تقنية التحقق من الصحة
أكبر من 20,000 سجل تم تطبيق تقسيم بيانات التدريب/التحقق من الصحة. الافتراضي هو أن تأخذ 10% من مجموعة بيانات التدريب الأولية كمجموعة التحقق من الصحة. في المقابل، يتم استخدام مجموعة التحقق من الصحة لحساب القياسات.
أصغر من أو يساوي 20000 صف تم تطبيق نهج التحقق المتبادل. يعتمد العدد الافتراضي للطيات على عدد السجلات.
إذا كانت مجموعة البيانات أقل من 1,000 سجل، فسيتم استخدام 10 أضعاف.
إذا كانت السجلات تساوي أو بين 1,000 و20,000، فسيتم استخدام ثلاث طيات.

حساب لتشغيل التجربة

وظائف التعلم الآلي التلقائي مع Python SDK v2 (أو CLI v2) مدعومة حاليا فقط على Azure التعلم الآلي الحوسبة عن بعد (نظام المجموعة أو مثيل الحساب).

تعرف على المزيد حول إنشاء حساب باستخدام Python SDKv2 (أو CLIv2).

تكوين إعدادات تجربتك

هناك العديد من الخيارات التي يمكنك استخدامها لتكوين تجربة التعلم الآلي. معلمات التكوين هذه هي مجموعة في أسلوب مهمتك. يمكنك أيضا تعيين إعدادات التدريب على الوظيفة ومعايير الخروج باستخدام training الإعدادات و limits .

يوضح المثال التالي المعلمات المطلوبة لمهمة التصنيف التي تحدد الدقة على أنها المقياس الأساسي وخمس طيات للتحقق من الصحة.

from azure.ai.ml.constants import AssetTypes
from azure.ai.ml import automl, Input

# note that this is a code snippet -- you might have to modify the variable values to run it successfully

# make an Input object for the training data
my_training_data_input = Input(
    type=AssetTypes.MLTABLE, path="./data/training-mltable-folder"
)

# configure the classification job
classification_job = automl.classification(
    compute=my_compute_name,
    experiment_name=my_exp_name,
    training_data=my_training_data_input,
    target_column_name="y",
    primary_metric="accuracy",
    n_cross_validations=5,
    enable_model_explainability=True,
    tags={"my_custom_tag": "My custom value"}
)

# Limits are all optional
classification_job.set_limits(
    timeout_minutes=600, 
    trial_timeout_minutes=20, 
    max_trials=5,
    enable_early_termination=True,
)

# Training properties are optional
classification_job.set_training(
    blocked_training_algorithms=["logistic_regression"], 
    enable_onnx_compatible_models=True
)

حدد نوع مهمة التعلم الآلي الخاصة بك (مشكلة ML)

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

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

الخوارزميات المدعومة

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

تحدد طريقة المهمة قائمة الخوارزميات/النماذج المطلوب تطبيقها. allowed_training_algorithms استخدم المعلمات أو blocked_training_algorithms في training تكوين مهمة AutoML لتعديل التكرارات بشكل أكبر مع النماذج المتوفرة لتضمينها أو استبعادها.

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

تصنيف التراجع التنبؤ بالسلاسل الزمنية
الانحدار اللوجستي* الشبكة المرنة* AutoARIMA
LightGBM* LightGBM* Prophet
تعزيز التدرج* تعزيز التدرج* الشبكة المرنة
شجرة القرارات* شجرة القرارات* LightGBM
أقرب بكسلات مصدر* أقرب بكسلات مصدر* أقرب بكسلات مصدر
SVC خطي* LARS Lasso* شجرة القرارات
دعم تصنيف المتجهات (SVC)* الانخفاض المتدرج العشوائي (SGD)* Arimax
المجالات العشوائية* المجالات العشوائية LARS Lasso
أشجار عشوائية للغاية* أشجار عشوائية للغاية* أشجار عشوائية للغاية*
Xgboost* Xgboost* المجالات العشوائية
Naive Bayes* Xgboost TCNForecaster
الانخفاض المتدرج العشوائي (SGD)* الانخفاض المتدرج العشوائي (SGD) تعزيز التدرج
ExponentialSmoothing
SeasonalNaive
المتوسط
Naive
SeasonalAverage

مع خوارزميات إضافية أدناه.

اتبع هذا الارتباط على سبيل المثال دفاتر الملاحظات لكل نوع مهمة.

المقياس الأساسي

تحدد المعلمة primary_metric المقياس الذي سيتم استخدامه أثناء تدريب النموذج من أجل التحسين. يتم تحديد القياسات المتاحة التي يمكنك تحديدها حسب نوع المهمة الذي تختاره.

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

تعرف على التعريفات المحددة لهذه القياسات في فهم نتائج التعلم الآلي.

قياسات تصنيف سيناريوهات الفئات المتعددة

تنطبق هذه القياسات على جميع سيناريوهات التصنيف، بما في ذلك البيانات الجدولية والصور/رؤية الكمبيوتر وNLP-Text.

قد لا يتم تحسين المقاييس المعتمدة على العتبة، مثل accuracyrecall_score_weightednorm_macro_recall، و، وprecision_score_weighted، وكذلك لمجموعات البيانات الصغيرة، أو التي تحتوي على انحراف فئة كبيرة (عدم توازن الفئة)، أو عندما تكون قيمة المقياس المتوقعة قريبة جدا من 0.0 أو 1.0. في هذه الحالات، يمكن أن يكون AUC_weighted خيارًا أفضل للمقياس الأساسي. بعد اكتمال التعلم الآلي المؤتمت، يمكنك اختيار النموذج الفائز بناءً على المقياس الأنسب لاحتياجات عملك.

Metric مثال على حالة (حالات) الاستخدام
accuracy تصنيف الصورة، تحليل المشاعر، تنبؤات الزبدة
AUC_weighted كشف الاحتيال، تصنيف الصور، كشف الأخطاء/كشف البريد العشوائي
average_precision_score_weighted تحليل التوجه
norm_macro_recall التنبؤ المضطرب
precision_score_weighted

قياسات لتصنيف سيناريوهات متعددة التسميات

  • بالنسبة لتصنيف النص، فإن التسمية المتعددة حاليا "الدقة" هي المقياس الأساسي الوحيد المدعوم.

  • بالنسبة لتصنيف الصور متعدد التصنيفات، يتم تحديد القياسات الأساسية المدعومة في ClassificationMultilabelPrimaryMetrics Enum

قياسات سيناريوهات NLP Text NER (Named Entity Recognition)

  • بالنسبة إلى NLP Text NER (Named Entity Recognition) حالياً "الدقة" هي المقياس الأساسي الوحيد المدعوم.

قياسات سيناريوهات التراجع

يحاول كل من r2_score وnormalized_mean_absolute_error وnormalized_root_mean_squared_error تقليل أخطاء التنبؤ. r2_score و normalized_root_mean_squared_error كلاهما يقللان من متوسط الأخطاء التربيعية بينما normalized_mean_absolute_error يقللان من متوسط القيمة المطلقة للأخطاء. تعالج القيمة المطلقة الأخطاء بجميع المقادير على حد سواء وستكون للأخطاء التربيعية عقوبة أكبر بكثير للأخطاء ذات القيم المطلقة الأكبر. اعتمادًا على ما إذا كان يجب معاقبة الأخطاء الكبيرة أكثر أم لا، يمكن للمرء أن يختار تحسين مربع الخطأ أو الخطأ المطلق.

الفرق الرئيسي بين r2_score و normalized_root_mean_squared_error هو الطريقة التي يتم تطبيعها ومعانيها. normalized_root_mean_squared_error هو جذر متوسط ​​التربيع للخطأ الذي تم تسويته حسب النطاق ويمكن تفسيره على أنه متوسط ​​حجم الخطأ للتنبؤ. r2_score هو متوسط ​​الخطأ التربيعي الذي تم تسويته من خلال تقدير تباين البيانات. إنها نسبة التباين التي يمكن التقاطها من قبل النموذج.

إشعار

r2_score وnormalized_root_mean_squared_error يتصرفان أيضًا بشكل مشابه للقياسات الأساسية. إذا تم تطبيق مجموعة تحقق من الصحة ثابتة، فإن هذين المقياسين يعملان على تحسين نفس الهدف، ويعني الخطأ التربيعي، وسيتم تحسينهما بنفس النموذج. عندما تتوفر مجموعة تدريب فقط ويتم تطبيق التحقق المقطعي فسيكونان مختلفين قليلاً حيث تم إصلاح المقياس لـ normalized_root_mean_squared_error كنطاق لمجموعة التدريب، لكن عامل التسوية لـ r2_score قد يختلف لكل طية لأنه تباين لكل طية.

إذا كان التصنيف، بدلاً من القيمة الدقيقة، يمكن أن يكون spearman_correlation خيارًا أفضل لأنه يقيس ارتباط التصنيف بين القيم الحقيقية والتنبؤات.

لا يدعم AutoML حاليا أي مقاييس أساسية تقيس الفرق النسبي بين التنبؤات والملاحظات. المقاييس r2_scoreو normalized_mean_absolute_errorو normalized_root_mean_squared_error كلها مقاييس للفرق المطلق. على سبيل المثال، إذا كان التنبؤ يختلف عن الملاحظة بمقدار 10 وحدات، فإن هذه المقاييس تحسب نفس القيمة إذا كانت الملاحظة 20 وحدة أو 20000 وحدة. في المقابل، فإن اختلاف النسبة المئوية، وهو مقياس نسبي، يعطي أخطاء بنسبة 50٪ و0.05٪، على التوالي! لتحسين الفرق النسبي، يمكنك تشغيل AutoML باستخدام مقياس أساسي مدعوم ثم تحديد النموذج بأفضل mean_absolute_percentage_error أو root_mean_squared_log_error. لاحظ أن هذه المقاييس غير معرفة عندما تكون أي قيم مراقبة صفرية، لذلك قد لا تكون دائما خيارات جيدة.

Metric مثال على حالة (حالات) الاستخدام
spearman_correlation
normalized_root_mean_squared_error توقع السعر (منزل/منتج/نصيحة)، توقع درجة المراجعة
r2_score تأخير Airline، تقدير الراتب، وقت دقة الأخطاء
normalized_mean_absolute_error

قياسات سيناريوهات التنبؤ بالسلاسل الزمنية

التوصيات مماثلة لتلك المذكورة لسيناريوهات التراجع.

Metric مثال على حالة (حالات) الاستخدام
normalized_root_mean_squared_error تنبؤ السعر (التنبؤ)، تحسين المخزون، التنبؤ بالطلب
r2_score تنبؤ السعر (التنبؤ)، تحسين المخزون، التنبؤ بالطلب
normalized_mean_absolute_error

قياسات سيناريوهات اكتشاف عنصر الصورة

  • بالنسبة لاكتشاف عنصر الصورة، يتم تحديد القياسات الأساسية المدعومة في ObjectDetectionPrimaryMetrics Enum

قياسات سيناريوهات تجزئة مثيل الصورة

  • بالنسبة لسيناريوهات تجزئة مثيل الصورة، يتم تحديد القياسات الأساسية المدعومة في InstanceSegmentationPrimaryMetrics Enum

تخصيص البيانات

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

إشعار

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

عند تكوين مهام التعلم الآلي التلقائية، يمكنك تمكين/تعطيل featurization الإعدادات.

يوضح الجدول التالي الإعدادات المقبولة للتخصيص.

Featurization Configuration ‏‏الوصف
"mode": 'auto' يشير إلى أنه كجزء من المعالجة المسبقة، يتم تنفيذ حواجز حماية البيانات وخطوات التكوين تلقائيًا. الإعداد الافتراضي.
"mode": 'off' يشير إلى أن خطوة التخصيص لا يجب إجراؤها تلقائيًا.
"mode": 'custom' يشير إلى أنه يجب استخدام خطوة التخصيص المخصصة.

يوضح التعليمة البرمجية التالية كيف يمكن توفير السمات المخصصة في هذه الحالة لمهمة التراجع.

from azure.ai.ml.automl import ColumnTransformer

transformer_params = {
    "imputer": [
        ColumnTransformer(fields=["CACH"], parameters={"strategy": "most_frequent"}),
        ColumnTransformer(fields=["PRP"], parameters={"strategy": "most_frequent"}),
    ],
}
regression_job.set_featurization(
    mode="custom",
    transformer_params=transformer_params,
    blocked_transformers=["LabelEncoding"],
    column_name_and_types={"CHMIN": "Categorical"},
)

معايير الخروج

هناك بعض الخيارات التي يمكنك تحديدها في الوظيفة set_limits() لإنهاء تجربتك قبل استكمال المهمة.

المعايير الوصف
لا توجد معايير إذا لم تحدد أي معلمات خروج، تستمر التجربة حتى لا يتم إحراز أي تقدم إضافي على المقياس الأساسي.
timeout يحدد المدة التي يجب أن تستمر فيها تجربتك في التشغيل في غضون دقائق. إذا لم يتم تحديدها، فإن إجمالي المهلة للوظيفة الافتراضية هو 6 أيام (8640 دقيقة). لتحديد مهلة أقل من أو تساوي ساعة واحدة (60 دقيقة)، تأكد من أن حجم مجموعة البيانات ليس أكبر من 10,000,000 (عمود أوقات الصفوف) أو نتائج خطأ.

تتضمن هذه المهلة الإعداد، والتميز، وتشغيل التدريب ولكنها لا تتضمن عمليات تشغيل شرح النموذج والإعداد في نهاية العملية حيث يجب أن تحدث هذه الإجراءات بمجرد الانتهاء من جميع التجارب (وظائف الأطفال).
trial_timeout_minutes أقصى وقت بالدقائق يمكن تشغيل كل إصدار تجريبي (مهمة فرعية) لها قبل أن تنتهي. إذا لم يتم تحديد ذلك، فسيتم استخدام قيمة شهر واحد أو 43200 دقيقة
enable_early_termination ما إذا كان سيتم إنهاء المهمة إذا لم تتحسن النتيجة على المدى القصير
max_trials الحد الأقصى لعدد التجارب/التشغيل لكل مجموعة مختلفة من الخوارزمية والمعلمات الفائقة لتجربتها أثناء مهمة AutoML. إذا لم يتم تحديده، فسيكون الافتراضي هو 1000 إصدار تجريبي. في حالة استخدام enable_early_termination، يمكن أن يكون عدد الإصدار التجريبي المستخدم أقل.
max_concurrent_trials يمثل الحد الأقصى لعدد المحاولات (وظائف فرعية) التي سيتم تنفيذها بالتوازي. إنها ممارسة جيدة لمطابقة هذا الرقم مع عدد العُقَد في نظام مجموعتك

قم بإجراء التجربة

إشعار

إذا أجريت تجربة باستخدام نفس إعدادات التكوين والمقياس الأساسي عدة مرات، فمن المحتمل أن ترى تباينًا في كل تجربة تسجلها القياسات النهائية والنماذج التي تم إنشاؤها. تستخدم خوارزميات التعلم الآلي العشوائية المتأصلة التي يمكن أن تسبب اختلافًا طفيفًا في إخراج النماذج بالتجربة ونتائج القياسات النهائية للنموذج الموصى به، مثل الدقة. من المحتمل أن ترى أيضا نتائج بنفس اسم النموذج، ولكن معلمات hyper-parameter مختلفة مستخدمة.

تحذير

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

إرسال التجربة للتشغيل وإنشاء نموذج. MLClient مع التي تم إنشاؤها في المتطلبات الأساسية، يمكنك تشغيل الأمر التالي في مساحة العمل.


# Submit the AutoML job
returned_job = ml_client.jobs.create_or_update(
    classification_job
)  # submit the job to the backend

print(f"Created job: {returned_job}")

# Get a URL for the status of the job
returned_job.services["Studio"].endpoint

يعمل العديد من التشغيل الفرعي في نظام مجموعات

يمكن إجراء عمليات التشغيل الفرعية لتجربة التعلم الآلي المؤتمت على نظام مجموعة تقوم بالفعل بتشغيل تجربة أخرى. ومع ذلك، يعتمد التوقيت على عدد العقد الموجودة في نظام المجموعة، وما إذا كانت هذه العقد متاحة لإجراء تجربة مختلفة.

تعمل كل عقدة في نظام المجموعة كجهاز ظاهري فردي (VM) يمكنها إنجاز دورة تدريبية واحدة؛ بالنسبة إلى التعلم الآلي، فهذا يعني تشغيل فرعي. إذا كانت جميع العقد مشغولة، يتم وضع تجربة جديدة في قائمة الانتظار. ولكن إذا كانت هناك عُقد مجانية، فستعمل التجربة الجديدة على تشغيل التعلم الآلي الفرعي بالتوازي في العقد/الأجهزة الظاهرية المتاحة.

للمساعدة في إدارة عمليات التشغيل الفرعية ومتى يمكن إجراؤها، نوصيك بإنشاء مجموعة مخصصة لكل تجربة، ومطابقة عدد max_concurrent_iterations تجربتك مع عدد العقد في المجموعة. بهذه الطريقة، يمكنك استخدام جميع عقد نظام المجموعة في نفس الوقت مع عدد عمليات التشغيل/التكرارات الفرعية المتزامنة التي تريدها.

تكوين max_concurrent_iterations في limits التكوين. إذا لم يتم تكوينه، فيُسمح افتراضيًا بتشغيل/تكرار فرعي واحد فقط لكل تجربة. في حالة مثيل الحساب، يمكن لمجموعة max_concurrent_trials يكون هو نفسه عدد النوى على مثيل الحساب VM.

استكشف النماذج والقياسات

يوفر لك التعلم الآلي خيارات لمراقبة وتقييم نتائج التدريب.

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

تسجيل النماذج وتوزيعها

بعد اختبار نموذج وتأكيد رغبتك في استخدامه في الإنتاج، يمكنك تسجيله لاستخدامه لاحقاً.

تلميح

للنماذج المسجلة، يتوفر توزيعها بنقرة واحدة عبر استوديو التعلم الآلي من Azure. راجع كيفية توزيع النماذج المسجلة من الأستوديو.

AutoML في البنية الأساسية لبرنامج ربط العمليات التجارية

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

فيما يلي نموذج البنية الأساسية لبرنامج ربط العمليات التجارية مع مكون تصنيف AutoML ومكون أمر يعرض إخراج AutoML الناتج. لاحظ كيفية الإشارة إلى المدخلات (بيانات التدريب والتحقق من الصحة) والمخرجات (أفضل نموذج) في خطوات مختلفة.

# Define pipeline
@pipeline(
    description="AutoML Classification Pipeline",
    )
def automl_classification(
    classification_train_data,
    classification_validation_data
):
    # define the automl classification task with automl function
    classification_node = classification(
        training_data=classification_train_data,
        validation_data=classification_validation_data,
        target_column_name="y",
        primary_metric="accuracy",
        # currently need to specify outputs "mlflow_model" explictly to reference it in following nodes 
        outputs={"best_model": Output(type="mlflow_model")},
    )
    # set limits and training
    classification_node.set_limits(max_trials=1)
    classification_node.set_training(
        enable_stack_ensemble=False,
        enable_vote_ensemble=False
    )

    command_func = command(
        inputs=dict(
            automl_output=Input(type="mlflow_model")
        ),
        command="ls ${{inputs.automl_output}}",
        environment="AzureML-sklearn-0.24-ubuntu18.04-py37-cpu:latest"
    )
    show_output = command_func(automl_output=classification_node.outputs.best_model)


pipeline_job = automl_classification(
    classification_train_data=Input(path="./training-mltable-folder/", type="mltable"),
    classification_validation_data=Input(path="./validation-mltable-folder/", type="mltable"),
)

# set pipeline level compute
pipeline_job.settings.default_compute = compute_name

# submit the pipeline job
returned_pipeline_job = ml_client.jobs.create_or_update(
    pipeline_job,
    experiment_name=experiment_name
)
returned_pipeline_job

# ...
# Note that this is a snippet from the bankmarketing example you can find in our examples repo -> https://github.com/Azure/azureml-examples/tree/main/sdk/python/jobs/pipelines/1h_automl_in_pipeline/automl-classification-bankmarketing-in-pipeline

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

AutoML على نطاق واسع: التدريب الموزع

بالنسبة لسيناريوهات البيانات الكبيرة، يدعم AutoML التدريب الموزع لمجموعة محدودة من النماذج:

خوارزمية موزعة مهام مدعومة حد حجم البيانات (تقريبي)
جهاز غيغابايت فاتح التصنيف والانحدار 1 ТБ
TCNForecaster التنبؤ 200 غيغابايت

تقوم خوارزميات التدريب الموزعة بتقسيم بياناتك وتوزيعها تلقائيا عبر عقد حساب متعددة لتدريب النموذج.

إشعار

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

التدريب الموزع للتصنيف والانحدار

لاستخدام التدريب الموزع للتصنيف أو التراجع، تحتاج إلى تعيين training_mode خصائص و max_nodes لكائن الوظيفة.

الخاصية ‏‏الوصف
training_mode يشير إلى وضع التدريب؛ distributed أو non_distributed. الإعدادات الافتراضية لـ non_distributed.
max_nodes عدد العقد التي يجب استخدامها للتدريب بواسطة كل إصدار تجريبي من AutoML. يجب أن يكون هذا الإعداد أكبر من أو يساوي 4.

يظهر نموذج التعليمات البرمجية التالي مثالا على هذه الإعدادات لمهمة التصنيف:

from azure.ai.ml.constants import TabularTrainingMode

# Set the training mode to distributed
classification_job.set_training(
    allowed_training_algorithms=["LightGBM"],
    training_mode=TabularTrainingMode.DISTRIBUTED
)

# Distribute training across 4 nodes for each trial
classification_job.set_limits(
    max_nodes=4,
    # other limit settings
)

إشعار

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

تدريب موزع للتنبؤ

لمعرفة كيفية عمل التدريب الموزع لمهام التنبؤ، راجع مقالة التنبؤ على نطاق واسع . لاستخدام التدريب الموزع للتنبؤ، تحتاج إلى تعيين training_modeenable_dnn_trainingmax_nodesخصائص كائن الوظيفة و و اختياريا.max_concurrent_trials

الخاصية ‏‏الوصف
training_mode يشير إلى وضع التدريب؛ distributed أو non_distributed. الإعدادات الافتراضية لـ non_distributed.
enable_dnn_training وضع علامة لتمكين نماذج الشبكة العصبية العميقة.
max_concurrent_trials هذا هو الحد الأقصى لعدد النماذج التجريبية للتدريب بالتوازي. تعود الإعدادات الافتراضية على 1.
max_nodes العدد الإجمالي للعقد المراد استخدامها للتدريب. يجب أن يكون هذا الإعداد أكبر من أو يساوي 2. بالنسبة إلى مهام التنبؤ، يتم تدريب كل نموذج تجريبي باستخدام $\text{max}\left(2, \text{floor}( \text{max_nodes} / \text{max_concurrent_trials}) \right)$ nodes.

يظهر نموذج التعليمات البرمجية التالي مثالا على هذه الإعدادات لمهمة التنبؤ:

from azure.ai.ml.constants import TabularTrainingMode

# Set the training mode to distributed
forecasting_job.set_training(
    enable_dnn_training=True,
    allowed_training_algorithms=["TCNForecaster"],
    training_mode=TabularTrainingMode.DISTRIBUTED
)

# Distribute training across 4 nodes
# Train 2 trial models in parallel => 2 nodes per trial
forecasting_job.set_limits(
    max_concurrent_trials=2,
    max_nodes=4,
    # other limit settings
)

راجع الأقسام السابقة حول التكوين وتقديم الوظيفة للحصول على عينات من التعليمات البرمجية للتكوين الكامل.

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