Azure Machine Learning SDK v2 ile bileşenleri kullanarak makine öğrenmesi işlem hatları oluşturma ve çalıştırma

ŞUNLAR IÇIN GEÇERLIDIR: Python SDK'sı azure-ai-ml v2 (geçerli)

Bu makalede, üç adımdan oluşan bir görüntü sınıflandırma görevini tamamlamak için Python SDK v2 kullanarak Azure Machine Learning işlem hattı oluşturmayı öğreneceksiniz: verileri hazırlama, görüntü sınıflandırma modelini eğitme ve modeli puanlama. Makine öğrenmesi işlem hatları iş akışınızı hız, taşınabilirlik ve yeniden kullanımla iyileştirerek altyapı ve otomasyon yerine makine öğrenmesine odaklanabilmenizi sağlar.

Örnek, Fashion MNIST veri kümesindeki görüntüleri sınıflandırmak için küçük bir Keras kıvrımlı sinir ağını eğitmektedir. İşlem hattı aşağıdaki gibi görünür.

Görüntü sınıflandırması Keras örneğinin işlem hattı grafiğini gösteren ekran görüntüsü.

Bu makalede aşağıdaki görevleri tamamlaacaksınız:

  • İşlem hattı işi için giriş verilerini hazırlama
  • Verileri hazırlamak, eğitmek ve puan almak için üç bileşen oluşturma
  • Bileşenlerden bir İşlem Hattı oluşturma
  • İşlem ile çalışma alanına erişim elde etme
  • İşlem hattı işini gönderme
  • Bileşenlerin ve eğitilen sinir ağının çıkışını gözden geçirin
  • (İsteğe bağlı) Çalışma alanı içinde daha fazla yeniden kullanım ve paylaşım için bileşeni kaydetme

Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun. Azure Machine Learning'in ücretsiz veya ücretli sürümünü bugün deneyin.

Önkoşullar

  • Azure Machine Learning çalışma alanınız yoksa Kaynak oluşturma öğreticisini tamamlayın.

  • Azure Machine Learning Python SDK v2 yüklediğiniz bir Python ortamı - yükleme yönergeleri - başlarken bölümüne bakın. Bu ortam, Azure Machine Learning kaynaklarınızı tanımlamaya ve denetlemeye yöneliktir ve eğitim için çalışma zamanında kullanılan ortamdan ayrıdır.

  • Örnek deposunu kopyalama

    Eğitim örneklerini çalıştırmak için önce örnek deposunu kopyalayın ve dizinine sdk geçin:

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

Etkileşimli python oturumu başlatma

Bu makalede Azure Machine Learning işlem hattı oluşturmak ve denetlemek için Azure Machine Learning için Python SDK'sı kullanılmaktadır. Makalede kod parçacıklarının etkileşimli olarak Python REPL ortamında veya Jupyter not defterinde çalıştırılacağı varsayılır.

Bu makale, Azure Machine Learning Örnekleri deposunun dizininde sdk/python/jobs/pipelines/2e_image_classification_keras_minist_convnetbulunan image_classification_keras_minist_convnet.ipynb not defterini temel alır.

Gerekli kitaplıkları içeri aktarma

Bu makale için ihtiyacınız olan tüm Azure Machine Learning gerekli kitaplıklarını içeri aktarın:

# 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

İşlem hattı işiniz için giriş verilerini hazırlama

Bu görüntü sınıflandırma işlem hattı için giriş verilerini hazırlamanız gerekir.

Fashion-MNIST, moda görüntülerinin 10 sınıfa ayrılmış bir veri kümesidir. Her görüntü 28x28 gri tonlamalı bir görüntüdür ve 60.000 eğitim ve 10.000 test görüntüsü vardır. Görüntü sınıflandırma sorunu olarak Fashion-MNIST, klasik MNIST el yazısı basamak veritabanından daha zordur. Özgün el yazısı basamak veritabanıyla aynı sıkıştırılmış ikili biçimde dağıtılır.

İhtiyacınız olacak tüm Azure Machine Learning gerekli kitaplıklarını içeri aktarın.

bir Inputtanımlayarak, veri kaynağı konumuna bir başvuru oluşturursunuz. Veriler mevcut konumunda kalır, bu nedenle ek depolama maliyeti uygulanmaz.

İşlem hattı oluşturmak için bileşenler oluşturma

Görüntü sınıflandırma görevi üç adıma ayrılabilir: verileri hazırlama, modeli eğitme ve modeli puanlama.

Azure Machine Learning bileşeni , bir makine öğrenmesi işlem hattında tek adımlık bir işlem hattı oluşturan, bağımsız bir kod parçasıdır. Bu makalede, görüntü sınıflandırma görevi için üç bileşen oluşturacaksınız:

  • Eğitim ve test için veri hazırlama
  • Eğitim verilerini kullanarak bir sinir ağını görüntü sınıflandırması için eğitin
  • Test verilerini kullanarak modeli puanla

Her bileşen için aşağıdakileri hazırlamanız gerekir:

  1. Yürütme mantığını içeren Python betiğini hazırlama

  2. Bileşenin arabirimini tanımlama

  3. Çalışma zamanı ortamı, bileşeni çalıştırmak için komut vb. dahil olmak üzere bileşenin diğer meta verilerini ekleyin.

Sonraki bölümde oluşturma bileşenleri iki farklı şekilde gösterilir: Python işlevini kullanan ilk iki bileşen ve YAML tanımını kullanan üçüncü bileşen.

Veri hazırlama bileşenini oluşturma

Bu işlem hattındaki ilk bileşen, sıkıştırılmış veri dosyalarını fashion_ds biri eğitim, diğeri puanlama için iki csv dosyası olarak dönüştürür. Bu bileşeni tanımlamak için Python işlevini kullanacaksınız.

Azure Machine Learning örnekleri deposundaki örnekle birlikte takip ediyorsanız, kaynak dosyalar klasörde zaten kullanılabilir prep/ durumdadır. Bu klasör, bileşeni oluşturmak için iki dosya içerir: prep_component.pybileşeni tanımlayan ve conda.yamlbileşenin çalışma zamanı ortamını tanımlayan .

Python işlevini kullanarak bileşeni tanımlama

İşlevi dekoratör olarak kullanarak command_component() , bir Python işlevinden yürütülecek bileşenin arabirimini, meta verilerini ve kodunu kolayca tanımlayabilirsiniz. Dekore edilmiş her Python işlevi, işlem hattı hizmetinin işleyebileceği tek bir statik belirtime (YAML) dönüştürülür.

# 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()

Yukarıdaki kod, dekoratör kullanarak @command_component görünen ada Prep Data sahip bir bileşen tanımlar:

  • name , bileşenin benzersiz tanımlayıcısıdır.

  • version bileşenin geçerli sürümüdür. Bir bileşenin birden çok sürümü olabilir.

  • display_name , kullanıcı arabirimindeki bileşenin benzersiz olmayan kolay görünen bir adıdır.

  • description genellikle bu bileşenin tamamlayabildiği görevi açıklar.

  • environment bu bileşen için çalışma zamanı ortamını belirtir. Bu bileşenin ortamı bir docker görüntüsü belirtir ve dosyaya başvurur conda.yaml .

    Dosya, conda.yaml aşağıdaki gibi bileşen için kullanılan tüm paketleri içerir:

    name: imagekeras_prep_conda_env
    channels:
      - defaults
    dependencies:
      - python=3.7.11
      - pip=20.0
      - pip:
        - mldesigner==0.1.0b4
    
  • prepare_data_component işlevi için bir giriş ve ve test_dataiçin input_datatraining_data iki çıkış tanımlar. input_data giriş veri yoludur. training_data ve test_data eğitim verileri ve test verileri için çıkış veri yollarıdır.

  • Bu bileşen, verilerden input_data eğitim verileri csv'sine training_data ve test verileri csv'sinden test_dataöğesine dönüştürür.

Aşağıda, bir bileşenin stüdyo kullanıcı arabiriminde nasıl göründüğü gösterilir.

  • Bileşen, işlem hattı grafiğindeki bir blokdur.
  • input_datave training_datatest_data, veri akışı için diğer bileşenlere bağlanan bileşenin bağlantı noktalarıdır.

