مشاركة عبر


إنشاء وتشغيل مسارات التعلم الآلي باستخدام المكونات باستخدام Azure Machine Learning SDK v2

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

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

يدرب مسار المثال شبكة عصبية التفافية صغيرة من Keras لتصنيف الصور في مجموعة بيانات Fashion MNIST . يبدو المسار كما يلي:

لقطة شاشة تعرض رسما بيانيا للبنية الأساسية لبرنامج ربط العمليات التجارية لمثال تصنيف الصور.

في هذه المقالة، تكمل المهام التالية:

  • إعداد بيانات الإدخال لمهمة المسار
  • إنشاء ثلاثة مكونات لإعداد البيانات وتدريب نموذج وتسجيل النموذج
  • إنشاء مسار من المكونات
  • الوصول إلى مساحة عمل تحتوي على حساب
  • إرسال مهمة البنية الأساسية لبرنامج ربط العمليات التجارية
  • مراجعة مخرجات المكونات والشبكة العصبية المدربة
  • (اختياري) تسجيل المكون لمزيد من إعادة الاستخدام والمشاركة داخل مساحة العمل

إذا لم يكن لديك اشتراك Azure، فبادر بإنشاء حساب مجاني قبل البدء. جرب الإصدار المجاني أو المدفوع الخاص بـ Azure Machine Learning اليوم.

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

  • مساحة عمل للتعلم الآلي من Microsoft Azure. إذا لم يكن لديك واحد، فأكمل البرنامج التعليمي إنشاء الموارد.
  • بيئة Python مع تثبيت Azure Machine Learning Python SDK v2. للحصول على إرشادات التثبيت، راجع بدء الاستخدام. هذه البيئة مخصصة لتعريف موارد Azure التعلم الآلي والتحكم فيها وهي منفصلة عن البيئة المستخدمة في وقت التشغيل للتدريب.
  • نسخة من مستودع الأمثلة.

لتشغيل أمثلة التدريب ، قم أولا باستنساخ مستودع الأمثلة وانتقل إلى الدليل sdk :

git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples/sdk

بدء جلسة عمل Python تفاعلية

تستخدم هذه المقالة Azure Machine Learning Python SDK لإنشاء مسار التعلم الآلي من Azure والتحكم فيه. تفترض المقالة أنك تقوم بتشغيل مقتطفات التعليمات البرمجية بشكل تفاعلي إما في بيئة Python REPL أو دفتر ملاحظات Jupyter.

تستند هذه المقالة إلى دفتر ملاحظات image_classification_keras_minist_convnet.ipynb في sdk/python/jobs/pipelines/2e_image_classification_keras_minist_convnet دليل مستودع أمثلة التعلم الآلي من Microsoft Azure .

استيراد المكتبات المطلوبة

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

# import required libraries
from azure.identity import DefaultAzureCredential, InteractiveBrowserCredential

from azure.ai.ml import MLClient
from azure.ai.ml.dsl import pipeline
from azure.ai.ml import load_component

تحضير بيانات الإدخال لوظيفة خط التدفق الخاص بك

تحتاج إلى إعداد بيانات الإدخال لمسار تصنيف الصور.

Fashion MNIST عبارة عن مجموعة بيانات من صور الموضة مقسمة إلى 10 فئات. كل صورة هي صورة تدرج الرمادي 28 × 28. هناك 60,000 صورة تدريب و10,000 صورة اختبار.

import urllib3
import shutil
import gzip
import os
from pathlib import Path
from azure.ai.ml import Input

base_url = "https://azureopendatastorage.blob.core.windows.net/mnist/"
base_dir = Path("mnist")
if not base_dir.exists():
    base_dir.mkdir(parents=True)

c = urllib3.PoolManager()
for target_file in [
    "train-images-idx3-ubyte.gz",
    "train-labels-idx1-ubyte.gz",
    "t10k-images-idx3-ubyte.gz",
    "t10k-labels-idx1-ubyte.gz",
]:
    if (base_dir / target_file[:-3]).exists():
        continue
    with c.request("GET", base_url + target_file, preload_content=False) as resp, open(
        base_dir / target_file, "wb"
    ) as out_file:
        shutil.copyfileobj(resp, out_file)
        resp.release_conn()
    with gzip.open(base_dir / target_file, "rb") as f_in, open(
        base_dir / target_file[:-3], "wb"
    ) as f_out:
        shutil.copyfileobj(f_in, f_out)
    os.unlink(base_dir / target_file)

