Automatizált gépi tanulás használata egy Azure Machine Learning-folyamatban a Pythonban
ÉRVÉNYES:Python SDK azureml v1
Az Azure Machine Learning automatizált gépi tanulási képessége segít felderíteni a nagy teljesítményű modelleket anélkül, hogy minden lehetséges megközelítést újra alkalmaz. Az Azure Machine Learning-folyamatokkal kombinálva üzembe helyezhető munkafolyamatokat hozhat létre, amelyek gyorsan felfedezhetik az adatokhoz legjobban illeszkedő algoritmust. Ez a cikk bemutatja, hogyan csatlakozhat hatékonyan egy adat-előkészítési lépéshez egy automatizált gépi tanulási lépéshez. Az automatizált gépi tanulás gyorsan felfedezheti az adatokhoz legjobban megfelelő algoritmust, miközben útban van az MLOps felé, és folyamatokkal modellezheti az életciklust.
Előfeltételek
Azure-előfizetés. Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot. Próbálja ki ma az Azure Machine Learning ingyenes vagy fizetős verzióját.
Egy Azure Machine Learning-munkaterület. Lásd: Munkaterület-erőforrások létrehozása.
Az Azure automatizált gépi tanulási és gépi tanulási folyamatainak és SDK-jának ismerete.
Az automatizált gépi tanulás központi osztályainak áttekintése
A folyamat automatizált gépi tanulását egy AutoMLStep
objektum jelöli. Az AutoMLStep
osztály a következő alosztálya PipelineStep
: . Az objektumok gráfja PipelineStep
egy Pipeline
.
Több alosztálya is van a következőnek PipelineStep
: . A cikk amellett, hogy egy AutoMLStep
adatelőkészítést és egy PythonScriptStep
másikat is megjelenít a modell regisztrálásához.
Az adatok gépi tanulási folyamatba való áthelyezésének elsődleges módja az Dataset
objektumok használata. Az adatok lépések közötti áthelyezéséhez és a futtatásokból származó adatkimenetek lehetséges mentéséhez az elsődleges módszer az objektumok és OutputTabularDatasetConfig
az OutputFileDatasetConfig
objektumok használata. A használatához AutoMLStep
az PipelineData
objektumot objektummá kell alakítani PipelineOutputTabularDataset
. További információ: Bemeneti és kimeneti adatok az ML-folyamatokból.
Ez AutoMLStep
egy AutoMLConfig
objektumon keresztül van konfigurálva. AutoMLConfig
egy rugalmas osztály, amelyet az automatizált gépi tanulási kísérletek Pythonban való konfigurálása című témakör tartalmaz.
Futtatás Pipeline
egy Experiment
. A folyamat Run
minden lépéshez rendelkezik egy gyermekvel StepRun
. Az automatizált gépi tanulás StepRun
kimenetei a betanítási metrikák és a legmagasabb teljesítményű modell.
A konkrét dolgok érdekében ez a cikk egy egyszerű folyamatot hoz létre egy besorolási feladathoz. A feladat a Titanic túlélését jósolja, de az adatokról vagy a feladatról csak a továbbításról lesz szó.
Első lépések
Kezdeti adatkészlet lekérése
Az ml-munkafolyamatok gyakran már meglévő alapadatokkal kezdődnek. Ez egy jó forgatókönyv egy regisztrált adatkészlethez. Az adathalmazok a munkaterületen láthatók, támogatják a verziószámozást, és interaktívan feltárhatók. Az adathalmazok létrehozásának és feltöltésének számos módja van, ahogy az Azure Machine Learning-adathalmazok létrehozása című cikk is ismerteti. Mivel a Python SDK-t fogjuk használni a folyamat létrehozásához, az SDK-val töltse le az alapadatokat, és regisztrálja azokat "titanic_ds" néven.
from azureml.core import Workspace, Dataset
ws = Workspace.from_config()
if not 'titanic_ds' in ws.datasets.keys() :
# create a TabularDataset from Titanic training data
web_paths = ['https://dprepdata.blob.core.windows.net/demo/Titanic.csv',
'https://dprepdata.blob.core.windows.net/demo/Titanic2.csv']
titanic_ds = Dataset.Tabular.from_delimited_files(path=web_paths)
titanic_ds.register(workspace = ws,
name = 'titanic_ds',
description = 'Titanic baseline data',
create_new_version = True)
titanic_ds = Dataset.get_by_name(ws, 'titanic_ds')
A kód először a config.json definiált Azure Machine Learning-munkaterületre jelentkezik be (ennek magyarázatát lásd: Munkaterület konfigurációs fájljának létrehozása). Ha még nincs regisztrálva egy adatkészlet, 'titanic_ds'
akkor létrehoz egyet. A kód letölti a CSV-adatokat az internetről, azokkal példányt TabularDataset
hoz létre, majd regisztrálja az adathalmazt a munkaterületen. Végül a függvény Dataset.get_by_name()
hozzárendeli a Dataset
következőhöz titanic_ds
: .
A tárolási és számítási cél konfigurálása
A folyamathoz további erőforrásokra lesz szükség a tárolás és általában az Azure Machine Learning számítási erőforrásai.
from azureml.core import Datastore
from azureml.core.compute import AmlCompute, ComputeTarget
datastore = ws.get_default_datastore()
compute_name = 'cpu-cluster'
if not compute_name in ws.compute_targets :
print('creating a new compute target...')
provisioning_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_D2_V2',
min_nodes=0,
max_nodes=1)
compute_target = ComputeTarget.create(ws, compute_name, provisioning_config)
compute_target.wait_for_completion(
show_output=True, min_node_count=None, timeout_in_minutes=20)
# Show the result
print(compute_target.get_status().serialize())
compute_target = ws.compute_targets[compute_name]
Az adatelőkészítés és az automatizált gépi tanulási lépés köztes adatai a munkaterület alapértelmezett adattárában tárolhatók, így nem kell többet tennünk, mint az Workspace
objektum meghívásaget_default_datastore()
.
Ezután a kód ellenőrzi, hogy az Azure Machine Learning számítási cél 'cpu-cluster'
már létezik-e. Ha nem, meg kell adni, hogy egy kis cpu-alapú számítási célt szeretnénk. Ha az automatizált gépi tanulás mélytanulási funkcióit (például a szöveg featurizálását DNN-támogatással) tervezi használni, válasszon erős GPU-támogatással rendelkező számítást a GPU-optimalizált virtuálisgép-méretekben leírtak szerint.
A kód blokkolja a cél üzembe helyezését, majd kinyomtatja az imént létrehozott számítási cél néhány részletét. Végül a rendszer lekéri a névvel ellátott számítási célt a munkaterületről, és hozzá lesz rendelve.compute_target
A betanítási futtatás konfigurálása
A futtatókörnyezet beállítása objektum RunConfiguration
létrehozásával és konfigurálásával történik. Itt állítjuk be a számítási célt.
from azureml.core.runconfig import RunConfiguration
from azureml.core.conda_dependencies import CondaDependencies
aml_run_config = RunConfiguration()
# Use just-specified compute target ("cpu-cluster")
aml_run_config.target = compute_target
# Specify CondaDependencies obj, add necessary packages
aml_run_config.environment.python.conda_dependencies = CondaDependencies.create(
conda_packages=['pandas','scikit-learn'],
pip_packages=['azureml-sdk[automl]', 'pyarrow'])
Adatok előkészítése automatizált gépi tanuláshoz
Az adatelőkészítési kód megírása
Az alapkonfigurációs Titanic-adatkészlet vegyes numerikus és szöveges adatokból áll, és néhány érték hiányzik. Az automatizált gépi tanulás előkészítéséhez az adatelőkészítési folyamat lépése a következő lesz:
- Hiányzó adatok kitöltése véletlenszerű adatokkal vagy "Ismeretlen" kategóriával
- Kategorikus adatok átalakítása egész számokká
- Nem használni kívánt oszlopok elvetése
- Adatok felosztása betanítási és tesztelési csoportokra
- Az átalakított adatok írása a
OutputFileDatasetConfig
kimeneti útvonalakra
%%writefile dataprep.py
from azureml.core import Run
import pandas as pd
import numpy as np
import argparse
RANDOM_SEED=42
def prepare_age(df):
# Fill in missing Age values from distribution of present Age values
mean = df["Age"].mean()
std = df["Age"].std()
is_null = df["Age"].isnull().sum()
# compute enough (== is_null().sum()) random numbers between the mean, std
rand_age = np.random.randint(mean - std, mean + std, size = is_null)
# fill NaN values in Age column with random values generated
age_slice = df["Age"].copy()
age_slice[np.isnan(age_slice)] = rand_age
df["Age"] = age_slice
df["Age"] = df["Age"].astype(int)
# Quantize age into 5 classes
df['Age_Group'] = pd.qcut(df['Age'],5, labels=False)
df.drop(['Age'], axis=1, inplace=True)
return df
def prepare_fare(df):
df['Fare'].fillna(0, inplace=True)
df['Fare_Group'] = pd.qcut(df['Fare'],5,labels=False)
df.drop(['Fare'], axis=1, inplace=True)
return df
def prepare_genders(df):
genders = {"male": 0, "female": 1, "unknown": 2}
df['Sex'] = df['Sex'].map(genders)
df['Sex'].fillna(2, inplace=True)
df['Sex'] = df['Sex'].astype(int)
return df
def prepare_embarked(df):
df['Embarked'].replace('', 'U', inplace=True)
df['Embarked'].fillna('U', inplace=True)
ports = {"S": 0, "C": 1, "Q": 2, "U": 3}
df['Embarked'] = df['Embarked'].map(ports)
return df
parser = argparse.ArgumentParser()
parser.add_argument('--output_path', dest='output_path', required=True)
args = parser.parse_args()
titanic_ds = Run.get_context().input_datasets['titanic_ds']
df = titanic_ds.to_pandas_dataframe().drop(['PassengerId', 'Name', 'Ticket', 'Cabin'], axis=1)
df = prepare_embarked(prepare_genders(prepare_fare(prepare_age(df))))
df.to_csv(os.path.join(args.output_path,"prepped_data.csv"))
print(f"Wrote prepped data to {args.output_path}/prepped_data.csv")
A fenti kódrészlet egy teljes, de minimális példa a Titanic-adatok adatelőkészítésére. A kódrészlet egy Jupyter "magic command" paranccsal kezdődik, amely a kódot egy fájlba irányítja. Ha nem Jupyter-jegyzetfüzetet használ, távolítsa el ezt a sort, és hozza létre manuálisan a fájlt.
A fenti kódrészlet különböző prepare_
függvényei módosítják a bemeneti adathalmaz megfelelő oszlopát. Ezek a függvények akkor működnek az adatokon, ha pandas-objektummá DataFrame
változtak. A hiányzó adatok minden esetben reprezentatív véletlenszerű adatokkal vagy kategorikus adatokkal vannak kitöltve, amelyek "Ismeretlen" értéket jeleznek. A szövegalapú kategorikus adatok egész számokra lesznek leképezve. A már nem szükséges oszlopok felülíródnak vagy elvethetők.
Miután a kód meghatározta az adat-előkészítési függvényeket, a kód elemzi a bemeneti argumentumot, amely az az elérési út, amelyhez meg szeretnénk írni az adatokat. (Ezeket az értékeket a következő lépésben tárgyalt objektumok határozzák meg OutputFileDatasetConfig
.) A kód lekéri a regisztrált 'titanic_cs'
Dataset
adatokat, pandassá DataFrame
alakítja, és meghívja a különböző adat-előkészítési függvényeket.
Mivel ez output_path
egy könyvtár, a hívás to_csv()
megadja a fájlnevet prepped_data.csv
.
Az adatelőkészítési folyamat lépésének megírása (PythonScriptStep
)
A fent leírt adatelőkészítési kódot egy PythonScripStep
folyamathoz használandó objektumhoz kell társítani. A CSV-kimenet elérési útját egy OutputFileDatasetConfig
objektum hozza létre. A korábban előkészített erőforrások, például a ComputeTarget
, a RunConfig
, és azokat 'titanic_ds' Dataset
használják a specifikáció befejezéséhez.
from azureml.data import OutputFileDatasetConfig
from azureml.pipeline.steps import PythonScriptStep
prepped_data_path = OutputFileDatasetConfig(name="output_path")
dataprep_step = PythonScriptStep(
name="dataprep",
script_name="dataprep.py",
compute_target=compute_target,
runconfig=aml_run_config,
arguments=["--output_path", prepped_data_path],
inputs=[titanic_ds.as_named_input('titanic_ds')],
allow_reuse=True
)
Az prepped_data_path
objektum típusa OutputFileDatasetConfig
egy könyvtárra mutat. Figyelje meg, hogy a paraméterben arguments
van megadva. Ha áttekinti az előző lépést, láthatja, hogy az adatelőkészítési kódban az argumentum '--output_path'
értéke az a könyvtár elérési útja, amelyen a CSV-fájl meg lett írva.
Betanítása az AutoMLStep használatával
Az automatikus gépi tanulási folyamat konfigurálását az AutoMLConfig
osztály végzi. Ezt a rugalmas osztályt az automatizált gépi tanulási kísérletek Pythonban való konfigurálása című témakör ismerteti. Az adatbemenet és a kimenet a konfiguráció egyetlen olyan aspektusa, amely különös figyelmet igényel az ML-folyamatban. A folyamatok bemenetét AutoMLConfig
és kimenetét az alábbiakban részletesen ismertetjük. Az adatokon túl az ML-folyamatok előnye, hogy különböző számítási célokat használhatnak különböző lépésekhez. Dönthet úgy, hogy csak az automatizált gépi tanulási folyamathoz használ nagyobb teljesítményűet ComputeTarget
. Ez olyan egyszerű, mint egy erősebb RunConfiguration
AutoMLConfig
objektum paraméterének hozzárendelése run_configuration
.
Adatok küldése ide: AutoMLStep
Az ML-folyamatokban a bemeneti adatoknak objektumnak kell lenniük Dataset
. A legeredményesebb módszer a bemeneti adatok objektumok formájában történő OutputTabularDatasetConfig
biztosítása. Létrehozhat egy ilyen típusú objektumot a read_delimited_files()
rajta lévővelOutputFileDatasetConfig
, például az prepped_data_path
prepped_data_path
objektummal.
# type(prepped_data) == OutputTabularDatasetConfig
prepped_data = prepped_data_path.read_delimited_files()
Egy másik lehetőség a munkaterületen regisztrált objektumok használata Dataset
:
prepped_data = Dataset.get_by_name(ws, 'Data_prepared')
A két technika összehasonlítása:
Módszer | Előnyök és hátrányok |
---|---|
OutputTabularDatasetConfig |
Nagyobb teljesítmény |
Természetes útvonal innen: OutputFileDatasetConfig |
|
A folyamat futtatása után az adatok nem maradnak meg | |
Bejegyzett Dataset |
Alacsonyabb teljesítmény |
Többféleképpen is létrehozható | |
Az adatok megmaradnak, és az egész munkaterületen láthatók | |
Regisztrált Dataset technikát megjelenítő jegyzetfüzet |
Automatizált gépi tanulási kimenetek megadása
A kimenetek a AutoMLStep
magasabb teljesítményű modell és maga a modell végső metrikapontszámai. Ha további folyamatlépésekben szeretné használni ezeket a kimeneteket, készítse elő OutputFileDatasetConfig
az objektumokat a fogadásukra.
from azureml.pipeline.core import TrainingOutput, PipelineData
metrics_data = PipelineData(name='metrics_data',
datastore=datastore,
pipeline_output_name='metrics_output',
training_output=TrainingOutput(type='Metrics'))
model_data = PipelineData(name='best_model_data',
datastore=datastore,
pipeline_output_name='model_output',
training_output=TrainingOutput(type='Model'))
A fenti kódrészlet létrehozza a két PipelineData
objektumot a metrikákhoz és a modell kimenetéhez. Mindegyik neve el van nevezve, a korábban lekért alapértelmezett adattárhoz van rendelve, és az adott type
adathoz TrainingOutput
van társítva a AutoMLStep
. Mivel ezekhez az PipelineData
objektumokhoz rendelünk hozzá pipeline_output_name
értékeket, az értékek nem csak az egyes folyamatlépésekből, hanem a folyamat egészéből is elérhetők lesznek, ahogy az alábbiakban a "Folyamateredmények vizsgálata" című szakaszban fogjuk tárgyalni.
Az automatizált gépi tanulási folyamat lépéseinek konfigurálása és létrehozása
A bemenetek és kimenetek definiálása után itt az ideje, hogy létrehozzák az ésAutoMLStep
.AutoMLConfig
A konfiguráció részletei a feladattól függenek, ahogyan az automatizált gépi tanulási kísérletek Pythonban való konfigurálása című cikkben leírtak szerint. A Titanic túlélési besorolási feladatához az alábbi kódrészlet egy egyszerű konfigurációt mutat be.
from azureml.train.automl import AutoMLConfig
from azureml.pipeline.steps import AutoMLStep
# Change iterations to a reasonable number (50) to get better accuracy
automl_settings = {
"iteration_timeout_minutes" : 10,
"iterations" : 2,
"experiment_timeout_hours" : 0.25,
"primary_metric" : 'AUC_weighted'
}
automl_config = AutoMLConfig(task = 'classification',
path = '.',
debug_log = 'automated_ml_errors.log',
compute_target = compute_target,
run_configuration = aml_run_config,
featurization = 'auto',
training_data = prepped_data,
label_column_name = 'Survived',
**automl_settings)
train_step = AutoMLStep(name='AutoML_Classification',
automl_config=automl_config,
passthru_automl_config=False,
outputs=[metrics_data,model_data],
enable_default_model_output=False,
enable_default_metrics_output=False,
allow_reuse=True)
A kódrészlet egy gyakran használt AutoMLConfig
kifejezéssel jelenik meg. A folyadékosabb argumentumokat (hyperparameter-ish) egy külön szótárban adhatók meg, míg a kisebb valószínűséggel változó értékek közvetlenül a AutoMLConfig
konstruktorban vannak megadva. Ebben az esetben adjon automl_settings
meg egy rövid futtatást: a futtatás csak 2 iteráció vagy 15 perc után fejeződik be, attól függően, hogy melyik lesz az első.
A automl_settings
szótár átkerül a AutoMLConfig
konstruktornak, mint kwargs. A többi paraméter nem bonyolult:
task
beállítás értéke ebben aclassification
példában. Egyéb érvényes értékek a következők:regression
forecasting
path
ésdebug_log
írja le a projekt elérési útját és egy helyi fájlt, amelybe hibakeresési információkat fog írnicompute_target
az a korábban definiáltcompute_target
, hogy ebben a példában egy olcsó CPU-alapú gép. Ha az AutoML mélytanulási lehetőségeit használja, a számítási célt GPU-alapúra szeretné módosítanifeaturization
beállítás értéke :auto
. További részletek az automatizált gépi tanulási konfigurációs dokumentum Adat featurizálás szakaszában találhatóklabel_column_name
azt jelzi, hogy melyik oszlopot szeretnénk előrejeleznitraining_data
az adatelőkészítési lépés kimenetéből származó objektumokra van állítvaOutputTabularDatasetConfig
A AutoMLStep
metrikák és a AutoMLConfig
modelladatok tárolására létrehozott objektumokat saját maga veszi át, és kimenetként PipelineData
is rendelkezik.
Fontos
Csak akkor kell beállítania enable_default_model_output
, és enable_default_metrics_output
csak akkor, True
ha használja AutoMLStepRun
.
Ebben a példában az automatizált gépi tanulási folyamat keresztellenőrzéseket hajt végre a training_data
. Az argumentummal n_cross_validations
szabályozhatja a keresztérvényesítések számát. Ha már felosztotta a betanítási adatokat az adatelőkészítési lépések részeként, beállíthatja validation_data
a sajátját Dataset
.
Előfordulhat, hogy időnként megjelenik az adatfunkciók és y
az adatfeliratok használataX
. Ez a technika elavult, és a bemenethez kell használnia training_data
.
Az automatizált gépi tanulás által létrehozott modell regisztrálása
Egy egyszerű ML-folyamat utolsó lépése a létrehozott modell regisztrálása. Ha hozzáadja a modellt a munkaterület modellregisztrációs adatbázisához, az elérhető lesz a portálon, és verziószámozott lesz. A modell regisztrálásához írjon egy másikat PythonScriptStep
, amely a model_data
kimenetet veszi fel AutoMLStep
.
Írja meg a kódot a modell regisztrálásához
A modell regisztrálva van egy Workspace
. Valószínűleg ismeri Workspace.from_config()
a munkaterületre való bejelentkezést a helyi gépen, de van egy másik módja is a munkaterület lekérésének egy futó ML-folyamaton belül. A Run.get_context()
rendszer lekéri az aktív Run
. Ez az run
objektum számos fontos objektumhoz biztosít hozzáférést, beleértve az Workspace
itt használt objektumokat is.
%%writefile register_model.py
from azureml.core.model import Model, Dataset
from azureml.core.run import Run, _OfflineRun
from azureml.core import Workspace
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--model_name", required=True)
parser.add_argument("--model_path", required=True)
args = parser.parse_args()
print(f"model_name : {args.model_name}")
print(f"model_path: {args.model_path}")
run = Run.get_context()
ws = Workspace.from_config() if type(run) == _OfflineRun else run.experiment.workspace
model = Model.register(workspace=ws,
model_path=args.model_path,
model_name=args.model_name)
print("Registered version {0} of model {1}".format(model.version, model.name))
PythonScriptStep-kód írása
Figyelmeztetés
Ha az Azure Machine Learning SDK 1-et használja, és a munkaterület hálózati elkülönítésre (VNet) van konfigurálva, a lépés futtatásakor hibaüzenet jelenhet meg. További információ: A HyperdriveStep és az AutoMLStep hálózatelkülönítéssel meghiúsul.
A modellregisztrálás PythonScriptStep
egy argumentumot használ PipelineParameter
. A folyamatparaméterek olyan folyamatok argumentumai, amelyek egyszerűen beállíthatók a futtatáskor. A deklarált értékeket a függvény normál argumentumként adja át.
from azureml.pipeline.core.graph import PipelineParameter
# The model name with which to register the trained model in the workspace.
model_name = PipelineParameter("model_name", default_value="TitanicSurvivalInitial")
register_step = PythonScriptStep(script_name="register_model.py",
name="register_model",
allow_reuse=False,
arguments=["--model_name", model_name, "--model_path", model_data],
inputs=[model_data],
compute_target=compute_target,
runconfig=aml_run_config)
Automatizált gépi tanulási folyamat létrehozása és futtatása
Egy olyan folyamat létrehozása és futtatása, amely egy AutoMLStep
normál folyamattól nem különbözik.
from azureml.pipeline.core import Pipeline
from azureml.core import Experiment
pipeline = Pipeline(ws, [dataprep_step, train_step, register_step])
experiment = Experiment(workspace=ws, name='titanic_automl')
run = experiment.submit(pipeline, show_output=True)
run.wait_for_completion()
A fenti kód egyesíti az adatok előkészítését, az automatizált gépi tanulást és a modellregisztrációs lépéseket egy Pipeline
objektumban. Ezután létrehoz egy objektumot Experiment
. A Experiment
konstruktor lekéri az elnevezett kísérletet, ha létezik, vagy szükség esetén létrehozza. Elküldi az objektumot a Pipeline
Experiment
folyamat Run
aszinkron futtatásához. A wait_for_completion()
függvény blokkolja, amíg a futtatás befejeződik.
Folyamat eredményeinek vizsgálata
run
A befejezés után lekérheti PipelineData
a hozzárendelt pipeline_output_name
objektumokat. Letöltheti az eredményeket, és betöltheti őket további feldolgozásra.
metrics_output_port = run.get_pipeline_output('metrics_output')
model_output_port = run.get_pipeline_output('model_output')
metrics_output_port.download('.', show_progress=True)
model_output_port.download('.', show_progress=True)
A letöltött fájlok az alkönyvtárba azureml/{run.id}/
vannak írva. A metrikák fájlja JSON-formátumú, és a vizsgálathoz Pandas-adatkeretté alakítható.
Előfordulhat, hogy a helyi feldolgozáshoz telepítenie kell a megfelelő csomagokat, például a Pandast, a Pickle-t, az Azure Machine Learning SDK-t stb. Ebben a példában valószínű, hogy az automatizált gépi tanulás által talált legjobb modell az XGBoosttól függ.
!pip install xgboost==0.90
import pandas as pd
import json
metrics_filename = metrics_output._path_on_datastore
# metrics_filename = path to downloaded file
with open(metrics_filename) as f:
metrics_output_result = f.read()
deserialized_metrics_output = json.loads(metrics_output_result)
df = pd.DataFrame(deserialized_metrics_output)
df
A fenti kódrészlet a metrikafájlt jeleníti meg, amely az Azure-adattárból töltődik be. A letöltött fájlból is betöltheti a megjegyzésben látható módon. Miután deszerializálta és Pandas DataFrame-gé alakította át, részletes metrikákat láthat az automatizált gépi tanulási lépés egyes iterációihoz.
A modellfájl deszerializálható egy Model
objektumba, amelyet a következtetéshez, a további metrikák elemzéséhez és így tovább használhat.
import pickle
model_filename = model_output._path_on_datastore
# model_filename = path to downloaded file
with open(model_filename, "rb" ) as f:
best_model = pickle.load(f)
# ... inferencing code not shown ...
A meglévő modellek betöltéséről és használatáról további információt a Meglévő modell használata az Azure Machine Learningben című témakörben talál.
Automatizált ml-futtatás eredményeinek letöltése
Ha követte a cikket, egy példányosított objektummal run
fog rendelkezni. A kész Run
objektumokat Workspace
azonban egy objektum útján Experiment
is lekérheti.
A munkaterület tartalmazza az összes kísérlet és futtatás teljes rekordját. A portálon megkeresheti és letöltheti a kísérletek kimeneteit, vagy használhat kódot. Ha egy korábbi futtatás rekordjait szeretné elérni, az Azure Machine Learning segítségével keresse meg annak a futtatásnak az azonosítóját, amelyben érdeklődik. Ezzel az azonosítóval kiválaszthatja az adott run
azonosítót az és Experiment
a Workspace
.
# Retrieved from Azure Machine Learning web UI
run_id = 'aaaaaaaa-bbbb-cccc-dddd-0123456789AB'
experiment = ws.experiments['titanic_automl']
run = next(run for run in ex.get_runs() if run.id == run_id)
A fenti kódban szereplő sztringeket az előzményfuttatás jellemzőire kell módosítania. A fenti kódrészlet feltételezi, hogy a megfelelőhöz Workspace
rendelte ws
a normál from_config()
. A program közvetlenül lekéri az Run
érdeklődési kísérletet, majd a kód az érték egyeztetésével megkeresi a run.id
kamatot.
Miután rendelkezik egy Run
objektummal, letöltheti a metrikákat és a modellt.
automl_run = next(r for r in run.get_children() if r.name == 'AutoML_Classification')
outputs = automl_run.get_outputs()
metrics = outputs['default_metrics_AutoML_Classification']
model = outputs['default_model_AutoML_Classification']
metrics.get_port_data_reference().download('.')
model.get_port_data_reference().download('.')
Minden Run
objektum olyan objektumokat tartalmaz StepRun
, amelyek információkat tartalmaznak az egyes folyamatlépések futtatásáról. A run
keresett objektum AutoMLStep
a StepRun
. A metrikák és a modell az alapértelmezett nevük alapján lesznek lekérve, amelyek akkor is elérhetők, ha nem ad át PipelineData
objektumokat a outputs
AutoMLStep
paraméternek.
Végül a rendszer letölti a tényleges metrikákat és modellt a helyi gépre, amint azt a fenti "Folyamateredmények vizsgálata" című szakaszban tárgyaltuk.
Következő lépések
- Futtassa ezt a Jupyter-jegyzetfüzetet, amely az automatizált gépi tanulás teljes példáját mutatja be egy olyan folyamatban , amely regressziót használ a taxidíjak előrejelzéséhez
- Automatizált gépi tanulási kísérletek létrehozása kódírás nélkül
- Az automatizált gépi tanulást bemutató Jupyter-notebookok széles választékának felfedezése
- További információ a folyamat teljes körű MLOpsba való integrálásáról vagy az MLOps GitHub-adattár vizsgálatáról
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: