استخدام التعلم الآلي الآلي في البنية الأساسية لبرنامج ربط العمليات التجارية التعلم الآلي Azure في Python

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

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

مراجعة الفئات المركزية ل ML التلقائي

يتم تمثيل التعلم الآلي التلقائي في البنية الأساسية لبرنامج ربط العمليات التجارية بواسطة كائن AutoMLStep . AutoMLStep الفئة هي فئة فرعية من PipelineStep. يعرف الرسم البياني للكائنات PipelineStepPipeline.

هناك عدة فئات فرعية من PipelineStep. بالإضافة إلى AutoMLStep، ستعرض PythonScriptStep هذه المقالة لإعداد البيانات وأخرى لتسجيل النموذج.

الطريقة المفضلة لنقل البيانات في البداية إلى مسار التعلم الآلي هي مع Dataset الكائنات. لنقل البيانات بين الخطوات وإمكانية حفظ إخراج البيانات من عمليات التشغيل، الطريقة المفضلة هي مع OutputFileDatasetConfig والكائنات OutputTabularDatasetConfig . لاستخدامه مع AutoMLStep، PipelineData يجب تحويل الكائن إلى كائن PipelineOutputTabularDataset . لمزيد من المعلومات، راجع بيانات الإدخال والإخراج من مسارات التعلم الآلي.

AutoMLStep يتم تكوين عبر كائنAutoMLConfig. AutoMLConfig هي فئة مرنة، كما تمت مناقشته في تكوين تجارب التعلم الآلي الآلي في Python.

يتم Pipeline تشغيل في Experiment. يحتوي المسار Run ، لكل خطوة، على تابع StepRun. مخرجات التعلم الآلي StepRun الآلي هي مقاييس التدريب والنموذج الأعلى أداء.

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

الشروع في العمل

استرداد مجموعة البيانات الأولية

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

from azureml.core import Workspace, Dataset

ws = Workspace.from_config()
if not 'titanic_ds' in ws.datasets.keys() :
    # create a TabularDataset from Titanic training data
    web_paths = ['https://dprepdata.blob.core.windows.net/demo/Titanic.csv',
                 'https://dprepdata.blob.core.windows.net/demo/Titanic2.csv']
    titanic_ds = Dataset.Tabular.from_delimited_files(path=web_paths)

    titanic_ds.register(workspace = ws,
                                     name = 'titanic_ds',
                                     description = 'Titanic baseline data',
                                     create_new_version = True)

titanic_ds = Dataset.get_by_name(ws, 'titanic_ds')

تسجل التعليمات البرمجية الدخول أولا إلى مساحة عمل Azure التعلم الآلي المعرفة في config.json (للحصول على شرح، راجع إنشاء ملف تكوين مساحة عمل. إذا لم تكن هناك بالفعل مجموعة بيانات باسم 'titanic_ds' مسجلة، فإنها تنشئ واحدة. تقوم التعليمات البرمجية بتنزيل بيانات CSV من الويب، واستخدامها لإنشاء TabularDataset مثيل ثم تسجيل مجموعة البيانات مع مساحة العمل. وأخيرا، تعين الدالة Dataset.get_by_name()Dataset إلى titanic_ds.

تكوين هدف التخزين والحوسبة

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

from azureml.core import Datastore
from azureml.core.compute import AmlCompute, ComputeTarget

datastore = ws.get_default_datastore()

compute_name = 'cpu-cluster'
if not compute_name in ws.compute_targets :
    print('creating a new compute target...')
    provisioning_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_D2_V2',
                                                                min_nodes=0,
                                                                max_nodes=1)
    compute_target = ComputeTarget.create(ws, compute_name, provisioning_config)

    compute_target.wait_for_completion(
        show_output=True, min_node_count=None, timeout_in_minutes=20)

    # Show the result
    print(compute_target.get_status().serialize())

compute_target = ws.compute_targets[compute_name]

ملاحظة

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

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

