AutoML-betanítás beállítása táblázatos adatokhoz az Azure Machine Tanulás CLI-vel és Python SDK-val

ÉRVÉNYES:Azure CLI ml-bővítmény v2 (aktuális)Python SDK azure-ai-ml v2 (aktuális)

Ebből az útmutatóból megtudhatja, hogyan állíthat be automatikus gépi tanulási, AutoML- és betanítási feladatokat az Azure Machine Tanulás Python SDK 2-es verzióval. Az automatizált gépi tanulás kiválaszt egy algoritmust és hiperparamétereket, és létrehoz egy üzembe helyezésre kész modellt. Ez az útmutató részletesen ismerteti az automatizált gépi tanulási kísérletek konfigurálásához használható különféle lehetőségeket.

Ha inkább a kód nélküli felületet választja, a kód nélküli AutoML-betanítást is beállíthatja az Azure Machine Tanulás studióban.

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 az Azure Machine Tanulás ingyenes vagy fizetős verzióját.
  • Egy Azure Machine Learning-munkaterület. Ha nincs ilyenje, az erőforrások létrehozása című cikk lépéseit követve kezdheti el a cikket.

Az SDK-információk használatához telepítse az Azure Machine Tanulás SDK v2 for Pythont.

Az SDK telepítéséhez

  • Hozzon létre egy számítási példányt, amely már telepítette a legújabb Azure Machine Tanulás Python SDK-t, és előre konfigurálva van az ML-munkafolyamatokhoz. További információ: Azure Machine Tanulás számítási példány létrehozása.
  • Az SDK telepítése a helyi gépen

A munkaterület beállítása

A munkaterülethez való csatlakozáshoz meg kell adnia egy előfizetést, egy erőforráscsoportot és egy munkaterületnevet.

A munkaterület részleteivel lekérheti a MLClientazure.ai.ml leírót a szükséges Azure Machine Tanulás munkaterületre.

Az alábbi példában a rendszer az alapértelmezett Azure-hitelesítést használja az alapértelmezett munkaterület-konfigurációval együtt, vagy bármely config.json olyan fájlból, amelyet átmásolt a mappák struktúrájába. Ha nem config.json található, manuálisan kell bevezetnie a subscription_id, a resource_group és a munkaterületet a létrehozáskor MLClient.

from azure.identity import DefaultAzureCredential
from azure.ai.ml import MLClient

credential = DefaultAzureCredential()
ml_client = None
try:
    ml_client = MLClient.from_config(credential)
except Exception as ex:
    print(ex)
    # Enter details of your Azure Machine Learning workspace
    subscription_id = "<SUBSCRIPTION_ID>"
    resource_group = "<RESOURCE_GROUP>"
    workspace = "<AZUREML_WORKSPACE_NAME>"
    ml_client = MLClient(credential, subscription_id, resource_group, workspace)

Adatforrás és formátum

Ahhoz, hogy betanítási adatokat biztosíthasson az AutoML-nek az SDK v2-ben, fel kell töltenie őket a felhőbe egy MLTable használatával.

Az adatok MLTable-ba való betöltésének követelményei:

  • Az adatoknak táblázatos formában kell lenniük.
  • Az előrejelezendő értéknek, a céloszlopnak az adatokban kell lennie.

A betanítási adatoknak elérhetőnek kell lenniük a távoli számításból. Az automatizált ML v2 (Python SDK és CLI/YAML) az MLTable adategységeket (v2) fogadja el, de a visszamenőleges kompatibilitás érdekében támogatja az 1-es verzió (regisztrált táblázatos adatkészlet) v1 táblázatos adatkészleteit is ugyanazokkal a bemeneti adathalmaz-tulajdonságokkal. A javaslat azonban a 2- es verzióban elérhető MLTable használata. Ebben a példában feltételezzük, hogy az adatok a helyi elérési úton lesznek tárolva, ./train_data/bank_marketing_train_data.csv

Az mltable Python SDK használatával létrehozhat egy MLTable-t, ahogyan az alábbi példában is látható:

import mltable

paths = [
    {'file': './train_data/bank_marketing_train_data.csv'}
]

