Sdílet prostřednictvím


Nastavení trénování AutoML pro tabulková data pomocí azure Machine Learning CLI a sady Python SDK

PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)Python SDK azure-ai-ml v2 (aktuální)

V tomto článku se dozvíte, jak nastavit trénovací úlohu automatizovaného strojového učení (AutoML) pomocí sady Azure Machine Learning Python SDK v2. Automatizované strojové učení pro vás vybere algoritmus a hyperparametry a vygeneruje model připravený k nasazení. Tento článek obsahuje podrobnosti o různých možnostech, které můžete použít ke konfiguraci experimentů automatizovaného strojového učení.

Pokud dáváte přednost prostředí bez kódu, můžete také nastavit automatizované trénování strojového učení bez kódu pro tabulková data pomocí uživatelského rozhraní studia.

Požadavky

Pokud chcete použít informace o sadě SDK , nainstalujte sadu Azure Machine Learning SDK v2 pro Python.

Pokud chcete nainstalovat sadu SDK, můžete:

  • Vytvořte výpočetní instanci, která už obsahuje nejnovější sadu Azure Machine Learning Python SDK a je nakonfigurovaná pro pracovní postupy ML. Další informace najdete v tématu Vytvoření výpočetní instance služby Azure Machine Learning.
  • Nainstalujte sadu SDK na místní počítač.

Nastavení pracovního prostoru

Pokud se chcete připojit k pracovnímu prostoru, musíte zadat předplatné, skupinu prostředků a pracovní prostor.

Podrobnosti o pracovním prostoru se používají k MLClient azure.ai.ml získání popisovače požadovaného pracovního prostoru Azure Machine Learning.

Následující příklad používá výchozí ověřování Azure s výchozí konfigurací pracovního prostoru nebo konfigurací ze config.json souboru ve struktuře složek. Pokud ho nenajdete, config.jsonmusíte při vytváření MLClientručně zavést ID předplatného, skupinu prostředků a pracovní prostor .

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)

Zadání zdroje a formátu dat

Abyste mohli poskytovat trénovací data v sadě SDK v2, musíte je nahrát do cloudu prostřednictvím tabulky MLTable.

Požadavky na načtení dat do tabulky MLTable:

  • Data musí být v tabulkové podobě.
  • Hodnota, která se má předpovědět, cílový sloupec, musí být v datech.

Trénovací data musí být přístupná ze vzdáleného výpočetního prostředí. Automatizované strojové učení v2 (Python SDK a CLI/YAML) přijímá datové prostředky MLTable (v2). Kvůli zpětné kompatibilitě podporuje tabulkové datové sady verze 1 z verze 1 zaregistrovanou tabulkovou datovou sadu prostřednictvím stejných vlastností vstupní datové sady. Doporučujeme používat tabulku MLTable, která je dostupná ve verzi 2. V tomto příkladu jsou data uložena v místní cestě ./train_data/bank_marketing_train_data.csv.

Tabulku MLTable můžete vytvořit pomocí sady MLtable Python SDK , jak je znázorněno v následujícím příkladu:

import mltable

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

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

Tento kód vytvoří nový soubor ./train_data/MLTable, který obsahuje formát souboru a pokyny k načtení.

Složka ./train_data teď obsahuje definiční soubor MLTable a datový soubor bank_marketing_train_data.csv.

Další informace o tabulce MLTable najdete v tématu Práce s tabulkami ve službě Azure Machine Learning.

Trénování, ověřování a testování dat

Můžete zadat samostatná trénovací data a sady ověřovacích dat. Trénovací data musí být k dispozici training_data parametru ve funkci továrny vaší úlohy automatizovaného strojového učení.

Pokud explicitně nezadáte validation_data parametr nebo n_cross_validation parametr, automatizované strojové učení použije výchozí techniky k určení způsobu provedení ověření. Toto určení závisí na počtu řádků v datové sadě přiřazené k vašemu training_data parametru.