بعد ذلك، تتحقق التعليمات البرمجية من وجود هدف 'cpu-cluster' حساب AML بالفعل. إذا لم يكن الأمر كما هو، فإننا نحدد أننا نريد هدف حساب صغير يستند إلى وحدة المعالجة المركزية. إذا كنت تخطط لاستخدام ميزات التعلم العميق ML التلقائية (على سبيل المثال، تمييز النص مع دعم DNN) يجب عليك اختيار حساب مع دعم GPU قوي، كما هو موضح في أحجام الجهاز الظاهري المحسنة لوحدة معالجة الرسومات.

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

تكوين تشغيل التدريب

يتم تعيين سياق وقت التشغيل عن طريق إنشاء كائن وتكوينه RunConfiguration . هنا قمنا بتعيين هدف الحساب.

from azureml.core.runconfig import RunConfiguration
from azureml.core.conda_dependencies import CondaDependencies

aml_run_config = RunConfiguration()
# Use just-specified compute target ("cpu-cluster")
aml_run_config.target = compute_target

# Specify CondaDependencies obj, add necessary packages
aml_run_config.environment.python.conda_dependencies = CondaDependencies.create(
    conda_packages=['pandas','scikit-learn'], 
    pip_packages=['azureml-sdk[automl]', 'pyarrow'])

إعداد البيانات للتعلم الآلي التلقائي

كتابة التعليمات البرمجية لإعداد البيانات

تتكون مجموعة بيانات Titanic الأساسية من بيانات رقمية ونصية مختلطة، مع فقدان بعض القيم. لإعداده للتعلم الآلي التلقائي، ستقوم خطوة مسار إعداد البيانات بما يلي:

  • تعبئة البيانات المفقودة إما ببيانات عشوائية أو فئة مطابقة ل "غير معروف"
  • تحويل البيانات الفئوية إلى أعداد صحيحة
  • إسقاط الأعمدة التي لا نعتزم استخدامها
  • تقسيم البيانات إلى مجموعات التدريب والاختبار
  • كتابة البيانات المحولة OutputFileDatasetConfig إلى مسارات الإخراج
%%writefile dataprep.py
from azureml.core import Run

import pandas as pd 
import numpy as np 
import argparse

RANDOM_SEED=42

def prepare_age(df):
    # Fill in missing Age values from distribution of present Age values 
    mean = df["Age"].mean()
    std = df["Age"].std()
    is_null = df["Age"].isnull().sum()
    # compute enough (== is_null().sum()) random numbers between the mean, std
    rand_age = np.random.randint(mean - std, mean + std, size = is_null)
    # fill NaN values in Age column with random values generated
    age_slice = df["Age"].copy()
    age_slice[np.isnan(age_slice)] = rand_age
    df["Age"] = age_slice
    df["Age"] = df["Age"].astype(int)
    
    # Quantize age into 5 classes
    df['Age_Group'] = pd.qcut(df['Age'],5, labels=False)
    df.drop(['Age'], axis=1, inplace=True)
    return df

def prepare_fare(df):
    df['Fare'].fillna(0, inplace=True)
    df['Fare_Group'] = pd.qcut(df['Fare'],5,labels=False)
    df.drop(['Fare'], axis=1, inplace=True)
    return df 

def prepare_genders(df):
    genders = {"male": 0, "female": 1, "unknown": 2}
    df['Sex'] = df['Sex'].map(genders)
    df['Sex'].fillna(2, inplace=True)
    df['Sex'] = df['Sex'].astype(int)
    return df

def prepare_embarked(df):
    df['Embarked'].replace('', 'U', inplace=True)
    df['Embarked'].fillna('U', inplace=True)
    ports = {"S": 0, "C": 1, "Q": 2, "U": 3}
    df['Embarked'] = df['Embarked'].map(ports)
    return df
    
parser = argparse.ArgumentParser()
parser.add_argument('--output_path', dest='output_path', required=True)
args = parser.parse_args()
    
titanic_ds = Run.get_context().input_datasets['titanic_ds']
df = titanic_ds.to_pandas_dataframe().drop(['PassengerId', 'Name', 'Ticket', 'Cabin'], axis=1)
df = prepare_embarked(prepare_genders(prepare_fare(prepare_age(df))))

df.to_csv(os.path.join(args.output_path,"prepped_data.csv"))

