Skapa komponenter
Med komponenter kan du skapa återanvändbara skript som enkelt kan delas mellan användare på samma Azure Machine Learning-arbetsyta. Du kan också använda komponenter för att skapa en Azure Machine Learning-pipeline.
Använda en komponent
Det finns två huvudsakliga orsaker till att du använder komponenter:
- Skapa en pipeline.
- Så här delar du färdig kod.
Du vill skapa komponenter när du förbereder koden för skalning. När du är klar med att experimentera och utveckla och redo att flytta din modell till produktion.
I Azure Machine Learning kan du skapa en komponent för att lagra kod (på önskat språk) på arbetsytan. Vi rekommenderar att du utformar en komponent för att utföra en specifik åtgärd som är relevant för ditt maskininlärningsarbetsflöde.
En komponent kan till exempel bestå av ett Python-skript som normaliserar dina data, tränar en maskininlärningsmodell eller utvärderar en modell.
Komponenter kan enkelt delas till andra Azure Machine Learning-användare som kan återanvända komponenter i sina egna Azure Machine Learning-pipelines.
Skapa en komponent
En komponent består av tre delar:
- Metadata: Innehåller komponentens namn, version osv.
- Gränssnitt: Innehåller de förväntade indataparametrarna (till exempel en datamängd eller hyperparameter) och förväntade utdata (till exempel mått och artefakter).
- Kommando, kod och miljö: Anger hur koden ska köras.
För att skapa en komponent behöver du två filer:
- Ett skript som innehåller det arbetsflöde som du vill köra.
- En YAML-fil för att definiera komponentens metadata, gränssnitt och kommando, kod och miljö.
Du kan skapa YAML-filen eller använda command_component() funktionen som dekoratör för att skapa YAML-filen.
Dricks
Här fokuserar vi på att skapa en YAML-fil för att skapa en komponent. Du kan också lära dig mer om hur du skapar komponenter med hjälp av command_component().
Du kan till exempel ha ett Python-skript prep.py som förbereder data genom att ta bort saknade värden och normalisera data:
# 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
)
Om du vill skapa en komponent för skriptet prep.py behöver du en YAML-fil 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}}
Observera att YAML-filen refererar till skriptet prep.py , som lagras i src mappen. Du kan läsa in komponenten med följande kod:
from azure.ai.ml import load_component
parent_dir = ""
loaded_component_prep = load_component(source=parent_dir + "./prep.yml")
När du har läst in komponenten kan du använda den i en pipeline eller registrera komponenten.
Registrera en komponent
Om du vill använda komponenter i en pipeline behöver du skriptet och YAML-filen. Om du vill göra komponenterna tillgängliga för andra användare på arbetsytan kan du också registrera komponenter till Azure Machine Learning-arbetsytan.
Du kan registrera en komponent med följande kod:
prep = ml_client.components.create_or_update(prepare_data_component)