البرنامج التعليمي: بناء مسار التعليم الآلي من Azure لتصنيف الصور

ينطبق على: Python SDK azureml v1

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

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

في هذا البرنامج التعليمي، تقوم بإكمال المهام التالية:

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

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

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

  • أكمل إنشاء الموارد للبدء إذا لم يكن لديك بالفعل مساحة عمل Azure التعلم الآلي.
  • بيئة Python التي قمت فيها بتثبيت كل من azureml-core الحزم و azureml-pipeline. هذه البيئة مخصصة لتعريف موارد Azure التعلم الآلي والتحكم فيها وهي منفصلة عن البيئة المستخدمة في وقت التشغيل للتدريب.

هام

حاليا، أحدث إصدار Python متوافق مع azureml-pipeline هو Python 3.8. إذا واجهت صعوبة في تثبيت الحزمة azureml-pipeline، فتأكد من أن هذا python --version إصدار متوافق. راجع وثائق مدير بيئة Python الظاهرية (venv، condaوما إلى ذلك) للحصول على الإرشادات.

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

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

  • يستند هذا البرنامج التعليمي إلى دفتر الملاحظات image-classification.ipynb الموجود في python-sdk/tutorial/using-pipelines دليل مستودع Azure التعلم الآلي Examples. التعليمات البرمجية المصدر للخطوات نفسها موجودة في keras-mnist-fashion الدليل الفرعي.

أنواع الاستيراد

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

import os
import azureml.core
from azureml.core import (
    Workspace,
    Experiment,
    Dataset,
    Datastore,
    ComputeTarget,
    Environment,
    ScriptRunConfig
)
from azureml.data import OutputFileDatasetConfig
from azureml.core.compute import AmlCompute
from azureml.core.compute_target import ComputeTargetException
from azureml.pipeline.steps import PythonScriptStep
from azureml.pipeline.core import Pipeline

# check core SDK version number
print("Azure Machine Learning SDK Version: ", azureml.core.VERSION)

يجب أن يكون إصدار Azure التعلم الآلي SDK 1.37 أو أحدث. إذا لم يكن كذلك، قم بالترقية باستخدام pip install --upgrade azureml-core.

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

أنشئ كائن مساحة عمل من مساحة عمل Azure Machine Learning الموجودة حاليًا.

workspace = Workspace.from_config()

هام

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

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

إنشاء Experiment كائن للاحتفاظ بنتائج عمليات تشغيل البنية الأساسية لبرنامج ربط العمليات التجارية الخاصة بك:

exp = Experiment(workspace=workspace, name="keras-mnist-fashion")

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

use_gpu = False

# choose a name for your cluster
cluster_name = "gpu-cluster" if use_gpu else "cpu-cluster"

found = False
# Check if this compute target already exists in the workspace.
cts = workspace.compute_targets
if cluster_name in cts and cts[cluster_name].type == "AmlCompute":
    found = True
    print("Found existing compute target.")
    compute_target = cts[cluster_name]
if not found:
    print("Creating a new compute target...")
    compute_config = AmlCompute.provisioning_configuration(
        vm_size= "STANDARD_NC6" if use_gpu else "STANDARD_D2_V2"
        # vm_priority = 'lowpriority', # optional
        max_nodes=4,
    )

    # Create the cluster.
    compute_target = ComputeTarget.create(workspace, cluster_name, compute_config)

    # Can poll for a minimum number of nodes and for a specific timeout.
    # If no min_node_count is provided, it will use the scale settings for the cluster.
    compute_target.wait_for_completion(
        show_output=True, min_node_count=None, timeout_in_minutes=10
    )
# For a more detailed view of current AmlCompute status, use get_status().print(compute_target.get_status().serialize())

إشعار

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

إنشاء مجموعة بيانات للبيانات المخزنة في Azure

Fashion-MNIST هي مجموعة بيانات من صور الأزياء مقسمة إلى 10 فئات. كل صورة هي صورة تدرج الرمادي 28x28 وهناك 60,000 تدريب و10,000 صورة اختبار. كمشكلة في تصنيف الصور، فإن Fashion-MNIST أصعب من قاعدة بيانات MNIST الكلاسيكية ذات الأرقام المكتوبة بخط اليد. يتم توزيعه في نفس النموذج الثنائي المضغوط مثل قاعدة البيانات الرقمية الأصلية المكتوبة بخط اليد .