Kullanıcı arabirimindeki ve koddaki Hazırlama Verileri bileşeninin ekran görüntüsü.

Bileşen için Prep Data tüm kaynak dosyaları hazırladınız.

Eğitim modeli bileşenini oluşturma

Bu bölümde, Python işlevinde Prep Data görüntü sınıflandırma modelini eğiten bir bileşen oluşturacaksınız.

Fark, eğitim mantığı daha karmaşık olduğundan özgün eğitim kodunu ayrı bir Python dosyasına koyabilmenizdir.

Bu bileşenin kaynak dosyaları Azure Machine Learning örnekleri deposundaki klasörün altındadırtrain/. Bu klasör, bileşeni oluşturmak için üç dosya içerir:

  • train.py: modeli eğitmek için gerçek mantığı içerir.
  • train_component.py: bileşenin arabirimini tanımlar ve içindeki işlevini train.pyiçeri aktarır.
  • conda.yaml: bileşenin çalışma zamanı ortamını tanımlar.

Yürütme mantığı içeren bir betik alma

Dosya train.py , keras sinir ağını görüntü sınıflandırması için eğitmek üzere eğitim modeli mantığını gerçekleştiren normal bir Python işlevi içerir. Kodu görüntülemek için GitHub'da train.py dosyasına bakın.

Python işlevini kullanarak bileşeni tanımlama

Eğitim işlevini başarıyla tanımladıktan sonra Azure Machine Learning SDK v2'de kullanarak işlevinizi Azure Machine Learning işlem hatlarında kullanılabilen bir bileşen olarak sarmalayabilirsiniz @command_component .

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)

Yukarıdaki kod, kullanarak @command_componentgörünen ada Train Image Classification Keras sahip bir bileşen tanımlar:

  • keras_train_component işlevi, eğitim verilerinin geldiği bir girişiinput_data, eğitim sırasında dönemleri belirten bir girişi epochs ve model dosyasının çıkışını yaptığı bir çıkışı output_model tanımlar. varsayılan değeri epochs 10'dur. Bu bileşenin yürütme mantığı yukarıdaki işlevindendir train()train.py .

Eğitim modeli bileşeni, prep-data bileşeninden biraz daha karmaşık bir yapılandırmaya sahiptir. conda.yaml aşağıdaki gibidir:

name: imagekeras_train_conda_env
channels:
  - defaults
dependencies:
  - python=3.7.11
  - 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

Bileşen için Train Image Classification Keras tüm kaynak dosyaları hazırladınız.

Puan modeli bileşenini oluşturma

Bu bölümde, önceki bileşenler dışında, Eğitilen modeli Yaml belirtimi ve betiği aracılığıyla puanlandıracak bir bileşen oluşturacaksınız.

Azure Machine Learning örnekleri deposundaki örnekle birlikte takip ediyorsanız, kaynak dosyalar klasörde zaten kullanılabilir score/ durumdadır. Bu klasör, bileşeni oluşturmak için üç dosya içerir:

  • score.py: bileşenin kaynak kodunu içerir.
  • score.yaml: arabirimini ve bileşenin diğer ayrıntılarını tanımlar.
  • conda.yaml: bileşenin çalışma zamanı ortamını tanımlar.

Yürütme mantığı içeren bir betik alma

Dosya, score.py eğitim modeli mantığını gerçekleştiren normal bir Python işlevi içerir.

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 kodu üç komut satırı bağımsız değişkeni alır: input_data, input_model ve output_result. Program giriş modelini giriş verilerini kullanarak puanlar ve ardından puanlama sonucunu döndürür.

Yaml aracılığıyla bileşen tanımlama

Bu bölümde, geçerli YAML bileşen belirtimi biçiminde bir bileşen belirtimi oluşturmayı öğreneceksiniz. Bu dosya aşağıdaki bilgileri belirtir:

  • Meta veriler: ad, display_name, sürüm, tür vb.
  • Arabirim: girişler ve çıkışlar
  • Komut, kod ve ortam: Bileşeni çalıştırmak için kullanılan komut, kod ve ortam
