Tworzenie składników
Składniki umożliwiają tworzenie skryptów wielokrotnego użytku, które można łatwo udostępniać użytkownikom w tym samym obszarze roboczym usługi Azure Machine Learning. Możesz również użyć składników do utworzenia potoku usługi Azure Machine Learning.
Użyj składnika
Istnieją dwa główne powody, dla których warto używać składników:
- Aby utworzyć potok.
- Aby udostępnić gotowy do użycia kod.
Twórz komponenty, przygotowując kod eksperymentalny do powtarzalnych produkcyjnych przepływów pracy.
W usłudze Azure Machine Learning można utworzyć składnik do przechowywania kodu (w preferowanym języku) w obszarze roboczym. Najlepiej jest zaprojektować składnik, aby wykonać określoną akcję, która jest odpowiednia dla przepływu pracy uczenia maszynowego.
Na przykład składnik może składać się ze skryptu języka Python, który normalizuje dane, trenuje model uczenia maszynowego lub ocenia model.
Składniki mogą być łatwo udostępniane innym użytkownikom usługi Azure Machine Learning, którzy mogą ponownie używać składników we własnych potokach usługi Azure Machine Learning.
Tworzenie składnika
Składnik składa się z trzech części:
- Metadane: zawiera nazwę, wersję składnika itp.
- Interfejs: zawiera oczekiwane parametry wejściowe (takie jak zestaw danych lub hiperparametr) i oczekiwane dane wyjściowe (takie jak metryki i artefakty).
- Polecenie, kod i środowisko: określa sposób uruchamiania kodu.
Aby utworzyć składnik, potrzebne są dwa pliki:
- Skrypt zawierający przepływ pracy, który chcesz wykonać.
- Plik YAML do zdefiniowania metadanych, interfejsu i polecenia, kodu i środowiska składnika.
Możesz utworzyć plik YAML lub użyć command_component() funkcji jako dekoratora, aby utworzyć plik YAML.
Wskazówka
Ta lekcja koncentruje się na zdefiniowaniu składnika w języku YAML. Możesz też dowiedzieć się, jak tworzyć składniki przy użyciu polecenia command_component().
Na przykład możesz mieć skrypt prep.py języka Python, który przygotowuje dane, usuwając brakujące wartości i normalizując dane:
# import libraries
import argparse
import pandas as pd
import numpy as np
from pathlib import Path
from sklearn.preprocessing import MinMaxScaler
# setup arg parser
parser = argparse.ArgumentParser()
# add arguments
parser.add_argument("--input_data", dest='input_data',
type=str)
parser.add_argument("--output_data", dest='output_data',
type=str)
# parse args
args = parser.parse_args()
# read the data
df = pd.read_csv(args.input_data)
# remove missing values
df = df.dropna()
# normalize the data
scaler = MinMaxScaler()
num_cols = ['feature1','feature2','feature3','feature4']
df[num_cols] = scaler.fit_transform(df[num_cols])
# save the data as a csv
output_df = df.to_csv(
(Path(args.output_data) / "prepped-data.csv"),
index = False
)
Aby utworzyć składnik skryptu prep.py , zdefiniuj plik YAML o nazwie prep.yml:
$schema: https://azuremlschemas.azureedge.net/latest/commandComponent.schema.json
name: prep_data
display_name: Prepare training data
version: 1
type: command
inputs:
input_data:
type: uri_file
outputs:
output_data:
type: uri_file
code: ./src
environment: azureml:AzureML-sklearn-0.24-ubuntu18.04-py37-cpu@latest
command: >-
python prep.py
--input_data ${{inputs.input_data}}
--output_data ${{outputs.output_data}}
Zwróć uwagę, że plik YAML odwołuje się do skryptu prep.py przechowywanego w folderze src . Składnik można załadować przy użyciu następującego kodu:
from azure.ai.ml import load_component
parent_dir = ""
loaded_component_prep = load_component(source=parent_dir + "./prep.yml")
Po załadowaniu składnika można go użyć w potoku lub zarejestrować składnik.
Rejestrowanie składnika
Aby użyć składnika lokalnego w potoku, przechowuj razem skrypt i definicję w formacie YAML. Aby składnik był dostępny dla innych użytkowników obszaru roboczego, zarejestruj go w obszarze roboczym Azure Machine Learning.
Składnik można zarejestrować przy użyciu następującego kodu:
prep = ml_client.components.create_or_update(loaded_component_prep)