البرنامج التعليمي: إنشاء مسارات التعلم الآلي للإنتاج

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

ملاحظة

للحصول على درس يستخدم SDK v1 لبناء خط أنابيب، راجع الدرس: بناء خط أنابيب تعلم الآلة في Azure لتصنيف الصور.

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

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

في هذا البرنامج التعليمي، يمكنك استخدام التعلم الآلي من Microsoft Azure لإنشاء مشروع تعلم آلي جاهز للإنتاج، باستخدام التعلم الآلي من Microsoft Azure Python SDK v2. بعد هذا الدرس، يمكنك استخدام حزمة تطوير تطوير Azure Machine Learning Python ل:

  • الحصول على مؤشر لمساحة عمل Azure التعلم الآلي
  • أنشئ أصول بيانات التعلم الآلي من Microsoft Azure
  • إنشاء مكونات Azure التعلم الآلي القابلة لإعادة الاستخدام
  • إنشاء والتحقق من صحة وتشغيل خطوط أنابيب التعلم الآلي في Azure

أثناء هذا البرنامج التعليمي، يمكنك إنشاء مسار Azure التعلم الآلي لتدريب نموذج للتنبؤ الافتراضي للائتمان. تعالج البنية الأساسية لبرنامج ربط العمليات التجارية خطوتين:

  1. إعدَاد البَيَانَات
  2. تدريب وتسجيل النموذج المدرب

الصورة التالية تظهر خط أنابيب بسيط كما تراه في Azure Studio بعد تقديمه.

الخطوتان هما إعداد البيانات والتدريب.

لقطة شاشة لمخطط نظرة عامة على خط الأنابيب.

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

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

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

    هام

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

  2. سجل الدخول إلى الاستوديو وحدد مساحة العمل إذا لم تكن مفتوحة بالفعل.

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

  4. افتح دفتر ملاحظات أو أنشئه في مساحة العمل:

تعيين النواة وفتحها في Visual Studio Code (VS Code)

  1. في الشريط العلوي أعلى دفتر الملاحظات المفتوح، أنشئ مثيل حساب إذا لم يكن لديك مثيل بالفعل.

    لقطة شاشة توضح كيفية إنشاء مثيل حساب.

  2. إذا تم إيقاف مثيل الحساب، فحدد Start compute وانتظر حتى يتم تشغيله.

    لقطة شاشة توضح كيفية بدء تشغيل مثيل حساب متوقف.

  3. انتظر حتى يتم تشغيل مثيل الحساب. ثم تأكد من أن النواة، الموجودة في أعلى اليمين، هي Python 3.10 - SDK v2. إذا لم يكن الأمر كما هو، فاستخدم القائمة المنسدلة لتحديد هذا النواة.

    لقطة شاشة توضح كيفية تعيين النواة.

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

  4. إذا رأيت شعارا يشير إلى أنك بحاجة إلى المصادقة، فحدد المصادقة.

  5. يمكنك تشغيل دفتر الملاحظات هنا، أو فتحه في VS Code لبيئة تطوير متكاملة كاملة (IDE) مع قوة موارد Azure التعلم الآلي. حدد فتح في VS Code، ثم حدد خيار الويب أو سطح المكتب. عند تشغيله بهذه الطريقة، يتم إرفاق VS Code بمثيل الحساب الخاص بك، والنواة، ونظام ملفات مساحة العمل.

    لقطة شاشة توضح كيفية فتح دفتر الملاحظات في VS Code.

هام

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

إعداد موارد خط الأنابيب

يمكنك استخدام إطار عمل Azure Machine Learning من Azure CLI أو Python SDK أو واجهة ستوديو. في هذا المثال، يمكنك استخدام Azure التعلم الآلي Python SDK v2 لإنشاء مسار.

قبل إنشاء خط الأنابيب، تحتاج إلى هذه الموارد:

  • أصل البيانات للتدريب
  • بيئة البرنامج لتشغيل خط الأنابيب
  • مورد حسابي حيث تعمل الوظيفة

إنشاء مقبض لمساحة العمل

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

في الخلية التالية، أدخل معرف الاشتراك واسم مجموعة الموارد واسم مساحة العمل. للعثور على هذه القيم:

  1. في شريط أدوات أستوديو Azure Machine Learning العلوي الأيمن، حدد اسم مساحة العمل الخاصة بك.
  2. انسخ قيمة مساحة العمل ومجموعة الموارد ومعرف الاشتراك في التعليمات البرمجية. تحتاج إلى نسخ قيمة واحدة، إغلاق المساحة، ثم لصقها، ثم إرجاعها للقيمة التالية.
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential, InteractiveBrowserCredential