train_table = mltable.from_delimited_files(paths)
train_table.save('./train_data')

Ez a kód létrehoz egy új fájlt, ./train_data/MLTableamely tartalmazza a fájlformátumot és a betöltési utasításokat.

Most a ./train_data mappában az MLTable definíciós fájl és az adatfájl található. bank_marketing_train_data.csv

További információ az MLTable-ról: mltable útmutató

Betanítási, érvényesítési és tesztelési adatok

Megadhat külön betanítási adatokat és érvényesítési adatkészleteket, de a betanítási adatokat meg kell adni a training_data paraméternek az automatizált gépi tanulási feladat gyári függvényében.

Ha nem ad meg explicit módon egy vagy n_cross_validation több paramétertvalidation_data, az automatizált gépi tanulás alapértelmezett technikákat alkalmaz az ellenőrzés végrehajtásának meghatározásához. Ez a meghatározás a paraméterhez rendelt training_data adathalmaz sorainak számától függ.

Betanítási adatok mérete Érvényesítési technika
20 000 sornál nagyobb Betanítási/érvényesítési adatok felosztása lesz alkalmazva. Az alapértelmezett beállítás az, hogy a kezdeti betanítási adatkészlet 10%-át használja érvényesítési csoportként. Ez az érvényesítési csoport a metrikák kiszámításához használatos.
20 000 sornál kisebb vagy egyenlő A rendszer keresztérvényesítési megközelítést alkalmaz. A hajtások alapértelmezett száma a sorok számától függ.
Ha az adathalmaz kevesebb, mint 1000 sor, akkor a rendszer 10 hajtást használ.
Ha a sorok értéke 1000 és 20 000 között van, akkor a rendszer három hajtást használ.

Számítás a kísérlet futtatásához

A Python SDK v2 (vagy CLI v2) használatával végzett automatizált ml-feladatok jelenleg csak az Azure Machine Tanulás távoli számításban (fürt vagy számítási példány) támogatottak.

További információ a számítás Python SDKv2 (vagy CLIv2) használatával történő létrehozásáról.

A kísérlet beállításainak konfigurálása

Az automatizált gépi tanulási kísérlet konfigurálásához számos lehetőség közül választhat. Ezek a konfigurációs paraméterek a feladatmetódusban vannak beállítva. A feladat betanítási beállításait és a kilépési feltételeket is megadhatja a traininglimits beállításokkal együtt.

Az alábbi példa egy besorolási feladathoz szükséges paramétereket mutatja be, amelyek elsődleges metrikaként és 5 keresztérvényesítési hajtásként határozzák meg a pontosságot.

from azure.ai.ml.constants import AssetTypes
from azure.ai.ml import automl, Input

# note that this is a code snippet -- you might have to modify the variable values to run it successfully

# make an Input object for the training data
my_training_data_input = Input(
    type=AssetTypes.MLTABLE, path="./data/training-mltable-folder"
)

# configure the classification job
classification_job = automl.classification(
    compute=my_compute_name,
    experiment_name=my_exp_name,
    training_data=my_training_data_input,
    target_column_name="y",
    primary_metric="accuracy",
    n_cross_validations=5,
    enable_model_explainability=True,
    tags={"my_custom_tag": "My custom value"}
)

# Limits are all optional
classification_job.set_limits(
    timeout_minutes=600, 
    trial_timeout_minutes=20, 
    max_trials=5,
    enable_early_termination=True,
)

# Training properties are optional
classification_job.set_training(
    blocked_training_algorithms=["logistic_regression"], 
    enable_onnx_compatible_models=True
)

Válassza ki a gépi tanulási feladat típusát (ML-probléma)

Az automatizált gépi tanulási feladat elküldése előtt meg kell határoznia, hogy milyen gépi tanulási problémát old meg. Ez a probléma határozza meg, hogy az automatizált gépi tanulási feladat melyik függvényt és milyen modell-algoritmusokat használ.