print(f"Wrote prepped data to {args.output_path}/prepped_data.csv")

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

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

بعد أن تحدد التعليمات البرمجية دالات إعداد البيانات، تقوم التعليمات البرمجية بتحليل وسيطة الإدخال، وهو المسار الذي نريد كتابة بياناتنا إليه. (سيتم تحديد هذه القيم بواسطة OutputFileDatasetConfig العناصر التي ستتم مناقشتها في الخطوة التالية.) تسترد التعليمات البرمجية المسجلة 'titanic_cs'Dataset، وتحولها إلى Pandas DataFrame، وتستدعي وظائف إعداد البيانات المختلفة.

output_path نظرا لأن هو دليل، فإن استدعاء لتحديد to_csv() اسم prepped_data.csvالملف .

كتابة خطوة مسار إعداد البيانات (PythonScriptStep)

يجب أن تكون التعليمات البرمجية لإعداد البيانات الموضحة أعلاه مقترنة بكائن PythonScripStep لاستخدامه مع البنية الأساسية لبرنامج ربط العمليات التجارية. يتم إنشاء المسار الذي تتم كتابة إخراج CSV إليه بواسطة كائن OutputFileDatasetConfig . يتم استخدام الموارد التي تم إعدادها مسبقا، مثل ComputeTargetو RunConfigو و 'titanic_ds' Dataset لإكمال المواصفات.

from azureml.data import OutputFileDatasetConfig
from azureml.pipeline.steps import PythonScriptStep

prepped_data_path = OutputFileDatasetConfig(name="output_path")

dataprep_step = PythonScriptStep(
    name="dataprep", 
    script_name="dataprep.py", 
    compute_target=compute_target, 
    runconfig=aml_run_config,
    arguments=["--output_path", prepped_data_path],
    inputs=[titanic_ds.as_named_input('titanic_ds')],
    allow_reuse=True
)

prepped_data_path الكائن من النوع OutputFileDatasetConfig الذي يشير إلى دليل. لاحظ أنه محدد في المعلمة arguments . إذا راجعت الخطوة السابقة، فسترى أنه ضمن التعليمات البرمجية لإعداد البيانات، تكون قيمة الوسيطة '--output_path' هي مسار الدليل الذي تمت كتابة ملف CSV فيه.

التدريب باستخدام AutoMLStep

يتم تكوين خطوة البنية الأساسية لبرنامج ربط العمليات التجارية ML تلقائيا AutoMLConfig مع الفئة . يتم وصف هذه الفئة المرنة في تكوين تجارب التعلم الآلي الآلي في Python. إدخال البيانات وإخراجها هي الجوانب الوحيدة للتكوين التي تتطلب اهتماما خاصا في مسار التعلم الآلي. تتم مناقشة الإدخال والإخراج في AutoMLConfig البنية الأساسية لبرنامج ربط العمليات التجارية بالتفصيل أدناه. بالإضافة إلى البيانات، تتمثل ميزة مسارات التعلم الآلي في القدرة على استخدام أهداف حساب مختلفة لخطوات مختلفة. قد تختار استخدام أقوى ComputeTarget فقط لعملية التعلم الآلي التلقائي. القيام بذلك واضح مثل تعيين أكثر قوة RunConfiguration لمعلمة AutoMLConfig الكائن run_configuration .

إرسال البيانات إلى AutoMLStep

في البنية الأساسية لبرنامج ربط العمليات التجارية ML، يجب أن تكون بيانات الإدخال كائنا Dataset . الطريقة الأعلى أداء هي توفير بيانات الإدخال في شكل كائنات OutputTabularDatasetConfig . يمكنك إنشاء كائن من هذا النوع باستخدام على read_delimited_files()OutputFileDatasetConfig، مثل prepped_data_path، مثل prepped_data_path الكائن .

# type(prepped_data) == OutputTabularDatasetConfig
prepped_data = prepped_data_path.read_delimited_files()

خيار آخر هو استخدام Dataset الكائنات المسجلة في مساحة العمل:

prepped_data = Dataset.get_by_name(ws, 'Data_prepared')

مقارنة التقنيتين:

التقنية الفوائد والعوائق
OutputTabularDatasetConfig أداء أعلى
مسار طبيعي من OutputFileDatasetConfig
لا تستمر البيانات بعد تشغيل البنية الأساسية لبرنامج ربط العمليات التجارية
المسجله Dataset أداء أقل
يمكن إنشاؤه بعدة طرق
تستمر البيانات وتكون مرئية في جميع أنحاء مساحة العمل
دفتر ملاحظات يعرض التقنية المسجلة Dataset

تحديد مخرجات التعلم الآلي الآلي

مخرجات هي AutoMLStep الدرجات القياسية النهائية للنموذج الأعلى أداء وهذا النموذج نفسه. لاستخدام هذه المخرجات في خطوات البنية الأساسية لبرنامج ربط العمليات التجارية الإضافية، قم بإعداد OutputFileDatasetConfig العناصر لتلقيها.

from azureml.pipeline.core import TrainingOutput, PipelineData

metrics_data = PipelineData(name='metrics_data',
                            datastore=datastore,
                            pipeline_output_name='metrics_output',
                            training_output=TrainingOutput(type='Metrics'))

model_data = PipelineData(name='best_model_data',
                          datastore=datastore,
                          pipeline_output_name='model_output',
                          training_output=TrainingOutput(type='Model'))

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

تكوين وإنشاء خطوة البنية الأساسية لبرنامج ربط العمليات التجارية ML التلقائية

بمجرد تحديد المدخلات والمخرجات، حان الوقت لإنشاء AutoMLConfig و AutoMLStep. ستعتمد تفاصيل التكوين على مهمتك، كما هو موضح في تكوين تجارب التعلم الآلي التلقائي في Python. بالنسبة لمهمة تصنيف البقاء على قيد الحياة في تيتانيك، توضح القصاصة البرمجية التالية تكوينا بسيطا.

from azureml.train.automl import AutoMLConfig
from azureml.pipeline.steps import AutoMLStep

# Change iterations to a reasonable number (50) to get better accuracy
automl_settings = {
    "iteration_timeout_minutes" : 10,
    "iterations" : 2,
    "experiment_timeout_hours" : 0.25,
    "primary_metric" : 'AUC_weighted'
}

automl_config = AutoMLConfig(task = 'classification',
                             path = '.',
                             debug_log = 'automated_ml_errors.log',
                             compute_target = compute_target,
                             run_configuration = aml_run_config,
                             featurization = 'auto',
                             training_data = prepped_data,
                             label_column_name = 'Survived',
                             **automl_settings)

train_step = AutoMLStep(name='AutoML_Classification',
    automl_config=automl_config,
    passthru_automl_config=False,
    outputs=[metrics_data,model_data],
    enable_default_model_output=False,
    enable_default_metrics_output=False,
    allow_reuse=True)

تعرض القصاصة البرمجية تعبيرا شائع الاستخدام مع AutoMLConfig. يتم تحديد الوسيطات الأكثر مرونة (hyperparameter-ish) في قاموس منفصل بينما يتم تحديد القيم الأقل احتمالا للتغيير مباشرة في الدالة AutoMLConfig الإنشائية. في هذه الحالة، automl_settings حدد تشغيلا موجزا: سيتوقف التشغيل بعد تكرارين فقط أو 15 دقيقة، أيهما يأتي أولا.

automl_settings يتم تمرير القاموس إلى الدالة AutoMLConfig الإنشائية ك kwargs. المعلمات الأخرى ليست معقدة:

  • task تم تعيين إلى classification لهذا المثال. القيم الصالحة الأخرى هي regression و forecasting
  • path ووصف debug_log المسار إلى المشروع وملف محلي ستتم كتابة معلومات تتبع الأخطاء إليه
  • compute_target هو المحدد compute_target مسبقا، في هذا المثال، هو جهاز غير مكلف قائم على وحدة المعالجة المركزية. إذا كنت تستخدم مرافق Learning العميقة الخاصة ب AutoML، فسترغب في تغيير هدف الحساب ليكون مستندا إلى GPU
  • تم تعيين featurization إلى auto. يمكن العثور على مزيد من التفاصيل في قسم "تمييز البيانات" في مستند تكوين التعلم الآلي الآلي
  • label_column_name يشير إلى العمود الذي يهمنا التنبؤ به
  • training_data يتم تعيين إلى OutputTabularDatasetConfig الكائنات التي تم إجراؤها من مخرجات خطوة إعداد البيانات