$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 , bileşenin benzersiz tanımlayıcısıdır. Görünen adı şeklindedir Score Image Classification Keras.
  • Bu bileşenin iki girişi ve bir çıkışı vardır.
  • Kaynak kod yolu bölümünde tanımlanır code ve bileşen bulutta çalıştırıldığında, bu yoldan gelen tüm dosyalar bu bileşenin anlık görüntüsü olarak karşıya yüklenir.
  • bölümü, command bu bileşeni çalıştırırken yürütülecek komutu belirtir.
  • bölümü environment bir docker görüntüsü ve conda yaml dosyası içerir. Kaynak dosya örnek depodadır.

Artık puan modeli bileşeni için tüm kaynak dosyalarına sahipsiniz.

İşlem hattı oluşturmak için bileşenleri yükleme

Python işlevi tarafından tanımlanan hazır veri bileşeni ve eğitim modeli bileşeni için, bileşenleri normal Python işlevleri gibi içeri aktarabilirsiniz.

Aşağıdaki kodda, sırasıyla klasör altındaki dosyadan ve klasör altındaki preptrain dosyadan prep_component.py içeri aktarıp train_componentprepare_data_component()keras_train_component() işlev yaparsınız.

%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)

yaml tarafından tanımlanan puan bileşeni için işlevi kullanarak load_component() yükleyebilirsiniz.

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

İşlem hattınızı oluşturma

Artık işlem hattını oluşturmak için tüm bileşenleri ve giriş verilerini oluşturup yüklediniz. Bunları bir işlem hattında oluşturabilirsiniz:

Not

Sunucusuz işlem kullanmak için en üste ekleyinfrom azure.ai.ml.entities import ResourceConfiguration. Ardından şunu değiştirin:

  • default_compute=cpu_compute_target, Ile default_compute="serverless",
  • train_node.compute = gpu_compute_target Ile 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)

İşlem hattının varsayılan bir işlemi cpu_compute_targetvardır; başka bir deyişle, belirli bir düğüm için işlem belirtmezseniz, bu düğüm varsayılan işlemde çalışır.

İşlem hattının işlem hattı düzeyinde girişi pipeline_input_datavardır. İşlem hattı işi gönderirken işlem hattı girişine değer atayabilirsiniz.

İşlem hattı üç düğüm içerir: prepare_data_node, train_node ve score_node.

  • input_data, prepare_data_node değerini pipeline_input_datakullanır.

  • input_data, train_node prepare_data_node çıkışından training_data alınmaktadır.

  • input_data score_nodetest_data, prepare_data_node çıkışından ve input_model train_node'dendiroutput_model.

  • train_node Bir CNN modelini eğiteceğinden, işlemini gpu_compute_target olarak belirtebilir ve bu da eğitim performansını geliştirebilir.

İşlem hattı işinizi gönderme

İşlem hattını oluşturduğunuza göre çalışma alanınıza gönderebilirsiniz. bir iş göndermek için öncelikle bir çalışma alanına bağlanmanız gerekir.

Çalışma alanınıza erişim elde etme

Kimlik bilgilerini yapılandırma

Çalışma alanına erişmek için kullanacağız DefaultAzureCredential . DefaultAzureCredential Azure SDK kimlik doğrulama senaryolarının çoğunu işleyebilmeli.

Sizin için işe yaramazsa daha fazla kullanılabilir kimlik bilgisi başvurusu: kimlik bilgisi örneğini yapılandırma, azure-identity başvuru belgesi.

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()

İşlem ile çalışma alanına tanıtıcı alma

Azure Machine Learning hizmetlerini yönetmek için bir MLClient nesne oluşturun. Sunucusuz işlem kullanıyorsanız bu işlemleri oluşturmanıza gerek yoktur.

# 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))

Önemli

Bu kod parçacığı, çalışma alanı yapılandırma json dosyasının geçerli dizine veya üst dizinine kaydedilmesini bekler. Çalışma alanı oluşturma hakkında daha fazla bilgi için bkz . Çalışma alanı kaynakları oluşturma. Yapılandırmayı dosyaya kaydetme hakkında daha fazla bilgi için bkz . Çalışma alanı yapılandırma dosyası oluşturma.