Az automatizált gépi tanulás támogatja a táblázatos adatalapú feladatokat (besorolás, regresszió, előrejelzés), a számítógépes látási feladatokat (például a képbesorolást és az objektumészlelést), valamint a természetes nyelvi feldolgozási feladatokat (például szövegbesorolási és entitásfelismerési feladatokat). További információt a tevékenységtípusokról szóló cikkünkben talál. Az előrejelzési feladatok beállításával kapcsolatos további részletekért tekintse meg az idősorok előrejelzési útmutatóját.

Támogatott algoritmusok

Az automatizált gépi tanulás különböző modelleket és algoritmusokat próbál ki az automatizálási és finomhangolási folyamat során. Felhasználóként nem kell megadnia az algoritmust.

A feladatmetódus határozza meg az alkalmazni kívánt algoritmusok/modellek listáját. allowed_training_algorithms Az AutoML-feladat konfigurációjában szereplő training paraméterekkel blocked_training_algorithms tovább módosíthatja az iterációkat az elérhető modellekkel, hogy belefoglalják vagy kizárják azokat.

Az alábbi hivatkozások listájában az alább felsorolt gépi tanulási feladatonkénti támogatott algoritmusokat ismerheti meg.

Osztályozás Regresszió Idősoros előrejelzés
Logisztikai regresszió* Rugalmas háló* AutoARIMA
Világos GBM* Világos GBM* Próféta
Színátmenetes kiemelés* Színátmenetes kiemelés* Rugalmas háló
Döntési fa* Döntési fa* Világos GBM
K Legközelebbi szomszédok* K Legközelebbi szomszédok* K legközelebbi szomszédok
Lineáris SVC* LARS Lasso* Döntési fa
Támogatásvektor-besorolás (SVC)* Sztochasztikus színátmenetes süllyedés (SGD)* Arimax
Véletlenszerű erdő* Véletlenszerű erdő LARS Lasso
Rendkívül véletlenszerű fák* Rendkívül véletlenszerű fák* Rendkívül véletlenszerű fák*
Xgboost* Xgboost* Véletlenszerű erdő
Naiv Bayes* Xgboost TCNForecaster
Sztochasztikus színátmenetes süllyedés (SGD)* Sztochasztikus színátmenetes süllyedés (SGD) Színátmenetes kiemelés
ExponenciálisSmoothing
SeasonalNaive
Átlag
Naiv
SeasonalAverage

További algoritmusokkal az alábbiakban.

Kövesse ezt a hivatkozást , például az egyes tevékenységtípusok jegyzetfüzeteit.

Elsődleges metrika

A primary_metric paraméter meghatározza a modellbetanítás során az optimalizáláshoz használandó metrikát. A választható metrikákat a választott tevékenységtípus határozza meg.

Az automatizált gépi tanulás elsődleges metrikájának kiválasztása az optimalizáláshoz számos tényezőtől függ. Azt javasoljuk, hogy az elsődleges szempont egy olyan metrika kiválasztása legyen, amely a legjobban megfelel az üzleti igényeinek. Ezután fontolja meg, hogy a metrika alkalmas-e az adathalmaz-profilhoz (adatméret, tartomány, osztályeloszlás stb.). Az alábbi szakaszok a tevékenységtípus és az üzleti forgatókönyv alapján összegzik az ajánlott elsődleges metrikákat.

Az automatizált gépi tanulási eredmények megismerésében megismerheti ezeknek a metrikáknak a konkrét definícióit.

Metrikák többosztályos forgatókönyvek besorolásához

Ezek a metrikák az összes besorolási forgatókönyvre érvényesek, beleértve a táblázatos adatokat, a képeket/a számítógépes látást és az NLP-textet.

A küszöbérték-függő metrikák, például accuracya norm_macro_recall, recall_score_weighted, és precision_score_weighted nem feltétlenül optimalizálhatók olyan adathalmazokhoz, amelyek kicsik, nagy osztályeltérésben (osztálykiegyenlülés), vagy ha a várt metrikaérték nagyon közel van a 0,0-hoz vagy az 1.0-hoz. Ezekben az esetekben AUC_weighted jobb választás lehet az elsődleges metrika számára. Az automatizált gépi tanulás befejezése után kiválaszthatja a nyertes modellt az üzleti igényeinek leginkább megfelelő metrika alapján.