# authenticate
try:
    credential = DefaultAzureCredential()
    credential.get_token("https://management.azure.com/.default")
except Exception:
    credential = InteractiveBrowserCredential()

SUBSCRIPTION = "<SUBSCRIPTION_ID>"
RESOURCE_GROUP = "<RESOURCE_GROUP>"
WS_NAME = "<AML_WORKSPACE_NAME>"
# Get a handle to the workspace
ml_client = MLClient(
    credential=credential,
    subscription_id=SUBSCRIPTION,
    resource_group_name=RESOURCE_GROUP,
    workspace_name=WS_NAME,
)

مرجع SDK:

ملاحظة

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

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

# Verify that the handle works correctly.
# If you get an error here, modify your SUBSCRIPTION, RESOURCE_GROUP, and WS_NAME in the previous cell.
ws = ml_client.workspaces.get(WS_NAME)
print(ws.location, ":", ws.resource_group)

مرجع SDK:

الوصول إلى أصل البيانات المسجلة

ابدأ بالحصول على البيانات التي سجلتها سابقا في التعليم: رفع البيانات، الوصول إليه، واستكشاف بياناتك في Azure Machine Learning.

ملاحظة

يستخدم Azure Machine Learning كائنا Data لتسجيل تعريف قابل لإعادة الاستخدام للبيانات واستهلاك البيانات داخل خط الأنابيب.

# get a handle of the data asset and print the URI
credit_data = ml_client.data.get(name="credit-card", version="initial")
print(f"Data asset URI: {credit_data.path}")

مرجع SDK:

إنشاء بيئة عمل لخطوات خطوط الأنابيب

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

في هذا المثال، يمكنك إنشاء بيئة conda لوظائفك، باستخدام ملف conda yaml. أولاً، أنشئ دليلاً لتخزين الملف فيه.

import os

dependencies_dir = "./dependencies"
os.makedirs(dependencies_dir, exist_ok=True)

الآن، قم بإنشاء الملف في دليل التبعيات.

%%writefile {dependencies_dir}/conda.yaml
name: model-env
channels:
  - conda-forge
dependencies:
    - python=3.10
  - numpy=1.21.2
  - pip=21.2.4
  - scikit-learn=0.24.2
  - scipy=1.7.1
  - pandas>=1.1,<1.2
  - pip:
    - inference-schema[numpy-support]==1.3.0
    - xlrd==2.0.1
    - mlflow== 2.4.1
    - azureml-mlflow==1.51.0

تحتوي المواصفة على بعض الحزم المعتادة التي تستخدمها في خط الأنابيب الخاص بك (numpy، pip)، بالإضافة إلى بعض الحزم الخاصة بتعلم الآلة Azure (azureml-mlflow).

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

استخدم ملف yaml لإنشاء هذه البيئة المخصصة وتسجيلها في مساحة العمل الخاصة بك:

from azure.ai.ml.entities import Environment

custom_env_name = "aml-scikit-learn"

pipeline_job_env = Environment(
    name=custom_env_name,
    description="Custom environment for Credit Card Defaults pipeline",
    tags={"scikit-learn": "0.24.2"},
    conda_file=os.path.join(dependencies_dir, "conda.yaml"),
    image="mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu22.04:latest",
    version="0.2.0",
)
pipeline_job_env = ml_client.environments.create_or_update(pipeline_job_env)

print(
    f"Environment with name {pipeline_job_env.name} is registered to workspace, the environment version is {pipeline_job_env.version}"
)

مرجع SDK:

بناء خط أنابيب التدريب

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

مسارات Azure التعلم الآلي هي مهام سير عمل التعلم الآلي القابلة لإعادة الاستخدام التي تتكون عادة من عدة مكونات. دورة الحياة النموذجية للمكون هي:

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

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

ملاحظة

في هذا الدرس، للتبسيط، تستخدم نفس الحساب لجميع المكونات. ومع ذلك، يمكنك ضبط حسابات مختلفة لكل مكون. على سبيل المثال، يمكنك إضافة سطر مثل train_step.compute = "cpu-cluster". لعرض مثال على إنشاء مسار بحسابات مختلفة لكل مكون، راجع قسم مهمة البنية الأساسية لبرنامج ربط العمليات التجارية في البرنامج التعليمي cifar-10 pipeline.

إنشاء المكون 1: إعداد البيانات (باستخدام التعريف البرنامجي)

ابدأ بإنشاء المكون الأول. يعالج هذا المكون المعالجة المسبقة للبيانات. يتم تنفيذ مهمة المعالجة المسبقة في ملف data_prep.py Python.

أولا، أنشئ مجلد مصدر لمكون data_prep:

import os

data_prep_src_dir = "./components/data_prep"
os.makedirs(data_prep_src_dir, exist_ok=True)

ينفذ هذا البرنامج النصي المهمة البسيطة المتمثلة في تقسيم البيانات إلى مجموعات بيانات القطار والاختبار. يقوم Azure Machine Learning بتركيب مجموعات البيانات كمجلدات إلى الحوسبة. أنشأت وظيفة مساعدة select_first_file للوصول إلى ملف البيانات داخل مجلد الإدخال المركب.

MLFlow يستخدم لتسجيل المعاملات والمقاييس أثناء تشغيل خط الأنابيب الخاص بك.

%%writefile {data_prep_src_dir}/data_prep.py
import os
import argparse
import pandas as pd
from sklearn.model_selection import train_test_split
import logging
import mlflow


def main():
    """Main function of the script."""

    # input and output arguments
    parser = argparse.ArgumentParser()
    parser.add_argument("--data", type=str, help="path to input data")
    parser.add_argument("--test_train_ratio", type=float, required=False, default=0.25)
    parser.add_argument("--train_data", type=str, help="path to train data")
    parser.add_argument("--test_data", type=str, help="path to test data")
    args = parser.parse_args()

    # Start Logging
    mlflow.start_run()

    print(" ".join(f"{k}={v}" for k, v in vars(args).items()))

    print("input data:", args.data)

    credit_df = pd.read_csv(args.data, header=1, index_col=0)

    mlflow.log_metric("num_samples", credit_df.shape[0])
    mlflow.log_metric("num_features", credit_df.shape[1] - 1)

    credit_train_df, credit_test_df = train_test_split(
        credit_df,
        test_size=args.test_train_ratio,
    )

    # output paths are mounted as folder, therefore, we are adding a filename to the path
    credit_train_df.to_csv(os.path.join(args.train_data, "data.csv"), index=False)

    credit_test_df.to_csv(os.path.join(args.test_data, "data.csv"), index=False)

    # Stop Logging
    mlflow.end_run()


if __name__ == "__main__":
    main()

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

استخدم الغرض CommandComponent العام الذي يمكنه تشغيل إجراءات سطر الأوامر. يمكن لإجراء سطر الأوامر هذا استدعاء أوامر النظام أو تشغيل برنامج نصي. يتم تحديد المدخلات والمخرجات على سطر الأوامر باستخدام التدوين ${{ ... }} .

from azure.ai.ml import command
from azure.ai.ml import Input, Output

data_prep_component = command(
    name="data_prep_credit_defaults",
    display_name="Data preparation for training",
    description="reads a .xl input, split the input to train and test",
    inputs={
        "data": Input(type="uri_folder"),
        "test_train_ratio": Input(type="number"),
    },
    outputs=dict(
        train_data=Output(type="uri_folder", mode="rw_mount"),
        test_data=Output(type="uri_folder", mode="rw_mount"),
    ),
    # The source folder of the component
    code=data_prep_src_dir,
    command="""python data_prep.py \
            --data ${{inputs.data}} --test_train_ratio ${{inputs.test_train_ratio}} \
            --train_data ${{outputs.train_data}} --test_data ${{outputs.test_data}} \
            """,
    environment=f"{pipeline_job_env.name}:{pipeline_job_env.version}",
)

مرجع SDK:

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

# Now register the component to the workspace
data_prep_component = ml_client.create_or_update(data_prep_component.component)

# Create and register the component in your workspace
print(
    f"Component {data_prep_component.name} with Version {data_prep_component.version} is registered"
)

مرجع SDK:

إنشاء المكون 2: التدريب (باستخدام تعريف yaml)

المكون الثاني الذي تنشئه يستهلك بيانات التدريب والاختبار، ويدرب نموذجا قائما على الشجرة، ويعيد نموذج الإخراج. استخدم قدرات تسجيل Azure التعلم الآلي لتسجيل تقدم التعلم وتصوره.

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

قم بإنشاء دليل لهذا المكون:

import os

train_src_dir = "./components/train"
os.makedirs(train_src_dir, exist_ok=True)

قم بإنشاء برنامج نصي للتدريب في الدليل:

%%writefile {train_src_dir}/train.py
import argparse
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.metrics import classification_report
import os
import pandas as pd
import mlflow