İşlem hattı işini çalışma alanına gönderme

Artık çalışma alanınıza bir tanıtıcı edindiniz, işlem hattı işinizi gönderebilirsiniz.

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

Yukarıdaki kod bu görüntü sınıflandırma işlem hattı işini adlı pipeline_samplesdenemeye gönderir. Yoksa denemeyi otomatik olarak oluşturur. pipeline_input_data kullanırfashion_ds.

çağrısı aşağıdakine pipeline_jobbenzer bir çıkış oluşturur:

çağrısı submitExperiment hızla tamamlanıp şuna benzer bir çıkış oluşturur:

Deneme Adı Tip Durum Ayrıntılar Sayfası
pipeline_samples sharp_pipe_4gvqx6h1fb Boru hattı Hazırlanıyor Azure Machine Learning stüdyosu bağlantısı.

Bağlantıyı açarak işlem hattı çalıştırmasını izleyebilir veya şu komutu çalıştırarak tamamlanana kadar engelleyebilirsiniz:

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

Önemli

İlk işlem hattı çalıştırması yaklaşık 15 dakika sürer. Tüm bağımlılıkların indirilmesi, bir Docker görüntüsü oluşturulması ve Python ortamının sağlanıp oluşturulması gerekir. İşlem hattının yeniden çalıştırılması önemli ölçüde daha az zaman alır çünkü bu kaynaklar oluşturulmak yerine yeniden kullanılır. Ancak, işlem hattı için toplam çalışma süresi betiklerinizin iş yüküne ve her işlem hattı adımında çalışan işlemlere bağlıdır.

Çıkışları kullanıma alma ve kullanıcı arabiriminde işlem hattınızda hata ayıklama

İşlem hattınızın iş ayrıntı sayfası olan öğesini açabilirsiniz Link to Azure Machine Learning studio. İşlem hattı grafiğini aşağıdaki gibi görürsünüz.

İşlem hattı işi ayrıntı sayfasının ekran görüntüsü.

Bileşene sağ tıklayarak her bileşenin günlüklerini ve çıkışlarını denetleyebilirsiniz veya bileşeni seçerek ayrıntı bölmesini açabilirsiniz. Kullanıcı arabiriminde işlem hattınızda hata ayıklama hakkında daha fazla bilgi edinmek için bkz . Hata ayıklama işlem hattı hatasını kullanma.

(İsteğe bağlı) Bileşenleri çalışma alanına kaydetme

Önceki bölümde, E2E'nin bir görüntü sınıflandırma görevini tamamlaması için üç bileşen kullanarak bir işlem hattı oluşturacaksınız. Ayrıca, çalışma alanı içinde paylaşılabilmesi ve yeniden verilmesi için bileşenleri çalışma alanınıza kaydedebilirsiniz. Aşağıda, prep-data bileşenini kaydetmeye yönelik bir örnek verilmiştir.

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)

kullanarak ml_client.components.get(), adına ve sürümüne göre kayıtlı bir bileşen alabilirsiniz. kullanarak ml_client.components.create_or_update(), python işlevinden veya yaml'den daha önce yüklenmiş bir bileşeni kaydedebilirsiniz.

Sonraki adımlar

  • Makine öğrenmesi SDK'sını kullanarak işlem hattı oluşturma hakkında daha fazla örnek için örnek depoya bakın.
  • İşlem hattınızı göndermek ve hatalarını ayıklamak için studio kullanıcı arabirimini kullanma hakkında bilgi için kullanıcı arabirimindeki bileşeni kullanarak işlem hattı oluşturma bölümüne bakın.
  • Bileşenleri ve işlem hatlarını oluşturmak için Azure Machine Learning CLI'yı kullanma hakkında bilgi için CLI ile bileşen kullanarak işlem hattı oluşturma bölümüne bakın.
  • Batch Uç Noktalarını kullanarak işlem hatlarını üretime dağıtma hakkında bilgi için bkz . batch uç noktalarıyla işlem hatlarını dağıtma.