Metrika Példa használati eset(ek)
accuracy Képbesorolás, Hangulatelemzés, Változás előrejelzése
AUC_weighted Csalásészlelés, Képbesorolás, Anomáliadetektálás/levélszemétészlelés
average_precision_score_weighted Hangulatelemzés
norm_macro_recall Változás előrejelzése
precision_score_weighted

Metrikák többcímkés forgatókönyvek besorolásához

  • A szövegbesorolás esetében jelenleg a többcímkés "Pontosság" az egyetlen támogatott elsődleges metrika.

  • Többcímke képbesorolása esetén a támogatott elsődleges metrikákat a ClassificationMultilabelPrimaryMetrics Enum határozza meg

Az NLP Text NER (Named Entity Recognition) forgatókönyveinek metrikái

  • Az NLP Text NER (Named Entity Recognition) esetében jelenleg a "Pontosság" az egyetlen támogatott elsődleges metrika.

Regressziós forgatókönyvekhez használható metrikák

r2_score, normalized_mean_absolute_error és normalized_root_mean_squared_error megpróbálják minimalizálni az előrejelzési hibákat. r2_score és normalized_root_mean_squared_error mindkettő minimálisra csökkenti az átlagos négyzetes hibákat, miközben normalized_mean_absolute_error minimalizálja a hibák átlagos abszolút értékét. Az abszolút érték minden nagyságrendben kezeli a hibákat, és a négyzetes hibák sokkal nagyobb büntetést kapnak a nagyobb abszolút értékeket tartalmazó hibákért. Attól függően, hogy nagyobb hibákat kell-e többé vagy sem büntetni, választhat, hogy optimalizálja a négyzetes vagy az abszolút hibát.

A fő különbség a normalizálásuk módja és a jelentésük között r2_scorenormalized_root_mean_squared_error . normalized_root_mean_squared_error a tartomány szerint normalizált, négyzetes középértéket jelenti, és az előrejelzés átlagos hibaértékeként értelmezhető. r2_score az adateltérés becslése által normalizált átlagos négyzetes hiba. Ez a modell által rögzíthető variációk aránya.

Feljegyzés

r2_score és normalized_root_mean_squared_error ugyanúgy viselkedik, mint az elsődleges metrikák. Rögzített érvényesítési csoport alkalmazása esetén ez a két metrika ugyanazt a célt optimalizálja, a középérték négyzetes hibát jelenti, és ugyanazt a modellt fogja optimalizálni. Ha csak egy betanítási készlet áll rendelkezésre, és keresztérvényesítést alkalmaz, azok kissé eltérőek lesznek, mivel a normalizáló normalized_root_mean_squared_error a betanítási készlet tartományaként van rögzítve, de a normalizáló r2_score minden hajtás esetében eltérő lehet, mivel ez az egyes hajtások varianciája.

Ha a rangsor a pontos érték helyett érdekes, akkor jobb választás lehet, spearman_correlation mivel a valós értékek és az előrejelzések közötti rang-korrelációt méri.

Az AutoML jelenleg nem támogat olyan elsődleges metrikákat, amelyek az előrejelzések és a megfigyelések közötti relatív különbséget mérik. A metrikák r2_scoreés normalized_mean_absolute_errornormalized_root_mean_squared_error az abszolút különbség mértékei. Ha például egy előrejelzés 10 egységre tér el egy megfigyeléstől, akkor ezek a metrikák ugyanazt az értéket számítják ki, ha a megfigyelés 20 egység vagy 20 000 egység. Ezzel szemben a relatív mérték százalékos különbsége 50%-os, illetve 0,05%-os hibákat ad! A relatív különbség optimalizálásához futtassa az AutoML-t egy támogatott elsődleges metrikával, majd válassza ki a modellt a legjobb vagy root_mean_squared_log_errora .mean_absolute_percentage_error Vegye figyelembe, hogy ezek a metrikák nem definiálva vannak, ha bármely megfigyelési érték nulla, ezért előfordulhat, hogy nem mindig jó választás.