Velikost trénovacích dat Technika ověřování
Větší než 20 000 řádků Použije se rozdělení trénovacích a ověřovacích dat. Výchozí hodnota je 10 % počáteční trénovací sady dat jako ověřovací sady. Tato ověřovací sada se pak používá pro výpočet metrik.
Menší než nebo rovno 20 000 řádků Použije se přístup křížového ověřování. Výchozí počet záhybů závisí na počtu řádků.
Pokud je datová sada menší než 1 000 řádků, použije se deset složených záhybů.
Pokud jsou řádky rovny nebo mezi 1 000 a 20 000, použijí se tři záhyby.

Výpočetní prostředí pro spuštění experimentu

Automatizované úlohy strojového učení s využitím sady Python SDK v2 (nebo CLI v2) se v současné době podporují jenom ve vzdáleném výpočetním clusteru nebo výpočetní instanci služby Azure Machine Learning. Další informace o vytváření výpočetních prostředků pomocí PythonU SDKv2 nebo CLIv2 najdete v tématu Trénování modelů pomocí rozhraní příkazového řádku služby Azure Machine Learning, sady SDK a rozhraní REST API.

Konfigurace nastavení experimentu

Existuje několik možností, které můžete použít ke konfiguraci experimentu automatizovaného strojového učení. Tyto parametry konfigurace jsou nastavené ve vaší metodě úlohy. Pomocí nastavení a nastavení můžete také nastavit nastavení trénování úloh a limits ukončit kritériatraining.

Následující příklad ukazuje požadované parametry pro úlohu klasifikace, která určuje přesnost jako primární metriku a pět křížových ověření přeložení.

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ýběr typu úlohy strojového učení

Než budete moct odeslat úlohu automatizovaného strojového učení, určete typ problému strojového učení, který chcete vyřešit. Tento problém určuje, jakou funkci vaše úloha používá a jaké algoritmy modelu použije.

Automatizované strojové učení podporuje různé typy úloh:

  • Tabulkové úlohy založené na datech

    • klasifikace
    • regrese
    • prognostika
  • Úlohy počítačového zpracování obrazu, včetně

    • Klasifikace obrázků
    • Rozpoznávání objektů
  • Úlohy zpracování přirozeného jazyka, včetně

    • Klasifikace textu
    • Rozpoznávání entit

Další informace najdete v tématu Typy úkolů. Další informace o nastavení úloh prognózování najdete v tématu Nastavení AutoML pro trénování modelu prognózování časových řad.

Podporované algoritmy

Automatizované strojové učení zkouší různé modely a algoritmy během procesu automatizace a ladění. Jako uživatel nemusíte zadávat algoritmus.

Metoda úlohy určuje seznam algoritmů nebo modelů, které se mají použít. Chcete-li dále upravit iterace s dostupnými modely, které chcete zahrnout nebo vyloučit, použijte allowed_training_algorithms parametry blocked_training_algorithms v training konfiguraci úlohy.

V následující tabulce prozkoumejte podporované algoritmy na úlohu strojového učení.

Klasifikace Regrese Prognózování časové řady
Logistická regrese* Elastic Net* AutoARIMA
Light GBM* Light GBM* Prorok
Zvýšení přechodu* Zvýšení přechodu* Elastic Net
Rozhodovací strom* Rozhodovací strom* Light GBM
K Nejbližší sousedé* K Nejbližší sousedé* K Nearest Neighbors
Lineární SVC* Laso LARS* Rozhodovací strom
Klasifikace vektorů podpory (SVC)* Stochastický gradientní sestup (SGD)* Arimax
Náhodná doménová struktura* Náhodná doménová struktura Laso LARS
Extrémně randomizované stromy* Extrémně randomizované stromy* Extrémně randomizované stromy*
Xgboost* Xgboost* Náhodná doménová struktura
Naive Bayes* Xgboost TCNForecaster
Stochastický gradientní sestup (SGD)* Stochastický gradientní sestup (SGD) Zvýšení přechodu
ExponentialSmoothing
Sezónnínaive
Průměr
Naivní
Sezónní průměr

S jinými algoritmy:

Například poznámkové bloky jednotlivých typů úloh najdete v tématu automl-standalone-jobs.

Primární metrika

Parametr primary_metric určuje metriku, která se má použít během trénování modelu pro optimalizaci. Typ úkolu, který zvolíte, určuje metriky, které můžete vybrat.

Výběr primární metriky pro automatizované strojové učení pro optimalizaci závisí na mnoha faktorech. Doporučujeme, abyste zvolili metriku, která nejlépe reprezentuje vaše obchodní potřeby. Pak zvažte, jestli je metrika vhodná pro váš profil datové sady, včetně velikosti dat, rozsahu a distribuce tříd. Následující části shrnují doporučené primární metriky na základě typu úlohy a obchodního scénáře.

Další informace o konkrétních definicích těchto metrik najdete v tématu Vyhodnocení výsledků experimentů automatizovaného strojového učení.

Metriky pro scénáře klasifikace s více třídami

Tyto metriky platí pro všechny scénáře klasifikace, včetně tabulkových dat, obrázků nebo počítačového zpracování obrazu a textu pro zpracování přirozeného jazyka (NLP-Text).

Metriky závislé na prahových hodnotách, jako accuracyje například , recall_score_weightednorm_macro_recalla precision_score_weighted nemusí se optimalizovat ani pro datové sady, které jsou malé, mají nerovnoměrnou distribuci velkých tříd (nevyváženost tříd) nebo pokud je očekávaná hodnota metriky velmi blízko 0,0 nebo 1,0. V takových případech AUC_weighted může být lepší volbou pro primární metriku. Po dokončení automatizovaného strojového učení můžete zvolit vítězný model na základě metriky, která je nejvhodnější pro vaše obchodní potřeby.

Metrika Příklady případů použití
accuracy Klasifikace obrázků, analýza mínění, predikce četnosti změn
AUC_weighted Detekce podvodů, klasifikace obrázků, detekce anomálií / detekce spamu
average_precision_score_weighted Analýza postoje
norm_macro_recall Předpověď četnosti změn
precision_score_weighted

Metriky pro scénáře klasifikace s více popisky

U více popisků klasifikace textu je aktuálně podporovaná pouze primární metrika.

U více popisků klasifikace obrázků jsou v výčtu ClassificationMultilabelPrimaryMetrics definované primární metriky.

Metriky pro scénáře rozpoznávání pojmenovaných entit NLP

U textu NLP s názvem Entity Recognition (NER) je aktuálně "Přesnost" jedinou podporovanou primární metrikou.

Metriky pro scénáře regrese

r2_scorenormalized_root_mean_squared_error a normalized_mean_absolute_errorsnaží se minimalizovat chyby predikce. r2_score a normalized_root_mean_squared_error zároveň minimalizují průměrné kvadratické chyby, zatímco normalized_mean_absolute_error minimalizují průměrnou absolutní hodnotu chyb. Absolutní hodnota zpracovává chyby ve všech velikostech podobně a čtvercové chyby mají mnohem větší trest za chyby s většími absolutními hodnotami. V závislosti na tom, jestli by větší chyby měly být potrestány více nebo ne, můžete zvolit optimalizaci kvadratické chyby nebo absolutní chyby.

Hlavní rozdíl mezi r2_score a normalized_root_mean_squared_error je způsob, jakým jsou normalizovány a jejich významy. normalized_root_mean_squared_error je odmocněná střední kvadratická chyba normalizována podle rozsahu a lze ji interpretovat jako průměrnou velikost chyby pro předpověď. r2_score je střední kvadratická chyba normalizována odhadem odchylky dat. Jedná se o poměr variant, který model dokáže zachytit.

Poznámka:

r2_score a normalized_root_mean_squared_error také se chovají podobně jako primární metriky. Pokud se použije pevná ověřovací sada, tyto dvě metriky optimalizují stejný cíl, střední kvadratická chyba a optimalizují se stejným modelem. Pokud je k dispozici pouze trénovací sada a použije se křížové ověření, bude se mírně lišit, protože normalizátor normalized_root_mean_squared_error pro je pevně nastaven jako rozsah trénovací sady, ale normalizátor pro r2_score každé záhyby se bude lišit, protože se jedná o odchylku pro každou složenou záhybu.