لإنشاء Dataset يشير إلى البيانات المستندة إلى ويب، قم بتشغيل:

data_urls = ["https://data4mldemo6150520719.blob.core.windows.net/demo/mnist-fashion"]
fashion_ds = Dataset.File.from_files(data_urls)

# list the files referenced by fashion_ds
print(fashion_ds.to_path())

تكتمل هذه التعليمة البرمجية بسرعة. تظل البيانات الأساسية في مورد تخزين Azure المحدد في data_urls الصفيف.

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

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

datastore = workspace.get_default_datastore()
prepared_fashion_ds = OutputFileDatasetConfig(
    destination=(datastore, "outputdataset/{run-id}")
).register_on_complete(name="prepared_fashion_ds")

تحدد التعليمات البرمجية أعلاه مجموعة بيانات تستند إلى إخراج خطوة البنية الأساسية لبرنامج ربط العمليات التجارية. سيتم وضع الملفات الأساسية المعالجة في تخزين البيانات الثنائية الكبيرة الافتراضي لمساحة العمل في المسار المحدد في destination. سيتم تسجيل مجموعة البيانات في مساحة العمل باسم prepared_fashion_ds.

إنشاء مصدر خطوة المسار

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

إذا كنت تتابع مع المثال في Azure التعلم الآلي Examples repo، فإن الملف المصدر متاح بالفعل ك keras-mnist-fashion/prepare.py.

إذا كنت تعمل من البداية، فقم بإنشاء دليل فرعي يسمى keras-mnist-fashion/. إنشاء ملف جديد، وإضافة التعليمات البرمجية التالية إليه، وتسمية الملف prepare.py.

# prepare.py
# Converts MNIST-formatted files at the passed-in input path to a passed-in output path
import os
import sys

# Conversion routine for MNIST binary format
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()

# The MNIST-formatted source
mounted_input_path = sys.argv[1]
# The output directory at which the outputs will be written
mounted_output_path = sys.argv[2]

# Create the output directory
os.makedirs(mounted_output_path, exist_ok=True)

# Convert the training data
convert(
    os.path.join(mounted_input_path, "mnist-fashion/train-images-idx3-ubyte"),
    os.path.join(mounted_input_path, "mnist-fashion/train-labels-idx1-ubyte"),
    os.path.join(mounted_output_path, "mnist_train.csv"),
    60000,
)

# Convert the test data
convert(
    os.path.join(mounted_input_path, "mnist-fashion/t10k-images-idx3-ubyte"),
    os.path.join(mounted_input_path, "mnist-fashion/t10k-labels-idx1-ubyte"),
    os.path.join(mounted_output_path, "mnist_test.csv"),
    10000,
)

تأخذ التعليمات البرمجية في prepare.py وسيطتين سطر الأوامر: يتم تعيين الأولى إلى mounted_input_path والثانية إلى mounted_output_path. إذا لم يكن هذا الدليل الفرعي موجودا، فإن الاستدعاء os.makedirsلإنشائه. ثم يحول البرنامج بيانات التدريب والاختبار ويخرج الملفات المفصولة بفواصل إلى mounted_output_path.

تحديد خطوة المسار

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

script_folder = "./keras-mnist-fashion"

prep_step = PythonScriptStep(
    name="prepare step",
    script_name="prepare.py",
    # On the compute target, mount fashion_ds dataset as input, prepared_fashion_ds as output
    arguments=[fashion_ds.as_named_input("fashion_ds").as_mount(), prepared_fashion_ds],
    source_directory=script_folder,
    compute_target=compute_target,
    allow_reuse=True,
)