Metrika Példa használati eset(ek)
spearman_correlation
normalized_root_mean_squared_error Ár-előrejelzés (ház/termék/tipp), Pontszám előrejelzésének áttekintése
r2_score Légitársaság késése, Fizetés becslése, Hibafeloldási idő
normalized_mean_absolute_error

Idősor-előrejelzési forgatókönyvek metrikái

A javaslatok hasonlóak a regressziós forgatókönyvekhez feljegyzett javaslatokhoz.

Metrika Példa használati eset(ek)
normalized_root_mean_squared_error Ár-előrejelzés (előrejelzés), Készletoptimalizálás, Kereslet-előrejelzés
r2_score Ár-előrejelzés (előrejelzés), Készletoptimalizálás, Kereslet-előrejelzés
normalized_mean_absolute_error

Metrikák képobjektum-észlelési forgatókönyvekhez

  • Képobjektum-észlelés esetén a támogatott elsődleges metrikák az ObjectDetectionPrimaryMetrics enumerálásában vannak definiálva

Metrikák képpéldány szegmentálási forgatókönyvekhez

  • Képpéldány szegmentálási forgatókönyvei esetén a támogatott elsődleges metrikák az InstanceSegmentationPrimaryMetrics Enumban vannak definiálva

Adatok featurizálása

Minden automatizált gépi tanulási kísérletben az adatok automatikusan számokká és számvektorokká alakulnak át, valamint skálázódnak és normalizálódnak, hogy segítsék a különböző skálázású funkciókra érzékeny algoritmusokat. Ezeket az adatátalakításokat featurizációnak nevezzük.

Feljegyzés

A gépi tanulás automatizált featurizálási lépései (funkció normalizálása, hiányzó adatok kezelése, szöveg numerikussá alakítása stb.) a mögöttes modell részévé válnak. Ha a modellt előrejelzésekhez használja, a betanítás során alkalmazott featurizációs lépések automatikusan a bemeneti adatokra lesznek alkalmazva.

Az automatizált gépi tanulási feladatok konfigurálásakor engedélyezheti vagy letilthatja a featurization beállításokat.

Az alábbi táblázat a featurizálás elfogadott beállításait mutatja be.

Featurization Configuration Leírás
"mode": 'auto' Azt jelzi, hogy az előfeldolgozás részeként a rendszer automatikusan végrehajtja az adatvédettségi és a featurizálási lépéseket . Alapértelmezett beállítás.
"mode": 'off' Azt jelzi, hogy a featurizációs lépést nem szabad automatikusan elvégezni.
"mode": 'custom' Azt jelzi, hogy a testre szabott featurizációs lépést kell használni.

Az alábbi kód bemutatja, hogyan lehet egyéni featurizációt biztosítani ebben az esetben egy regressziós feladathoz.

from azure.ai.ml.automl import ColumnTransformer

transformer_params = {
    "imputer": [
        ColumnTransformer(fields=["CACH"], parameters={"strategy": "most_frequent"}),
        ColumnTransformer(fields=["PRP"], parameters={"strategy": "most_frequent"}),
    ],
}
regression_job.set_featurization(
    mode="custom",
    transformer_params=transformer_params,
    blocked_transformers=["LabelEncoding"],
    column_name_and_types={"CHMIN": "Categorical"},
)

Kilépési feltételek

A függvényben set_limits() definiálhat néhány lehetőséget a kísérlet befejezéséhez a feladat befejezése előtt.

Feltételek leírás
Nincs feltétel Ha nem határoz meg kilépési paramétereket, a kísérlet addig folytatódik, amíg az elsődleges metrika nem végez további előrehaladást.
timeout Meghatározza, hogy a kísérlet mennyi ideig futjon percek alatt. Ha nincs megadva, az alapértelmezett feladat teljes időtúllépése 6 nap (8640 perc). Ha 1 óránál (60 percnél) rövidebb vagy egyenlő időtúllépést szeretne megadni, győződjön meg arról, hogy az adathalmaz mérete nem nagyobb 10 000 000-nél (sorok időoszlopa) vagy hibaeredmények.