Pokud je pořadí místo přesné hodnoty zajímavé, spearman_correlation může být lepší volbou. Měří korelaci pořadí mezi skutečnými hodnotami a předpověďmi.

Automatizované strojové učení v současné době nepodporuje žádné primární metriky, které měří relativní rozdíl mezi predikcemi a pozorováními. Metriky r2_scorea normalized_mean_absolute_errornormalized_root_mean_squared_error všechny míry absolutního rozdílu. Pokud se například předpověď liší od pozorování o 10 jednotek, tyto metriky počítají stejnou hodnotu, pokud je pozorování 20 jednotek nebo 20 000 jednotek. Naproti tomu procentuální rozdíl, což je relativní míra, poskytuje chyby 50 % a 0,05 % v uvedeném pořadí. Pokud chcete optimalizovat relativní rozdíl, můžete spustit automatizované strojové učení s podporovanou primární metrikou a pak vybrat model s nejlepším mean_absolute_percentage_error nebo root_mean_squared_log_error. Tyto metriky nejsou definovány, pokud jsou jakékoli hodnoty pozorování nulové, takže nemusí být vždy dobrou volbou.

Metrika Příklady případů použití
spearman_correlation
normalized_root_mean_squared_error Predikce ceny (house/product/tip), predikce skóre recenze
r2_score Zpoždění letecké společnosti, odhad platu, doba řešení chyb
normalized_mean_absolute_error

Metriky pro scénáře prognózování časových řad

Doporučení se podobají doporučením pro regresní scénáře.

Metrika Příklady případů použití
normalized_root_mean_squared_error Predikce cen (prognózování), optimalizace zásob, prognóza poptávky
r2_score Predikce cen (prognózování), optimalizace zásob, prognóza poptávky
normalized_mean_absolute_error

Metriky pro scénáře detekce objektů obrázků

Pro rozpoznávání objektů obrázků jsou v výčtu ObjectDetectionPrimaryMetrics definovány primární metriky.

Metriky pro scénáře segmentace instance image

V případě scénářů segmentace instancí imagí jsou v výčtu InstanceSegmentationPrimaryMetrics definované primární metriky.

Featurizace dat

V každém experimentu automatizovaného strojového učení se vaše data automaticky transformují na čísla a vektory čísel. Data se také škálují a normalizují, aby pomohly algoritmům citlivým na funkce, které jsou na různých škálách. Tyto transformace dat se nazývají featurizace.

Poznámka:

Automatizované kroky featurizace strojového učení, jako je normalizace funkcí, zpracování chybějících dat a převod textu na číselnou hodnotu, se stanou součástí základního modelu. Při použití modelu pro předpovědi se na vstupní data automaticky použijí stejné kroky featurizace použité během trénování.

Když konfigurujete automatizované úlohy strojového učení, můžete nastavení povolit nebo zakázat featurization .

Následující tabulka uvádí přijatá nastavení pro featurizaci.

Konfigurace featurizace Popis
"mode": 'auto' Označuje, že v rámci předběžného zpracování se kroky ochrany dat a featurizace provádějí automaticky. Tato hodnota je výchozím nastavením.
"mode": 'off' Označuje, že krok featurizace by neměl být proveden automaticky.
"mode": 'custom' Označuje, že se má použít přizpůsobený krok featurizace.

Následující kód ukazuje, jak se dá v tomto případě poskytnout vlastní featurizace pro regresní úlohu.

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"},
)

Kritéria ukončení

Ve funkci můžete definovat set_limits() několik možností, které experiment ukončí před dokončením úlohy.

Kritéria description
Žádná kritéria Pokud nedefinujete žádné výstupní parametry, experiment pokračuje, dokud se neprovedou žádné další pokroky v primární metrice.
timeout Definuje, jak dlouho má experiment v minutách běžet. Pokud není zadaný, celkový časový limit výchozí úlohy je šest dnů (8 640 minut). Pokud chcete zadat časový limit menší než nebo rovnou 1 hodině (60 minut), ujistěte se, že velikost datové sady není větší než 10 000 000 (sloupec s časy řádků) nebo chybové výsledky.