mnist_ds = Input(path=base_dir.as_posix())

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

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

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

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

  • إعداد البيانات للتدريب والاختبار
  • تدريب شبكة عصبية لتصنيف الصور باستخدام بيانات التدريب
  • تسجيل النموذج باستخدام بيانات الاختبار

لكل مكون، يمكنك إكمال الخطوات التالية:

  1. إعداد البرنامج النصي Python الذي يحتوي على منطق التنفيذ
  2. تحديد واجهة المكون
  3. إضافة بيانات تعريف أخرى للمكون، بما في ذلك بيئة وقت التشغيل والأمر لتشغيل المكون

توضح الأقسام التالية كيفية إنشاء المكونات بطريقتين. بالنسبة للمكونين الأولين، يمكنك استخدام دالة Python. بالنسبة للمكون الثالث، يمكنك استخدام تعريف YAML.

إنشاء مكون إعداد البيانات

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

إذا كنت تتابع جنبا إلى جنب مع المثال في مستودع أمثلة التعلم الآلي من Azure، فإن الملفات المصدر متوفرة بالفعل في prep المجلد. يحتوي هذا المجلد على ملفين لإنشاء المكون: prep_component.py، الذي يعرف المكون، و conda.yaml، الذي يحدد بيئة وقت التشغيل للمكون.

تعريف المكون باستخدام دالة Python

باستخدام الوظيفة command_component() كمصمم ديكور ، يمكنك بسهولة تحديد واجهة المكون والبيانات الوصفية الخاصة به والتعليمات البرمجية لتشغيلها من وظيفة Python. يتم تحويل كل دالة Python مزخرفة إلى مواصفات ثابتة واحدة (YAML) يمكن لخدمة خط الأنابيب معالجتها.

# Converts MNIST-formatted files at the passed-in input path to training data output path and test data output path
import os
from pathlib import Path
from mldesigner import command_component, Input, Output


@command_component(
    name="prep_data",
    version="1",
    display_name="Prep Data",
    description="Convert data to CSV file, and split to training and test data",
    environment=dict(
        conda_file=Path(__file__).parent / "conda.yaml",
        image="mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04",
    ),
)
def prepare_data_component(
    input_data: Input(type="uri_folder"),
    training_data: Output(type="uri_folder"),
    test_data: Output(type="uri_folder"),
):
    convert(
        os.path.join(input_data, "train-images-idx3-ubyte"),
        os.path.join(input_data, "train-labels-idx1-ubyte"),
        os.path.join(training_data, "mnist_train.csv"),
        60000,
    )
    convert(
        os.path.join(input_data, "t10k-images-idx3-ubyte"),
        os.path.join(input_data, "t10k-labels-idx1-ubyte"),
        os.path.join(test_data, "mnist_test.csv"),
        10000,
    )


def convert(imgf, labelf, outf, n):
    f = open(imgf, "rb")
    l = open(labelf, "rb")
    o = open(outf, "w")

    f.read(16)
    l.read(8)
    images = []

    for i in range(n):
        image = [ord(l.read(1))]
        for j in range(28 * 28):
            image.append(ord(f.read(1)))
        images.append(image)

    for image in images:
        o.write(",".join(str(pix) for pix in image) + "\n")
    f.close()
    o.close()
    l.close()

يحدد الكود السابق مكونا باسم العرض Prep Data باستخدام @command_component الديكور:

  • name هو المعرف الفريد للمكون

  • version هو الإصدار الحالي من المكون. يمكن أن يكون للمكون إصدارات متعددة

  • display_name هو اسم عرض مألوف للمكون لواجهة المستخدم

  • description يصف المهمة التي يمكن للمكون إكمالها

  • environment يحدد بيئة وقت التشغيل للمكون باستخدام ملف conda.yaml

    conda.yaml يحتوي الملف على جميع الحزم المستخدمة للمكون:

    name: imagekeras_prep_conda_env
    channels:
      - defaults
    dependencies:
      - python=3.7.11
      - pip=20.0
      - pip:
        - mldesigner==0.1.0b4
    
  • prepare_data_component تحدد الدالة مدخلا واحدا ومخرجين input_data ل training_data وtest_data

    • input_data هو مسار بيانات الإدخال
    • training_data وهي test_data مسارات بيانات الإخراج لبيانات التدريب وبيانات الاختبار
  • يقوم المكون بتحويل البيانات من input_data إلى training_data ملف .csv لبيانات التدريب وملف test_data .csv لبيانات الاختبار

في واجهة مستخدم الاستوديو، يظهر مكون على النحو التالي:

  • كتلة في الرسم البياني لخط أنابيب
  • input_data، training_dataوهي test_data منافذ للمكون ، والتي تتصل بمكونات أخرى لتدفق البيانات

لقطة شاشة لمكون Prep Data في واجهة المستخدم والتعليمة البرمجية.

لقد أعددت الآن جميع ملفات المصدر للمكون Prep Data .

إنشاء مكون تدريب النموذج

في هذا القسم، يمكنك إنشاء مكون لتدريب نموذج تصنيف الصور باستخدام دالة Python، كما فعلت مع المكون Prep Data .

نظرا لأن منطق التدريب أكثر تعقيدا ، فإنك تضع كود التدريب في ملف Python منفصل.

الملفات المصدر لهذا المكون موجودة في train المجلد في مستودع أمثلة التعلم الآلي من Azure. يحتوي هذا المجلد على ثلاثة ملفات لتكوين المكون:

  • train.py يحتوي على منطق تدريب النموذج
  • train_component.py يحدد واجهة المكون ويستورد الدالة من train.py
  • conda.yaml يحدد بيئة وقت التشغيل للمكون

الحصول على برنامج نصي يحتوي على المنطق

train.py يحتوي الملف على دالة Python عادية تقوم بتنفيذ المنطق لتدريب شبكة Keras العصبية لتصنيف الصور. لعرض التعليمات البرمجية ، راجع ملف train.py على GitHub.

تحديد المكون باستخدام دالة Python

بعد تحديد وظيفة التدريب، يمكنك استخدامها @command_component في Azure Machine Learning SDK v2 لالتفاف وظيفتك كمكون للاستخدام في مسارات التعلم الآلي من Microsoft Azure:

import os
from pathlib import Path
from mldesigner import command_component, Input, Output


@command_component(
    name="train_image_classification_keras",
    version="1",
    display_name="Train Image Classification Keras",
    description="train image classification with keras",
    environment=dict(
        conda_file=Path(__file__).parent / "conda.yaml",
        image="mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04",
    ),
)
def keras_train_component(
    input_data: Input(type="uri_folder"),
    output_model: Output(type="uri_folder"),
    epochs=10,
):
    # avoid dependency issue, execution logic is in train() func in train.py file
    from train import train

    train(input_data, output_model, epochs)

تحدد التعليمات البرمجية السابقة مكونا باسم العرض Train Image Classification Keras باستخدام @command_component.

تعرف الوظيفة keras_train_component :

  • مدخلات واحدة ، input_dataلبيانات التدريب المصدر
  • مدخل واحد ، epochsوالذي يحدد عدد الفترات التي يجب استخدامها أثناء التدريب
  • إخراج واحد ، output_modelوالذي يحدد مسار الإخراج لملف النموذج

القيمة الافتراضية لـ epochs هي 10. منطق هذا المكون يأتي من الدالة train() في train.py.

يحتوي مكون نموذج القطار على تكوين أكثر تعقيدا من مكون إعداد البيانات. conda.yaml يبدو كما يلي:

name: imagekeras_train_conda_env
channels:
  - defaults
dependencies:
  - python=3.8
  - pip=20.2
  - pip:
    - mldesigner==0.1.0b12
    - azureml-mlflow==1.50.0
    - tensorflow==2.7.0
    - numpy==1.21.4
    - scikit-learn==1.0.1
    - pandas==1.3.4
    - matplotlib==3.2.2
    - protobuf==3.20.0

لقد أعددت الآن جميع الملفات المصدر للمكون Train Image Classification Keras .

إنشاء مكون تسجيل النموذج