AutoMLStep يأخذ AutoMLConfig نفسه و، كمخرجات، PipelineData الكائنات التي تم إنشاؤها للاحتفاظ بالمقاييس وبيانات النموذج.

هام

يجب تعيين enable_default_model_output و enable_default_metrics_outputTrue فقط إذا كنت تستخدم AutoMLStepRun.

في هذا المثال، ستقوم عملية التعلم الآلي التلقائية بإجراء عمليات التحقق من الصحة المتقاطعة training_dataعلى . يمكنك التحكم في عدد عمليات التحقق من الصحة المتقاطعة باستخدام الوسيطة n_cross_validations . إذا كنت قد قمت بالفعل بتقسيم بيانات التدريب الخاصة بك كجزء من خطوات إعداد البيانات الخاصة بك، يمكنك تعيينها validation_data إلى الخاصة بها Dataset.

قد ترى أحيانا استخدام X ميزات البيانات وتسميات y البيانات. تم إهمال هذه التقنية ويجب عليك استخدامها training_data للإدخل.

تسجيل النموذج الذي تم إنشاؤه بواسطة التعلم الآلي التلقائي

الخطوة الأخيرة في مسار التعلم الآلي البسيط هي تسجيل النموذج الذي تم إنشاؤه. بإضافة النموذج إلى سجل نموذج مساحة العمل، سيكون متوفرا في المدخل ويمكن إصداره. لتسجيل النموذج، اكتب آخر PythonScriptStep يأخذ model_data إخراج AutoMLStep.

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

يتم تسجيل نموذج في Workspace. ربما تكون على دراية باستخدام Workspace.from_config() لتسجيل الدخول إلى مساحة العمل الخاصة بك على جهازك المحلي، ولكن هناك طريقة أخرى للحصول على مساحة العمل من داخل مسار التعلم الآلي قيد التشغيل. يسترد Run.get_context() نشط Run. يوفر هذا run الكائن الوصول إلى العديد من الكائنات المهمة، بما في Workspace ذلك المستخدمة هنا.

%%writefile register_model.py
from azureml.core.model import Model, Dataset
from azureml.core.run import Run, _OfflineRun
from azureml.core import Workspace
import argparse

parser = argparse.ArgumentParser()
parser.add_argument("--model_name", required=True)
parser.add_argument("--model_path", required=True)
args = parser.parse_args()

print(f"model_name : {args.model_name}")
print(f"model_path: {args.model_path}")

run = Run.get_context()
ws = Workspace.from_config() if type(run) == _OfflineRun else run.experiment.workspace

model = Model.register(workspace=ws,
                       model_path=args.model_path,
                       model_name=args.model_name)

print("Registered version {0} of model {1}".format(model.version, model.name))

كتابة التعليمات البرمجية PythonScriptStep

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


from azureml.pipeline.core.graph import PipelineParameter

# The model name with which to register the trained model in the workspace.
model_name = PipelineParameter("model_name", default_value="TitanicSurvivalInitial")

register_step = PythonScriptStep(script_name="register_model.py",
                                       name="register_model",
                                       allow_reuse=False,
                                       arguments=["--model_name", model_name, "--model_path", model_data],
                                       inputs=[model_data],
                                       compute_target=compute_target,
                                       runconfig=aml_run_config)

إنشاء وتشغيل البنية الأساسية لبرنامج ربط العمليات التجارية ML التلقائية

إنشاء وتشغيل مسار يحتوي على AutoMLStep لا يختلف عن البنية الأساسية لبرنامج ربط العمليات التجارية العادية.

from azureml.pipeline.core import Pipeline
from azureml.core import Experiment

pipeline = Pipeline(ws, [dataprep_step, train_step, register_step])