يحدد الاستدعاء إلى PythonScriptStep أنه عند تشغيل خطوة المسار:

  • يتم تحميل جميع الملفات الموجودة في script_folder الدليل إلى compute_target
  • من بين تلك الملفات المصدر التي تم تحميلها، سيتم تشغيل الملف prepare.py
  • fashion_ds سيتم تحميل مجموعات البيانات و prepared_fashion_ds على compute_target وستظهر كدلائل
  • سيكون المسار إلى الملفات fashion_ds هو الوسيطة الأولى إلى prepare.py. في prepare.py، يتم تعيين هذه الوسيطة إلى mounted_input_path
  • سيكون المسار إلى الوسيطة prepared_fashion_ds الثانية إلى prepare.py. في prepare.py، يتم تعيين هذه الوسيطة إلى mounted_output_path
  • لأنه allow_reuse هوTrueلن يتم إعادة تشغيله حتى تتغير الملفات أو المدخلات المصدر الخاصة به
  • سيتم تسمية هذا PythonScriptStepprepare step

تعد الوحدات النمطية وإعادة الاستخدام من الفوائد الرئيسية للبنية الأساسية لبرنامج ربط العمليات التجارية. يمكن لـ Azure التعلم الآلي تحديد التعليمات البرمجية المصدر أو تغييرات مجموعة البيانات تلقائيا. سيتم إعادة استخدام إخراج خطوة غير متأثرة دون إعادة تشغيل الخطوات مرة أخرى إذا كانتallow_reuseTrue. إذا كانت الخطوة تعتمد على مصدر بيانات خارجي إلى Azure التعلم الآلي التي قد تتغير (على سبيل المثال، عنوان URL الذي يحتوي على بيانات المبيعات)، يتم تعيين allow_reuse إلى False وسيتم تشغيل خطوة المسار في كل مرة يتم فيها تشغيل المسار.

إنشاء خطوة التدريب.

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

إنشاء مصدر خطوة التدريب

مع البنية الأساسية لبرنامج ربط العمليات التجارية الأكبر، من الجيد وضع التعليمات البرمجية المصدر لكل خطوة في دليل منفصل (src/prepare/، src/train/وما إلى ذلك) ولكن لهذا البرنامج التعليمي، ما عليك سوى استخدام أو إنشاء الملف train.py في نفس keras-mnist-fashion/ الدليل المصدر.

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

import numpy as np
import pandas as pd
import os
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from azureml.core import Run

# dataset object from the run
run = Run.get_context()
dataset = run.input_datasets["prepared_fashion_ds"]

# split dataset into train and test set
(train_dataset, test_dataset) = dataset.random_split(percentage=0.8, seed=111)

# load dataset into pandas dataframe
data_train = train_dataset.to_pandas_dataframe()
data_test = test_dataset.to_pandas_dataframe()

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

X = np.array(data_train.iloc[:, 1:])
y = to_categorical(np.array(data_train.iloc[:, 0]))

# here we split validation data to optimiza classifier during training
X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=13)

# test data
X_test = np.array(data_test.iloc[:, 1:])
y_test = to_categorical(np.array(data_test.iloc[:, 0]))


X_train = (
    X_train.reshape(X_train.shape[0], img_rows, img_cols, 1).astype("float32") / 255
)
X_test = X_test.reshape(X_test.shape[0], img_rows, img_cols, 1).astype("float32") / 255
X_val = X_val.reshape(X_val.shape[0], img_rows, img_cols, 1).astype("float32") / 255

batch_size = 256
num_classes = 10
epochs = 10

# construct neuron network
model = Sequential()
model.add(
    Conv2D(
        32,
        kernel_size=(3, 3),
        activation="relu",
        kernel_initializer="he_normal",
        input_shape=input_shape,
    )
)
model.add(MaxPooling2D((2, 2)))
model.add(Dropout(0.25))
model.add(Conv2D(64, (3, 3), activation="relu"))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Conv2D(128, (3, 3), activation="relu"))
model.add(Dropout(0.4))
model.add(Flatten())
model.add(Dense(128, activation="relu"))
model.add(Dropout(0.3))
model.add(Dense(num_classes, activation="softmax"))

model.compile(
    loss=keras.losses.categorical_crossentropy,
    optimizer=keras.optimizers.Adam(),
    metrics=["accuracy"],
)

# start an Azure ML run
run = Run.get_context()


class LogRunMetrics(Callback):
    # callback at the end of every epoch
    def on_epoch_end(self, epoch, log):
        # log a value repeated which creates a list
        run.log("Loss", log["loss"])
        run.log("Accuracy", log["accuracy"])


history = model.fit(
    X_train,
    y_train,
    batch_size=batch_size,
    epochs=epochs,
    verbose=1,
    validation_data=(X_val, y_val),
    callbacks=[LogRunMetrics()],
)

score = model.evaluate(X_test, y_test, verbose=0)

# log a single value
run.log("Final test loss", score[0])
print("Test loss:", score[0])

run.log("Final test accuracy", score[1])
print("Test accuracy:", score[1])

plt.figure(figsize=(6, 3))
plt.title("Fashion MNIST with Keras ({} epochs)".format(epochs), fontsize=14)
plt.plot(history.history["accuracy"], "b-", label="Accuracy", lw=4, alpha=0.5)
plt.plot(history.history["loss"], "r--", label="Loss", lw=4, alpha=0.5)
plt.legend(fontsize=12)
plt.grid(True)

# log an image
run.log_image("Loss v.s. Accuracy", plot=plt)

# create a ./outputs/model folder in the compute target
# files saved in the "./outputs" folder are automatically uploaded into run history
os.makedirs("./outputs/model", exist_ok=True)

# serialize NN architecture to JSON
model_json = model.to_json()
# save model JSON
with open("./outputs/model/model.json", "w") as f:
    f.write(model_json)
# save model weights
model.save_weights("./outputs/model/model.h5")
print("model saved in ./outputs/model folder")

يجب أن تكون معظم هذه التعليمات البرمجية مألوفة لمطوري التعلم الآلي:

  • يتم تقسيم البيانات إلى مجموعات تدريب والتحقق من الصحة للتدريب، ومجموعة فرعية اختبار منفصلة للتسجيل النهائي
  • شكل الإدخال هو 28x28x1 (1 فقط لأن الإدخال هو تدرج الرمادي)، سيكون هناك 256 إدخالا في دفعة، وهناك 10 فئات
  • سيكون عدد فترات التدريب 10
  • يحتوي النموذج على ثلاث طبقات التفافية، مع الحد الأقصى للتجمع والتسرب، متبوعا بطبقة كثيفة ورأس softmax
  • تم تركيب النموذج لـ 10 فترات ثم تقييمه
  • تتم كتابة بنية النموذج إلى outputs/model/model.json والأوزان إلى outputs/model/model.h5

ومع ذلك، فإن بعض التعليمات البرمجية خاصة بـ Azure التعلم الآلي. run = Run.get_context() يسترد كائنا Run يحتوي على سياق الخدمة الحالي. train.py يستخدم المصدر هذا run الكائن لاسترداد مجموعة بيانات الإدخال عبر اسمها (بديل للتعليمات البرمجية في prepare.py الذي قام باسترداد مجموعة البيانات عبر argv صفيف وسيطات البرنامج النصي).

runيستخدم الكائن أيضا لتسجيل تقدم التدريب في نهاية كل فترة، وفي نهاية التدريب، لتسجيل الرسم البياني للفقدان والدقة بمرور الوقت.

إنشاء خطوة مسار التدريب

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

أنشئ ملف conda_dependencies.yml باستخدام المحتويات التالية:

dependencies:
- python=3.7
- pip:
  - azureml-core
  - azureml-dataset-runtime
  - keras==2.4.3
  - tensorflow==2.4.3
  - numpy
  - scikit-learn
  - pandas
  - matplotlib

Environment تمثل الفئة بيئة وقت التشغيل التي يتم فيها تشغيل مهمة التعلم الآلي. إقران المواصفات أعلاه مع التعليمات البرمجية للتدريب مع:

keras_env = Environment.from_conda_specification(
    name="keras-env", file_path="./conda_dependencies.yml"
)

train_cfg = ScriptRunConfig(
    source_directory=script_folder,
    script="train.py",
    compute_target=compute_target,
    environment=keras_env,
)