Ez az időtúllépés magában foglalja a beállítási, a featurizációs és a betanítási futtatásokat, de nem tartalmazza a folyamat végén futó ensembling és modell magyarázatát, mivel ezeknek a műveleteknek az összes próba (gyermekfeladat) befejezése után kell történnie.
trial_timeout_minutes A próbaidőszakok (gyermekfeladatok) futásának maximális időtartama percekben, mielőtt befejeződne. Ha nincs megadva, a rendszer 1 hónapos vagy 43200 perces értéket használ
enable_early_termination A feladat befejezése, ha a pontszám rövid távon nem javul
max_trials Az AutoML-feladatok során kipróbálandó algoritmusok és hiperparaméterek eltérő kombinációjával futtatott kísérletek/futtatások maximális száma. Ha nincs megadva, az alapértelmezett érték 1000 próba. enable_early_termination Ha a használt próbaverziók száma kisebb lehet.
max_concurrent_trials A párhuzamosan végrehajtandó kísérletek (gyermekfeladatok) maximális számát jelöli. Ezt a számot célszerű egyeztetni a fürt csomópontjainak számával

Kísérlet futtatása

Feljegyzés

Ha ugyanazt a konfigurációs beállítást és elsődleges metrikát többször futtatja, valószínűleg az egyes kísérletekben a végleges metrikák pontszámának és a létrehozott modelleknek a variációja jelenik meg. Az automatizált gépi tanulási algoritmusok eredendő véletlenszerűséggel rendelkeznek, ami kismértékű eltérést okozhat a modellek kimenetében a kísérlet és az ajánlott modell végső metrikák pontszámában, például a pontosságban. Valószínűleg ugyanazzal a modellnévvel, de különböző hiperparaméterekkel is látni fogja az eredményeket.

Figyelmeztetés

Ha a tűzfalban és/vagy a hálózati biztonsági csoportban szabályokat állított be a munkaterületen, ellenőrizze, hogy a bejövő és kimenő hálózati forgalomhoz szükséges engedélyek vannak-e megadva a bejövő és kimenő hálózati forgalom konfigurálásában meghatározottak szerint.

Küldje el a kísérletet futtatásra, és hozzon létre egy modellt. MLClient Az előfeltételekben létrehozott paranccsal futtathatja a következő parancsot a munkaterületen.


# Submit the AutoML job
returned_job = ml_client.jobs.create_or_update(
    classification_job
)  # submit the job to the backend

print(f"Created job: {returned_job}")

# Get a URL for the status of the job
returned_job.services["Studio"].endpoint

Több gyermekfuttatás fürtökön

Az automatizált gépi tanulási kísérlet gyermekfuttatásai olyan fürtön is elvégezhetők, amely már futtat egy másik kísérletet. Az időzítés azonban attól függ, hogy hány csomópontja van a fürtnek, és hogy ezek a csomópontok elérhetők-e egy másik kísérlet futtatásához.

A fürt minden csomópontja önálló virtuális gépként (VM) működik, amely egyetlen betanítási futtatásra képes; automatizált gépi tanulás esetén ez gyermekfuttatást jelent. Ha az összes csomópont foglalt, egy új kísérlet lesz várólistán. Ha azonban vannak ingyenes csomópontok, az új kísérlet automatizált ml-gyermekfuttatásokat futtat párhuzamosan az elérhető csomópontokon/virtuális gépeken.

A gyermekfuttatások kezeléséhez és azok végrehajtásához javasoljuk, hogy kísérletenként hozzon létre egy dedikált fürtöt, és egyezzen a kísérlet számával max_concurrent_iterations a fürt csomópontjainak számával. Így a fürt összes csomópontját egyszerre, az egyidejű gyermekfuttatások/iterációk számával együtt használhatja.

Konfigurálás max_concurrent_iterations a limits konfigurációban. Ha nincs konfigurálva, akkor alapértelmezés szerint kísérletenként csak egy egyidejű gyermekfuttatás/iteráció engedélyezett. Számítási példány max_concurrent_trials esetén a számítási példány virtuális gépén lévő magok számával megegyező értékre állítható be.