في هذا القسم، يمكنك إنشاء مكون لتسجيل النموذج المدرب باستخدام مواصفات YAML والبرنامج النصي.

إذا كنت تتابع جنبا إلى جنب مع المثال في مستودع أمثلة التعلم الآلي من Azure، فإن الملفات المصدر متوفرة بالفعل في score المجلد. يحتوي هذا المجلد على ثلاثة ملفات لتكوين المكون:

  • score.py يحتوي على الكود المصدري للمكون
  • score.yaml يحدد الواجهة والتفاصيل الأخرى للمكون
  • conda.yaml يحدد بيئة وقت التشغيل للمكون

الحصول على برنامج نصي يحتوي على المنطق

يحتوي الملف score.py على دالة Python عادية تنفذ منطق تسجيل النموذج:

from tensorflow import keras
from keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten
from keras.layers import Conv2D, MaxPooling2D
from tensorflow.keras.layers import BatchNormalization
from tensorflow.keras.utils import to_categorical
from keras.callbacks import Callback
from keras.models import load_model

import argparse
from pathlib import Path
import numpy as np
import pandas as pd
import os
import matplotlib.pyplot as plt
import mlflow


def get_file(f):

    f = Path(f)
    if f.is_file():
        return f
    else:
        files = list(f.iterdir())
        if len(files) == 1:
            return files[0]
        else:
            raise Exception("********This path contains more than one file*******")


def parse_args():
    # setup argparse
    parser = argparse.ArgumentParser()

    # add arguments
    parser.add_argument(
        "--input_data", type=str, help="path containing data for scoring"
    )
    parser.add_argument(
        "--input_model", type=str, default="./", help="input path for model"
    )

    parser.add_argument(
        "--output_result", type=str, default="./", help="output path for model"
    )

    # parse args
    args = parser.parse_args()

    # return args
    return args


def score(input_data, input_model, output_result):

    test_file = get_file(input_data)
    data_test = pd.read_csv(test_file, header=None)

    img_rows, img_cols = 28, 28
    input_shape = (img_rows, img_cols, 1)

    # Read test data
    X_test = np.array(data_test.iloc[:, 1:])
    y_test = to_categorical(np.array(data_test.iloc[:, 0]))
    X_test = (
        X_test.reshape(X_test.shape[0], img_rows, img_cols, 1).astype("float32") / 255
    )

    # Load model
    files = [f for f in os.listdir(input_model) if f.endswith(".h5")]
    model = load_model(input_model + "/" + files[0])

    # Log metrics of the model
    eval = model.evaluate(X_test, y_test, verbose=0)

    mlflow.log_metric("Final test loss", eval[0])
    print("Test loss:", eval[0])

    mlflow.log_metric("Final test accuracy", eval[1])
    print("Test accuracy:", eval[1])

    # Score model using test data
    y_predict = model.predict(X_test)
    y_result = np.argmax(y_predict, axis=1)

    # Output result
    np.savetxt(output_result + "/predict_result.csv", y_result, delimiter=",")


def main(args):
    score(args.input_data, args.input_model, args.output_result)


# run script
if __name__ == "__main__":
    # parse args
    args = parse_args()

    # call main function
    main(args)

تأخذ التعليمات البرمجية في score.py ثلاث وسيطات سطر الأوامر: input_dataو input_modelو.output_result يقوم البرنامج بتسجيل نموذج الإدخال باستخدام بيانات الإدخال ثم إخراج النتيجة.

تحديد المكون باستخدام YAML

في هذا القسم، ستتعرف على كيفية إنشاء مواصفات مكون بتنسيق مواصفات مكون YAML الصالح. يحدد هذا الملف المعلومات التالية:

  • البيانات الوصفية: الاسم واسم العرض والإصدار والنوع وما إلى ذلك
  • الواجهة: المدخلات والمخرجات
  • الأمر والتعليمات البرمجية والبيئة: الأمر والتعليمات البرمجية والبيئة المستخدمة لتشغيل المكون
$schema: https://azuremlschemas.azureedge.net/latest/commandComponent.schema.json
type: command

name: score_image_classification_keras
display_name: Score Image Classification Keras
inputs:
  input_data: 
    type: uri_folder
  input_model:
    type: uri_folder