def select_first_file(path):
    """Selects first file in folder, use under assumption there is only one file in folder
    Args:
        path (str): path to directory or file to choose
    Returns:
        str: full path of selected file
    """
    files = os.listdir(path)
    return os.path.join(path, files[0])


# Start Logging
mlflow.start_run()

# enable autologging
mlflow.sklearn.autolog()

os.makedirs("./outputs", exist_ok=True)


def main():
    """Main function of the script."""

    # input and output arguments
    parser = argparse.ArgumentParser()
    parser.add_argument("--train_data", type=str, help="path to train data")
    parser.add_argument("--test_data", type=str, help="path to test data")
    parser.add_argument("--n_estimators", required=False, default=100, type=int)
    parser.add_argument("--learning_rate", required=False, default=0.1, type=float)
    parser.add_argument("--registered_model_name", type=str, help="model name")
    parser.add_argument("--model", type=str, help="path to model file")
    args = parser.parse_args()

    # paths are mounted as folder, therefore, we are selecting the file from folder
    train_df = pd.read_csv(select_first_file(args.train_data))

    # Extracting the label column
    y_train = train_df.pop("default payment next month")

    # convert the dataframe values to array
    X_train = train_df.values

    # paths are mounted as folder, therefore, we are selecting the file from folder
    test_df = pd.read_csv(select_first_file(args.test_data))

    # Extracting the label column
    y_test = test_df.pop("default payment next month")

    # convert the dataframe values to array
    X_test = test_df.values

    print(f"Training with data of shape {X_train.shape}")

    clf = GradientBoostingClassifier(
        n_estimators=args.n_estimators, learning_rate=args.learning_rate
    )
    clf.fit(X_train, y_train)

    y_pred = clf.predict(X_test)

    print(classification_report(y_test, y_pred))

    # Registering the model to the workspace
    print("Registering the model via MLFlow")
    mlflow.sklearn.log_model(
        sk_model=clf,
        registered_model_name=args.registered_model_name,
        artifact_path=args.registered_model_name,
    )

    # Saving the model to a file
    mlflow.sklearn.save_model(
        sk_model=clf,
        path=os.path.join(args.model, "trained_model"),
    )

    # Stop Logging
    mlflow.end_run()


if __name__ == "__main__":
    main()

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

بالنسبة لبيئة هذه الخطوة، يمكنك استخدام إحدى بيئات Azure التعلم الآلي المضمنة (المنسقة). العلامة azureml تخبر النظام بالبحث عن الاسم في بيئات مختاراة.

أولاً، قم بإنشاء ملف yaml الذي يصف المكون:

%%writefile {train_src_dir}/train.yml
# <component>
name: train_credit_defaults_model
display_name: Train Credit Defaults Model
# version: 1 # Not specifying a version will automatically update the version
type: command
inputs:
  train_data: 
    type: uri_folder
  test_data: 
    type: uri_folder
  learning_rate:
    type: number     
  registered_model_name:
    type: string
outputs:
  model:
    type: uri_folder
code: .
environment:
  # for this step, we'll use an AzureML curate environment
  azureml://registries/azureml/environments/sklearn-1.0/labels/latest
command: >-
  python train.py 
  --train_data ${{inputs.train_data}} 
  --test_data ${{inputs.test_data}} 
  --learning_rate ${{inputs.learning_rate}}
  --registered_model_name ${{inputs.registered_model_name}} 
  --model ${{outputs.model}}
# </component>

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

# importing the Component Package
from azure.ai.ml import load_component

# Loading the component from the yml file
train_component = load_component(source=os.path.join(train_src_dir, "train.yml"))

# Now register the component to the workspace
train_component = ml_client.create_or_update(train_component)

# Create and register the component in your workspace
print(
    f"Component {train_component.name} with Version {train_component.version} is registered"
)

مرجع SDK:

إنشاء خط الأنابيب من المكونات

بعد أن تحدد وتسجل مكوناتك، ابدأ بتنفيذ خط الأنابيب.

الدوال load_component() التي تعيد بايثون تعمل مثل أي دالة بايثون عادية. استخدمهم في خط أنابيب لاستدعاء كل خطوة.

لبرمجة خط الأنابيب، استخدم مصمم تزيين محدد @dsl.pipeline يحدد خطوط أنابيب Azure Machine Learning. في الديكوريتور، حدد وصف خط الأنابيب والموارد الافتراضية مثل الحساب والتخزين. مثل دالة Python، يمكن أن يكون للبنية الأساسية لبرنامج ربط العمليات التجارية مدخلات. يمكنك إنشاء عدة نسخ من خط أنابيب واحد مع مدخلات مختلفة.

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