Tento časový limit zahrnuje spuštění nastavení, featurizace a trénování, ale nezahrnuje spuštění pro přeskakování a vysvětlení modelu na konci procesu, protože tyto akce musí proběhnout po dokončení všech pokusů (dětských úloh).
trial_timeout_minutes Maximální doba v minutách, po kterou může každá zkušební verze (podřízená úloha) běžet před ukončením. Pokud není zadáno, použije se hodnota 1 měsíc nebo 43200 minut.
enable_early_termination Jestli se má úloha ukončit, pokud se skóre v krátkodobém horizontu nezlepšuje.
max_trials Maximální počet pokusů/spuštění každého z nich s jinou kombinací algoritmu a hyper-parametrů, které se mají vyzkoušet během úlohy. Pokud není zadáno, výchozí hodnota je 1 000 pokusů. Pokud použijete enable_early_termination, počet použitých pokusů může být menší.
max_concurrent_trials Představuje maximální počet pokusů (podřízených úloh), které by se spouštěly paralelně. Je vhodné toto číslo shodovat s počtem uzlů, které cluster používá.

Spuštění experimentu

Odešlete experiment, aby se spustil a vygeneroval model.

Poznámka:

Pokud spustíte experiment se stejným nastavením konfigurace a primární metrikou vícekrát, může se v každém experimentu zobrazit konečné skóre metrik a vygenerované modely. Algoritmy, které automatizované strojové učení využívají, mají vlastní náhodnost, která může způsobit mírné variace výstupu modelů experimentem a konečné skóre metrik doporučeného modelu, jako je přesnost. Můžete také zobrazit výsledky se stejným názvem modelu, ale používají se různé hyperparametry.

Upozorňující

Pokud jste v pracovním prostoru nastavili pravidla v bráně firewall nebo skupině zabezpečení sítě, ověřte, že jsou požadovaná oprávnění udělena příchozím a odchozím síťovým přenosům podle definice v části Konfigurace příchozího a odchozího síťového provozu.

MLClient Po vytvoření v požadavcích můžete v pracovním prostoru spustit následující příkaz.


# 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

Více podřízených spuštění v clusterech

Spuštění podřízeného experimentu automatizovaného strojového učení je možné provést v clusteru, na kterém už běží jiný experiment. Načasování ale závisí na tom, kolik uzlů má cluster a jestli jsou tyto uzly k dispozici ke spuštění jiného experimentu.

Každý uzel v clusteru funguje jako jednotlivý virtuální počítač, který dokáže provést jeden trénovací běh. U automatizovaného strojového učení to znamená podřízené spuštění. Pokud jsou všechny uzly zaneprázdněné, zařadí se do fronty nový experiment. Pokud existují bezplatné uzly, nový experiment spouští podřízená spuštění paralelně v dostupných uzlech nebo virtuálních počítačích.

Pokud chcete pomoct se správou podřízených spuštění a jejich provedení, doporučujeme vytvořit vyhrazený cluster na experiment a shodovat počet max_concurrent_iterations experimentů s počtem uzlů v clusteru. Tímto způsobem použijete všechny uzly clusteru současně s počtem souběžných podřízených spuštění a iterací, které chcete.

Nakonfigurujte max_concurrent_iterations v limits konfiguraci. Pokud není nakonfigurovaná, je ve výchozím nastavení povolená pouze jedna souběžná podřízená spuštění nebo iterace na experiment. U výpočetní instance je možné nastavit stejnou max_concurrent_trials hodnotu jako počet jader na virtuálním počítači výpočetní instance.

Prozkoumání modelů a metrik

Automatizované strojové učení nabízí možnosti, jak monitorovat a vyhodnocovat výsledky trénování.

  • Definice a příklady výkonnostních grafů a metrik poskytovaných pro každé spuštění najdete v tématu Vyhodnocení výsledků experimentů automatizovaného strojového učení.

  • Pokud chcete získat souhrn featurizace a pochopit, jaké funkce byly přidány do konkrétního modelu, podívejte se na transparentnost featurizace.

V uživatelském rozhraní Azure Machine Learning na stránce modelu můžete také zobrazit hyperparametry použité při trénování konkrétního modelu a také zobrazit a přizpůsobit použitý trénovací kód interního modelu.