outputs:
  output_result:
    type: uri_folder
code: ./
command: python score.py --input_data ${{inputs.input_data}} --input_model ${{inputs.input_model}} --output_result ${{outputs.output_result}}
environment:
  conda_file: ./conda.yaml
  image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04
  • name هو المعرف الفريد للمكون. اسم العرض الخاص به هو Score Image Classification Keras
  • يحتوي هذا المكون على مدخلين ومخرجات واحدة
  • يتم تعريف مسار التعليمات البرمجية المصدر في code القسم . عند تشغيل المكون في السحابة، يتم تحميل جميع الملفات من هذا المسار كلقطة للمكون
  • يحدد القسم command الأمر المراد تنفيذه عند تشغيل المكون
  • environment يحتوي القسم على صورة Docker وملف conda YAML. الملف المصدر موجود في نموذج المستودع

لديك الآن جميع الملفات المصدر لمكون تسجيل النموذج.

تحميل المكونات لإنشاء مسار

يمكنك استيراد مكون إعداد البيانات ومكون تدريب النموذج، والتي يتم تعريفها بواسطة وظائف Python، تماما مثل وظائف Python العادية.

تستورد التعليمات البرمجية prepare_data_component() التالية الدالتين و keras_train_component() من prep_component.py الملف في prep المجلد والملف train_component في train المجلد، على التوالي.

%load_ext autoreload
%autoreload 2

# load component function from component python file
from prep.prep_component import prepare_data_component
from train.train_component import keras_train_component

# print hint of components
help(prepare_data_component)
help(keras_train_component)

يمكنك استخدام الدالة load_component() لتحميل مكون النتيجة، الذي يتم تعريفه بواسطة YAML.

# load component function from yaml
keras_score_component = load_component(source="./score/score.yaml")

تحميل المكونات المسجلة من مساحة العمل

ملاحظه

لتحميل المكونات المسجلة من مساحة العمل الخاصة بك، يجب عليك أولا تكوين اتصال مساحة العمل كما هو موضح في قسم الوصول إلى مساحة العمل الخاصة بك . الكائن ml_client مطلوب للعمليات التالية.

إذا كان لديك مكونات مسجلة بالفعل في مساحة العمل الخاصة بك، فيمكنك تحميلها مباشرة باستخدام الطريقة ml_client.components.get() . يكون هذا الأسلوب مفيدا عندما تريد إعادة استخدام المكونات التي تم تسجيلها مسبقا أو التي شاركها أعضاء الفريق الآخرون.

# Load a registered component by name and version
registered_component = ml_client.components.get(
    name="my_registered_component", 
    version="1.0.0"
)

# Load the latest version of a registered component
latest_component = ml_client.components.get(
    name="my_registered_component"
)

يمكنك سرد جميع المكونات المتوفرة في مساحة العمل الخاصة بك للعثور على المكونات التي تحتاجها:

# List all components in the workspace
components = ml_client.components.list()
for component in components:
    print(f"Name: {component.name}, Version: {component.version}")

بمجرد التحميل ، يمكنك استخدام المكونات المسجلة في خط الأنابيب الخاص بك تماما مثل المكونات التي تم تحميلها من الملفات المحلية أو وظائف Python.

بناء خط التدفق الخاص بك

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

ملاحظه

لاستخدام الحوسبة بلا خادم، أضف from azure.ai.ml.entities import ResourceConfiguration إلى أعلى الملف. ثم استبدل:

  • default_compute=cpu_compute_target مع default_compute="serverless"
  • train_node.compute = gpu_compute_target مع train_node.resources = ResourceConfiguration(instance_type="Standard_NC6s_v3", instance_count=2)
# define a pipeline containing 3 nodes: Prepare data node, train node, and score node
@pipeline(
    default_compute=cpu_compute_target,
)
def image_classification_keras_minist_convnet(pipeline_input_data):
    """E2E image classification pipeline with keras using python sdk."""
    prepare_data_node = prepare_data_component(input_data=pipeline_input_data)

    train_node = keras_train_component(
        input_data=prepare_data_node.outputs.training_data
    )
    train_node.compute = gpu_compute_target

    score_node = keras_score_component(
        input_data=prepare_data_node.outputs.test_data,
        input_model=train_node.outputs.output_model,
    )