يستخدم إنشاء خطوة التدريب نفسها تعليمة برمجية مشابهة للتعليمات البرمجية المستخدمة لإنشاء خطوة الإعداد:

train_step = PythonScriptStep(
    name="train step",
    arguments=[
        prepared_fashion_ds.read_delimited_files().as_input(name="prepared_fashion_ds")
    ],
    source_directory=train_cfg.source_directory,
    script_name=train_cfg.script,
    runconfig=train_cfg.run_config,
)

إنشاء وتشغيل التدفقات.

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

pipeline = Pipeline(workspace, steps=[prep_step, train_step])
run = exp.submit(pipeline)

يتم تشغيل الكائن الذي Pipeline تقوم بإنشائه في الخاص بك workspace ويتكون من خطوات الإعداد والتدريب التي حددتها.

إشعار

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

يكتمل الاستدعاء submitExperiment بسرعة، وينتج إخراجا مشابها لـ:

Submitted PipelineRun 5968530a-abcd-1234-9cc1-46168951b5eb
Link to Azure Machine Learning Portal: https://ml.azure.com/runs/abc-xyz...

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

run.wait_for_completion(show_output=True)

هام

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

بمجرد اكتمال المسار، يمكنك استرداد المقاييس التي سجلتها في خطوة التدريب:

run.find_step_run("train step")[0].get_metrics()

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

run.find_step_run("train step")[0].register_model(
    model_name="keras-model",
    model_path="outputs/model/",
    datasets=[("train test data", fashion_ds)],
)

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

لا تكمل هذا القسم إذا كنت تخطط لتشغيل برامج تعليمية أخرى في Azure Machine Learning.

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

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

  1. في مساحة العمل، حدد Compute.

  2. من القائمة، حدد اسم مثيل الحساب.

  3. حدد إيقاف.

  4. عندما تكون جاهزًا لاستخدام الخادم مرة أخرى، حدد Start.

حذف كل شيء

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

  1. في مدخل Azure، حدد Resource groups في القائمة اليسرى.
  2. في قائمة مجموعات الموارد، حدد مجموعة الموارد التي أنشأتها.
  3. حدد Delete resource group.
  4. أدخل اسم مجموعة الموارد. ثم حدد Delete.

يمكنك أيضًا الاحتفاظ بمجموعة الموارد، ولكن حذف مساحة عمل واحدة. اعرض خصائص مساحة العمل، وحدد Delete.

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

في هذا البرنامج التعليمي، استخدمت الأنواع التالية:

  • Workspaceتمثل مساحة عمل Azure للتعلم الآلي الخاصة بك. احتوى على:
    • الذي Experiment يحتوي على نتائج عمليات تشغيل التدريب للبنية الأساسية لبرنامج ربط العمليات التجارية الخاصة بك
    • الذي Dataset حمل البيانات المحملة ببطء في مخزن بيانات Fashion-MNIST
    • ComputeTargetالذي يمثل الجهاز (الأجهزة) التي يتم تشغيل خطوات المسار عليها
    • Environment وهي بيئة وقت التشغيل التي يتم فيها تشغيل خطوات البنية الأساسية لبرنامج ربط العمليات التجارية
    • Pipeline الذي يؤلف PythonScriptStep الخطوات في الكل
    • الذي Model قمت بتسجيله بعد رضاك عن عملية التدريب

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

ترقية OutputFileDatasetConfig إخراج تشغيل إلى مجموعة بيانات مستندة إلى ملف. لمزيد من المعلومات حول مجموعات البيانات، والعمل بالبيانات، راجع كيفية الوصول إلى البيانات.

لمزيد من المعلومات حول أهداف الحساب والبيئات، راجع ما هي أهداف الحوسبة في Azure التعلم الآلي؟وما هي بيئات Azure التعلم الآلي؟

يقوم ScriptRunConfig بإقران ComputeTargetوEnvironment بملفات مصدر Python. يأخذ PythonScriptStep ذلك ScriptRunConfig ويحدد مدخلاته ومخرجاته، والتي في هذا المسار كانت مجموعة بيانات الملف التي تم إنشاؤها بواسطةOutputFileDatasetConfig.

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