# the dsl decorator tells the sdk that we are defining an Azure Machine Learning pipeline
from azure.ai.ml import dsl, Input, Output


@dsl.pipeline(
    compute="serverless",  # "serverless" value runs pipeline on serverless compute
    description="E2E data_perp-train pipeline",
)
def credit_defaults_pipeline(
    pipeline_job_data_input,
    pipeline_job_test_train_ratio,
    pipeline_job_learning_rate,
    pipeline_job_registered_model_name,
):
    # using data_prep_function like a python call with its own inputs
    data_prep_job = data_prep_component(
        data=pipeline_job_data_input,
        test_train_ratio=pipeline_job_test_train_ratio,
    )

    # using train_func like a python call with its own inputs
    train_job = train_component(
        train_data=data_prep_job.outputs.train_data,  # note: using outputs from previous step
        test_data=data_prep_job.outputs.test_data,  # note: using outputs from previous step
        learning_rate=pipeline_job_learning_rate,  # note: using a pipeline input as parameter
        registered_model_name=pipeline_job_registered_model_name,
    )

    # a pipeline returns a dictionary of outputs
    # keys will code for the pipeline output identifier
    return {
        "pipeline_job_train_data": data_prep_job.outputs.train_data,
        "pipeline_job_test_data": data_prep_job.outputs.test_data,
    }

مرجع SDK:

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

registered_model_name = "credit_defaults_model"

# Let's instantiate the pipeline with the parameters of our choice
pipeline = credit_defaults_pipeline(
    pipeline_job_data_input=Input(type="uri_file", path=credit_data.path),
    pipeline_job_test_train_ratio=0.25,
    pipeline_job_learning_rate=0.05,
    pipeline_job_registered_model_name=registered_model_name,
)

مرجع SDK:

إرسال المهمة

الآن قدم المهمة لتشغيلها في Azure Machine Learning. هذه المرة، استخدم create_or_update على ml_client.jobs.

مرر اسم تجربة. التجربة هي حاوية لكل التكرارات التي يقوم بها المرء في مشروع معين. جميع المهام المقدمة تحت نفس اسم التجربة تظهر جنبا إلى جنب في Azure Machine Learning studio.

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

# submit the pipeline job
pipeline_job = ml_client.jobs.create_or_update(
    pipeline,
    # Project's name
    experiment_name="e2e_registered_components",
)
ml_client.jobs.stream(pipeline_job.name)

مرجع SDK:

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

انقر نقرا مزدوجا فوق مكون نموذج Train Credit Defaults.

هناك نتيجتان مهمتان تودون رؤيتها في التدريب:

  • عرض سجلاتك:

    1. حدد علامة التبويب Outputs+logs.
    2. افتح المجلدات إلى user_logs>std_log.txt يعرض هذا القسم stdout تشغيل البرنامج النصي. لقطة شاشة لـ std_log.txt.
  • عرض المقاييس: حدد علامة التبويب Metrics . يعرض هذا القسم مقاييس مسجلة مختلفة. في هذا المثال، يقوم mlflow autologging بتسجيل مقاييس التدريب تلقائيا.

    لقطة شاشة لعرض metrics.txt المسجل.

نشر النموذج كنقطة نهاية عبر الإنترنت

لمزيد من المعلومات حول نشر نموذجك على نقطة نهاية عبر الإنترنت، راجع "نشر نموذج كدليل تعليمي لنقطة نهاية عبر الإنترنت".

تنظيف الموارد

إذا كنت تخطط للاستمرار في دروس أخرى، انتقل إلى الخطوة التالية.

إيقاف حساب مثيل

إذا لم تكن ستستخدم نسخة الحوسبة الآن، توقف عن ذلك:

  1. في الاستوديو، في الجزء الأيمن، حدد Compute.
  2. في علامات التبويب العلوية، حدد Compute instances.
  3. حدد "compute instance" في القائمة.
  4. في شريط الأدوات العلوي، حدد "Stop".

حذف كافة الموارد

هام

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

إذا كنت لا تخطط لاستخدام الموارد التي أنشأتها، فاحذفها، حتى لا تتحمل أي رسوم:

  1. في مدخل Microsoft Azure، في مربع البحث، أدخل Resource groups وحددها من النتائج.

  2. من القائمة، حدد مجموعة الموارد التي أنشأتها.

  3. في صفحة Overview ، حدد Delete resource group.

    لقطة شاشة للتحديدات لحذف مجموعة موارد في مدخل Microsoft Azure.

  4. أدخل اسم مجموعة الموارد. ثم حدد حذف.

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