# create a pipeline
pipeline_job = image_classification_keras_minist_convnet(pipeline_input_data=mnist_ds)

يحتوي المسار على حساب cpu_compute_targetافتراضي . إذا لم تحدد الحساب لعقدة معينة، تشغيل هذه العقدة على الحساب الافتراضي.

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

يحتوي خط الأنابيب على ثلاث عقد: prepare_data_node، train_nodeو:score_node

  • يستخدم قيمة input_data من prepare_data_nodepipeline_input_data
  • من input_datatrain_node هو ناتج training_dataprepare_data_node
  • من input_datascore_node هو ناتج test_dataprepare_data_node، و هو من input_modeloutput_modeltrain_node
  • نظرا لتدريب train_node نموذج CNN ، يمكنك تحديد حسابه على أنه gpu_compute_target لتحسين أداء التدريب

إرسال وظيفة خط التدفق الخاص بك

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

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

تكوين بيانات الاعتماد

تستخدمه DefaultAzureCredential للوصول إلى مساحة العمل. DefaultAzureCredential يجب أن يكون قادراً على التعامل مع معظم سيناريوهات مصادقة Azure SDK.

إذا DefaultAzureCredential لم يعمل لك، فشاهد مثال تكوين بيانات الاعتماد هذاوحزمة الهوية.

try:
    credential = DefaultAzureCredential()
    # Check if given credential can get token successfully.
    credential.get_token("https://management.azure.com/.default")
except Exception as ex:
    # Fall back to InteractiveBrowserCredential in case DefaultAzureCredential not work
    credential = InteractiveBrowserCredential()

الحصول على مقبض لمساحة عمل تحتوي على حساب

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

# Get a handle to workspace
ml_client = MLClient.from_config(credential=credential)

# Retrieve an already attached Azure Machine Learning Compute.
cpu_compute_target = "cpu-cluster"
print(ml_client.compute.get(cpu_compute_target))
gpu_compute_target = "gpu-cluster"
print(ml_client.compute.get(gpu_compute_target))

هام

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

إرسال مهمة المسار إلى مساحة العمل

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

pipeline_job = ml_client.jobs.create_or_update(
    pipeline_job, experiment_name="pipeline_samples"
)
pipeline_job

ترسل التعليمات البرمجية السابقة مهمة مسار تصنيف الصور هذه إلى تجربة تسمى pipeline_samples. يقوم تلقائيا بإنشاء التجربة إذا لم تكن موجودة. pipeline_input_data يستخدم fashion_ds.

تكتمل الدعوة لإرسال التجربة بسرعة وتنتج مخرجات مشابهة لهذا:

التجربه اسم النوع الحالة صفحة التفاصيل
pipeline_samples sharp_pipe_4gvqx6h1fb خط انابيب اعداد ارتباط إلى استوديو التعلم الآلي من Microsoft Azure

يمكنك مراقبة تشغيل البنية الأساسية لبرنامج ربط العمليات التجارية عن طريق تحديد الارتباط. أو يمكنك الانتظار حتى يكتمل عن طريق تشغيل هذا الرمز:

# wait until the job completes
ml_client.jobs.stream(pipeline_job.name)

هام

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

التحقق من المخرجات وتصحيح مسارك في واجهة المستخدم

يمكنك تحديد Link to Azure Machine Learning studio، وهي صفحة تفاصيل المهمة للبنية الأساسية لبرنامج ربط العمليات التجارية الخاصة بك. ترى الرسم البياني لخط الأنابيب:

لقطة شاشة توضح صفحة تفاصيل مهمة التدفق.

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

(اختياري) تسجيل المكونات في مساحة العمل

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

try:
    # try get back the component
    prep = ml_client.components.get(name="prep_data", version="1")
except:
    # if not exists, register component using following code
    prep = ml_client.components.create_or_update(prepare_data_component)

# list all components registered in workspace
for c in ml_client.components.list():
    print(c)

يمكنك استخدام ml_client.components.get() للحصول على مكون مسجل حسب الاسم والإصدار. يمكنك استخدام ml_client.components.create_or_update() لتسجيل مكون تم تحميله مسبقا من دالة Python أو YAML.

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