experiment = Experiment(workspace=ws, name='titanic_automl')

run = experiment.submit(pipeline, show_output=True)
run.wait_for_completion()

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

فحص نتائج البنية الأساسية لبرنامج ربط العمليات التجارية

run بمجرد اكتمال ، يمكنك استرداد PipelineData الكائنات التي تم تعيينها .pipeline_output_name يمكنك تنزيل النتائج وتحميلها لمزيد من المعالجة.

metrics_output_port = run.get_pipeline_output('metrics_output')
model_output_port = run.get_pipeline_output('model_output')

metrics_output_port.download('.', show_progress=True)
model_output_port.download('.', show_progress=True)

تتم كتابة الملفات التي تم تنزيلها إلى الدليل azureml/{run.id}/الفرعي . ملف المقاييس بتنسيق JSON ويمكن تحويله إلى إطار بيانات Pandas للفحص.

للمعالجة المحلية، قد تحتاج إلى تثبيت الحزم ذات الصلة، مثل Pandas و Pickle وAzureML SDK وما إلى ذلك. على سبيل المثال، من المحتمل أن يعتمد أفضل نموذج تم العثور عليه بواسطة التعلم الآلي التلقائي على XGBoost.

!pip install xgboost==0.90
import pandas as pd
import json

metrics_filename = metrics_output._path_on_datastore
# metrics_filename = path to downloaded file
with open(metrics_filename) as f:
   metrics_output_result = f.read()
   
deserialized_metrics_output = json.loads(metrics_output_result)
df = pd.DataFrame(deserialized_metrics_output)
df

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

يمكن إلغاء تسلسل ملف النموذج إلى كائن Model يمكنك استخدامه للاستدلال، وتحليل المقاييس الإضافية، وما إلى ذلك.

import pickle

model_filename = model_output._path_on_datastore
# model_filename = path to downloaded file

with open(model_filename, "rb" ) as f:
    best_model = pickle.load(f)

# ... inferencing code not shown ...

لمزيد من المعلومات حول تحميل النماذج الموجودة والعمل معها، راجع استخدام نموذج موجود مع Azure التعلم الآلي.

تنزيل نتائج تشغيل التعلم الآلي التلقائي

إذا كنت تتابع المقالة، فسيكون لديك كائن تم إنشاء مثيل له run . ولكن يمكنك أيضا استرداد الكائنات المكتملة RunWorkspace من عن طريق كائن Experiment .

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

# Retrieved from Azure Machine Learning web UI
run_id = 'aaaaaaaa-bbbb-cccc-dddd-0123456789AB'
experiment = ws.experiments['titanic_automl']
run = next(run for run in ex.get_runs() if run.id == run_id)

سيتعين عليك تغيير السلاسل في التعليمات البرمجية أعلاه إلى تفاصيل التشغيل التاريخي. تفترض القصاصة البرمجية أعلاه أنك قمت بتعيينها ws إلى ذات الصلة Workspace مع العادي from_config(). يتم استرداد تجربة الاهتمام مباشرة ثم تجد التعليمات البرمجية Run الفائدة عن طريق مطابقة run.id القيمة.

بمجرد أن يكون لديك كائن Run ، يمكنك تنزيل المقاييس والنموذج.

automl_run = next(r for r in run.get_children() if r.name == 'AutoML_Classification')
outputs = automl_run.get_outputs()
metrics = outputs['default_metrics_AutoML_Classification']
model = outputs['default_model_AutoML_Classification']

metrics.get_port_data_reference().download('.')
model.get_port_data_reference().download('.')

يحتوي كل Run كائن على StepRun كائنات تحتوي على معلومات حول تشغيل خطوة المسار الفردية. run يتم البحث عن StepRun الكائن ل AutoMLStep. يتم استرداد المقاييس والنموذج باستخدام أسماءها الافتراضية، والتي تتوفر حتى إذا لم تقم بتمرير PipelineData الكائنات إلى معلمة outputsAutoMLStep.

وأخيرا، يتم تنزيل المقاييس والنموذج الفعلي على جهازك المحلي، كما تمت مناقشته في قسم "فحص نتائج المسار" أعلاه.

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