Vytváření komponent
Komponenty umožňují vytvářet opakovaně použitelné skripty, které se dají snadno sdílet mezi uživateli ve stejném pracovním prostoru Azure Machine Learning. K vytvoření kanálu Azure Machine Learning můžete také použít komponenty.
Použití komponenty
Existují dva hlavní důvody, proč byste používali komponenty:
- Vytvoření kanálu
- Sdílení kódu připraveného k přechodu
Při přípravě kódu na škálování budete chtít vytvářet komponenty. Až budete hotovi s experimentováním a vývojem a jste připraveni přesunout model do produkčního prostředí.
Ve službě Azure Machine Learning můžete vytvořit komponentu pro ukládání kódu (ve vašem upřednostňovaném jazyce) v pracovním prostoru. V ideálním případě navrhnete komponentu tak, aby prováděla konkrétní akci, která je relevantní pro pracovní postup strojového učení.
Komponenta se například může skládat ze skriptu Pythonu, který normalizuje vaše data, trénuje model strojového učení nebo vyhodnocuje model.
Komponenty je možné snadno sdílet s ostatními uživateli služby Azure Machine Learning, kteří můžou opakovaně používat komponenty ve svých vlastních kanálech Azure Machine Learning.
Vytvoření komponenty
Součást se skládá ze tří částí:
- Metadata: Zahrnuje název, verzi atd. komponenty.
- Rozhraní: Zahrnuje očekávané vstupní parametry (například datovou sadu nebo hyperparametr) a očekávaný výstup (například metriky a artefakty).
- Příkaz, kód a prostředí: Určuje, jak se má kód spustit.
K vytvoření komponenty potřebujete dva soubory:
- Skript, který obsahuje pracovní postup, který chcete spustit.
- Soubor YAML pro definování metadat, rozhraní a příkazů, kódu a prostředí komponenty.
Můžete vytvořit soubor YAML nebo použít command_component()
funkci jako dekorátor k vytvoření souboru YAML.
Tip
Tady se zaměříme na vytvoření souboru YAML pro vytvoření komponenty. Další informace o vytváření komponent pomocí command_component()
.
Můžete mít například skript prep.py
Pythonu, který připraví data odebráním chybějících hodnot a normalizací dat:
# 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
)
K vytvoření komponenty pro prep.py
skript budete potřebovat soubor prep.yml
YAML:
$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}}
Všimněte si, že soubor YAML odkazuje na prep.py
skript, který je uložený ve src
složce. Komponentu můžete načíst následujícím kódem:
from azure.ai.ml import load_component
parent_dir = ""
loaded_component_prep = load_component(source=parent_dir + "./prep.yml")
Po načtení komponenty ji můžete použít v kanálu nebo zaregistrovat komponentu.
Registrace komponenty
Pokud chcete použít komponenty v kanálu, budete potřebovat skript a soubor YAML. Pokud chcete, aby byly komponenty přístupné ostatním uživatelům v pracovním prostoru, můžete také zaregistrovat komponenty do pracovního prostoru Azure Machine Learning.
Komponentu můžete zaregistrovat pomocí následujícího kódu:
prep = ml_client.components.create_or_update(prepare_data_component)