Registrace a nasazení modelů

Jakmile model otestujete a potvrdíte, že ho chcete použít v produkčním prostředí, můžete ho zaregistrovat pro pozdější použití.

Tip

U registrovaných modelů můžete použít nasazení jedním kliknutím pomocí studio Azure Machine Learning. Viz Nasazení modelu.

Použití AutoML v kanálech

Pokud chcete automatizované strojové učení používat v pracovních postupech operací strojového učení, můžete do kanálů služby Azure Machine Learning přidat kroky úlohy AutoML. Tento přístup umožňuje automatizovat celý pracovní postup propojením skriptů pro přípravu dat do automatizovaného strojového učení. Pak zaregistrujte a ověřte výsledný nejlepší model.

Tento kód je ukázkový kanál s komponentou klasifikace automatizovaného strojového učení a komponentou příkazu, která zobrazuje výsledný výstup. Kód odkazuje na vstupy (trénovací a ověřovací data) a výstupy (nejlepší model) v různých krocích.

# 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

Další příklady týkající se zahrnutí automatizovaného strojového učení do kanálů najdete v úložišti příkladů.

Použití AutoML ve velkém měřítku: distribuované trénování

Automatizované strojové učení podporuje distribuované trénování pro omezenou sadu modelů pro velké datové scénáře:

Distribuovaný algoritmus Podporované úkoly Limit velikosti dat (přibližný)
LightGBM Klasifikace, regrese 1 TB
TCNForecaster Prognostika 200 GB

Distribuované trénovací algoritmy automaticky rozdělují a distribuují vaše data napříč několika výpočetními uzly pro trénování modelu.

Poznámka:

V distribuovaném trénovacím režimu se v současné době nepodporují křížové ověřování, modely souborů, podpora ONNX a generování kódu. Automatické strojové učení může také provádět volby, jako je omezení dostupných featurizátorů a dat dílčího vzorkování používaných k ověření, vysvětlitelnosti a vyhodnocení modelu.

Distribuované trénování pro klasifikaci a regresi

Chcete-li použít distribuované trénování pro klasifikaci nebo regresi, nastavte training_mode a max_nodes vlastnosti objektu úlohy.

Vlastnost Popis
training_mode Označuje režim trénování: distributed nebo non_distributed. Výchozí hodnota non_distributedje .
max_nodes Početuzlůch Toto nastavení musí být větší nebo rovno 4.

Následující ukázka kódu ukazuje příklad těchto nastavení pro úlohu klasifikace:

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
)

Poznámka:

Distribuované trénování pro úlohy klasifikace a regrese v současné době nepodporuje více souběžných pokusů. Zkušební verze modelu se spouštějí postupně s každou zkušební verzí pomocí max_nodes uzlů. Nastavení limitu max_concurrent_trials je aktuálně ignorováno.

Distribuované trénování pro prognózování

Informace o tom, jak distribuované trénování funguje pro úlohy prognózování, najdete v tématu prognózování ve velkém měřítku. Pokud chcete použít distribuované trénování pro prognózování, musíte nastavit training_modeenable_dnn_trainingmax_nodes, a volitelně max_concurrent_trials vlastnosti objektu úlohy.

Vlastnost Popis
training_mode Označuje režim trénování; distributed nebo non_distributed. Výchozí hodnota non_distributedje .
enable_dnn_training Označení příznakem pro povolení modelů hluboké neurální sítě
max_concurrent_trials Tato hodnota je maximální počet zkušebních modelů, které se mají trénovat paralelně. Výchozí hodnota je 1.
max_nodes Celkový počet uzlů, které se mají použít pro trénování. Toto nastavení musí být větší nebo rovno 2. U úloh prognózování se každý zkušební model vytrénuje pomocí uzlů $\text{max}\left(2; \text{floor}( \text{max_nodes} / \text{max_concurrent_trials}) \right)$.

Následující ukázka kódu ukazuje příklad těchto nastavení pro úlohu prognózování:

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
)

Ukázky úplného konfiguračního kódu najdete v předchozích částech o konfiguraci a odeslání úlohy.