Modellek és metrikák megismerése

Az automatizált gépi tanulás lehetőséget kínál a betanítási eredmények monitorozására és kiértékelésére.

  • Az egyes futtatásokhoz megadott teljesítménydiagramokra és metrikákra vonatkozó definíciókat és példákat az automatizált gépi tanulási kísérletek eredményeinek kiértékelése című témakörben talál.

  • Ha szeretné lekérni a featurizációs összegzést, és tudni szeretné, hogy milyen funkciók lettek hozzáadva egy adott modellhez, tekintse meg a featurizáció átláthatóságát.

Az Azure Machine Tanulás felhasználói felületén a modell oldalán megtekintheti az adott modell betanításakor használt hiperparamétereket, valamint megtekintheti és testre szabhatja a belső modell betanítási kódját.

Modellek regisztrálása és üzembe helyezése

Miután tesztelt egy modellt, és megerősítette, hogy éles környezetben szeretné használni, regisztrálhatja későbbi használatra.

Tipp.

Regisztrált modellek esetén az egykattintásos üzembe helyezés az Azure Machine Tanulás Studióban érhető el. Megtudhatja , hogyan helyezhet üzembe regisztrált modelleket a stúdióból.

AutoML folyamatokban

Az AutoML MLOps-munkafolyamatokban való használatához hozzáadhat AutoML-feladatlépéseket az Azure Machine Tanulás-folyamatokhoz. Ez lehetővé teszi a teljes munkafolyamat automatizálását azáltal, hogy csatlakoztatja az adat-előkészítési szkripteket az AutoML-hez, majd regisztrálja és érvényesíti az eredményül kapott legjobb modellt.

Az alábbiakban egy AutoML-besorolási összetevőt és egy parancsösszetevőt tartalmazó mintafolyamat látható, amely az eredményként kapott AutoML-kimenetet jeleníti meg. Figyelje meg, hogy a bemenetek (betanítási és érvényesítési adatok) és a kimenetek (a legjobb modell) különböző lépésekben vannak hivatkozva.

# Define pipeline
@pipeline(
    description="AutoML Classification Pipeline",
    )
def automl_classification(
    classification_train_data,
    classification_validation_data
):
    # define the automl classification task with automl function
    classification_node = classification(
        training_data=classification_train_data,
        validation_data=classification_validation_data,
        target_column_name="y",
        primary_metric="accuracy",
        # currently need to specify outputs "mlflow_model" explictly to reference it in following nodes 
        outputs={"best_model": Output(type="mlflow_model")},
    )
    # set limits and training
    classification_node.set_limits(max_trials=1)
    classification_node.set_training(
        enable_stack_ensemble=False,
        enable_vote_ensemble=False
    )

    command_func = command(
        inputs=dict(
            automl_output=Input(type="mlflow_model")
        ),
        command="ls ${{inputs.automl_output}}",
        environment="AzureML-sklearn-0.24-ubuntu18.04-py37-cpu:latest"
    )
    show_output = command_func(automl_output=classification_node.outputs.best_model)


pipeline_job = automl_classification(
    classification_train_data=Input(path="./training-mltable-folder/", type="mltable"),
    classification_validation_data=Input(path="./validation-mltable-folder/", type="mltable"),
)

# set pipeline level compute
pipeline_job.settings.default_compute = compute_name

# submit the pipeline job
returned_pipeline_job = ml_client.jobs.create_or_update(
    pipeline_job,
    experiment_name=experiment_name
)
returned_pipeline_job

# ...
# Note that this is a snippet from the bankmarketing example you can find in our examples repo -> https://github.com/Azure/azureml-examples/tree/main/sdk/python/jobs/pipelines/1h_automl_in_pipeline/automl-classification-bankmarketing-in-pipeline

Az AutoML folyamatba való belefoglalására vonatkozó további példákért tekintse meg a példák adattárát.

AutoML nagy méretekben: elosztott betanítás

Nagy adatforgatókönyvek esetén az AutoML támogatja az elosztott betanítást korlátozott modellek esetén:

Elosztott algoritmus Támogatott tevékenységek Adatméretkorlát (hozzávetőleges)
LightGBM Besorolás, regresszió 1 TB
TCNForecaster Előrejelzés 200 GB

Az elosztott betanítási algoritmusok automatikusan particionálják és terjesztik az adatokat több számítási csomóponton a modell betanítása érdekében.

Feljegyzés

Az elosztott betanítási módban jelenleg nem támogatott a keresztérvényesítés, az együttes modellek, az ONNX-támogatás és a kódgenerálás. Emellett az AutoML olyan döntéseket is hozhat, mint a rendelkezésre álló featurálók és a részmintavételi adatok korlátozása az ellenőrzéshez, a magyarázhatósághoz és a modell kiértékeléshez.

Elosztott betanítás besoroláshoz és regresszióhoz

Az elosztott betanítás besoroláshoz vagy regresszióhoz való használatához be kell állítania a training_mode feladatobjektum tulajdonságait és max_nodes tulajdonságait.

Tulajdonság Leírás
training_mode Betanítási módot jelez; distributed vagy non_distributed. Alapértelmezett érték: non_distributed.
max_nodes Az egyes AutoML-próbaverziók betanításához használandó csomópontok száma. Ennek a beállításnak 4-nél nagyobbnak vagy egyenlőnek kell lennie.

Az alábbi kódminta egy besorolási feladat alábbi beállításait mutatja be:

from azure.ai.ml.constants import TabularTrainingMode

# Set the training mode to distributed
classification_job.set_training(
    allowed_training_algorithms=["LightGBM"],
    training_mode=TabularTrainingMode.DISTRIBUTED
)

# Distribute training across 4 nodes for each trial
classification_job.set_limits(
    max_nodes=4,
    # other limit settings
)

Feljegyzés

A besorolási és regressziós feladatok elosztott betanítása jelenleg nem támogatja több egyidejű próbaverziót. A modellkísérletek csomópontok használatával max_nodes egymás után hajtják végre az egyes próbaidőszakokat. A max_concurrent_trials korlátbeállítás jelenleg figyelmen kívül van hagyva.

Elosztott betanítás előrejelzéshez

Ha szeretné megtudni, hogyan működik az elosztott betanítás az előrejelzési feladatokhoz, tekintse meg a nagy léptékű előrejelzési cikkünket. Ha elosztott betanítást szeretne használni az előrejelzéshez, be kell állítania a training_modeenable_dnn_trainingmax_nodesfeladatobjektum tulajdonságait és max_concurrent_trials tulajdonságait.

Tulajdonság Leírás
training_mode Betanítási módot jelez; distributed vagy non_distributed. Alapértelmezett érték: non_distributed.
enable_dnn_training Jelölő a mély neurális hálózati modellek engedélyezéséhez.
max_concurrent_trials Ez a párhuzamos betanított próbamodellek maximális száma. Alapértelmezett érték: 1.
max_nodes A betanításhoz használandó csomópontok teljes száma. Ennek a beállításnak 2-nél nagyobbnak vagy egyenlőnek kell lennie. Az előrejelzési feladatokhoz az egyes próbamodelleket $\text{max}\left(2, \text{floor}( \text{max_nodes} / \text{max_concurrent_trials}) \right)$ csomópontokkal tanítjuk be.

Az alábbi kódminta egy előrejelzési feladat alábbi beállításait mutatja be:

from azure.ai.ml.constants import TabularTrainingMode

# Set the training mode to distributed
forecasting_job.set_training(
    enable_dnn_training=True,
    allowed_training_algorithms=["TCNForecaster"],
    training_mode=TabularTrainingMode.DISTRIBUTED
)

# Distribute training across 4 nodes
# Train 2 trial models in parallel => 2 nodes per trial
forecasting_job.set_limits(
    max_concurrent_trials=2,
    max_nodes=4,
    # other limit settings
)

A teljes konfigurációs kód mintáit a konfigurációról és a feladatok beküldéséről szóló korábbi szakaszokban találja.

Következő lépések