Share via


ML-modellen trainen met Azure Databricks AutoML Python API

In dit artikel wordt beschreven hoe u een model traint met Azure Databricks AutoML met behulp van de API. Meer informatie over Wat is AutoML? De Python-API biedt functies voor het starten van classificatie, regressie en het voorspellen van AutoML-uitvoeringen. Elke functieoproep traint een set modellen en genereert een proefnotitieblok voor elk model.

In de volgende stappen wordt over het algemeen beschreven hoe u een AutoML-experiment instelt met behulp van de API:

  1. Maak een notebook en koppel deze aan een cluster met Databricks Runtime ML.
  2. Bepaal welke tabel u wilt gebruiken vanuit uw bestaande gegevensbron of upload een gegevensbestand naar DBFS en maak een tabel.
  3. Als u een AutoML-uitvoering wilt starten, geeft u de tabelnaam door aan de juiste API-specificatie: classificatie, regressie of prognose.
  4. Wanneer de AutoML-uitvoering wordt gestart, wordt er een MLflow-experiment-URL weergegeven in de console. Gebruik deze URL om de voortgang van de uitvoering te controleren. Vernieuw het MLflow-experiment om de proefversies te zien wanneer deze zijn voltooid.
  5. Nadat de AutoML-uitvoering is voltooid:
    • Gebruik de koppelingen in het uitvoeroverzicht om naar het MLflow-experiment te gaan of naar het notebook dat de beste resultaten heeft gegenereerd.
    • Gebruik de koppeling naar het notebook voor gegevensverkenning om inzicht te krijgen in de gegevens die worden doorgegeven aan AutoML. U kunt dit notebook ook koppelen aan hetzelfde cluster en het notebook opnieuw uitvoeren om de resultaten te reproduceren of aanvullende gegevensanalyse uit te voeren.
    • Gebruik het samenvattingsobject dat is geretourneerd vanuit de AutoML-aanroep om meer informatie over de proefversies te verkennen of om een model te laden dat is getraind door een bepaalde proefversie. Meer informatie over het AutoMLSummary-object.
    • Kloon een gegenereerd notebook uit de proefversies en voer het notebook opnieuw uit door het aan hetzelfde cluster te koppelen om de resultaten te reproduceren. U kunt ook de benodigde wijzigingen aanbrengen en opnieuw uitvoeren om extra modellen te trainen en ze in hetzelfde experiment te registreren.

Vereisten

Zie Vereisten voor AutoML-experimenten.

Classificatiespecificatie

In het volgende codevoorbeeld wordt een AutoML-uitvoering geconfigureerd voor het trainen van een classificatiemodel. Zie classificatie- en regressieparameters voor aanvullende parameters om uw AutoML-uitvoering verder aan te passen.

Notitie

De max_trials parameter is afgeschaft in Databricks Runtime 10.4 ML en wordt niet ondersteund in Databricks Runtime 11.0 ML en hoger. Gebruik timeout_minutes dit om de duur van een AutoML-uitvoering te bepalen.

databricks.automl.classify(
  dataset: Union[pyspark.sql.DataFrame, pandas.DataFrame, pyspark.pandas.DataFrame, str],
  *,
  target_col: str,
  data_dir: Optional[str] = None,
  exclude_cols: Optional[List[str]] = None,                      # <DBR> 10.3 ML and above
  exclude_frameworks: Optional[List[str]] = None,                   # <DBR> 10.3 ML and above
  experiment_dir: Optional[str] = None,                             # <DBR> 10.4 LTS ML and above
  experiment_name: Optional[str] = None,                            # <DBR> 12.1 ML and above
  feature_store_lookups: Optional[List[Dict]] = None,               # <DBR> 11.3 LTS ML and above
  imputers: Optional[Dict[str, Union[str, Dict[str, Any]]]] = None, # <DBR> 10.4 LTS ML and above
  max_trials: Optional[int] = None,                                 # <DBR> 10.5 ML and below
  pos_label: Optional[Union[int, bool, str] = None,                 # <DBR> 11.1 ML and above
  primary_metric: str = "f1",
  time_col: Optional[str] = None,
  timeout_minutes: Optional[int] = None,
) -> AutoMLSummary

Regressiespecificatie

In het volgende codevoorbeeld wordt een AutoML-uitvoering geconfigureerd voor het trainen van een regressiemodel. Zie classificatie- en regressieparameters voor aanvullende parameters om uw AutoML-uitvoering verder aan te passen.

Notitie

De max_trials parameter is afgeschaft in Databricks Runtime 10.4 ML en wordt niet ondersteund in Databricks Runtime 11.0 ML en hoger. Gebruik timeout_minutes dit om de duur van een AutoML-uitvoering te bepalen.

databricks.automl.regress(
  dataset: Union[pyspark.sql.DataFrame, pandas.DataFrame, pyspark.pandas.DataFrame, str],
  *,
  target_col: str,
  data_dir: Optional[str] = None,
  exclude_cols: Optional[List[str]] = None,                      # <DBR> 10.3 ML and above
  exclude_frameworks: Optional[List[str]] = None,                   # <DBR> 10.3 ML and above
  experiment_dir: Optional[str] = None,                             # <DBR> 10.4 LTS ML and above
  experiment_name: Optional[str] = None,                            # <DBR> 12.1 ML and above
  feature_store_lookups: Optional[List[Dict]] = None,               # <DBR> 11.3 LTS ML and above
  imputers: Optional[Dict[str, Union[str, Dict[str, Any]]]] = None, # <DBR> 10.4 LTS ML and above
  max_trials: Optional[int] = None,                                 # <DBR> 10.5 ML and below
  primary_metric: str = "r2",
  time_col: Optional[str] = None,
  timeout_minutes: Optional[int] = None,
) -> AutoMLSummary

Prognosespecificatie

In het volgende codevoorbeeld wordt een AutoML-uitvoering geconfigureerd voor het trainen van een prognosemodel. Zie Prognoseparameters voor meer informatie over parameters voor uw AutoML-uitvoering. Als u Auto-ARIMA wilt gebruiken, moet de tijdreeks een normale frequentie hebben (dat wil gezegd, het interval tussen twee punten moet hetzelfde zijn gedurende de tijdreeks). De frequentie moet overeenkomen met de frequentie-eenheid die is opgegeven in de API-aanroep. AutoML verwerkt ontbrekende tijdstappen door deze waarden in te vullen met de vorige waarde.

databricks.automl.forecast(
  dataset: Union[pyspark.sql.DataFrame, pandas.DataFrame, pyspark.pandas.DataFrame, str],
  *,
  target_col: str,
  time_col: str,
  country_code: str = "US",                                         # <DBR> 12.0 ML and above
  data_dir: Optional[str] = None,
  exclude_frameworks: Optional[List[str]] = None,
  experiment_dir: Optional[str] = None,
  experiment_name: Optional[str] = None,                            # <DBR> 12.1 ML and above
  feature_store_lookups: Optional[List[Dict]] = None,               # <DBR> 12.2 LTS ML and above
  frequency: str = "D",
  horizon: int = 1,
  identity_col: Optional[Union[str, List[str]]] = None,
  output_database: Optional[str] = None,                            # <DBR> 10.5 ML and above
  primary_metric: str = "smape",
  timeout_minutes: Optional[int] = None,
) -> AutoMLSummary

Classificatie- en regressieparameters

Notitie

Voor alleen classificatie- en regressieproblemen kunt u het volgende doen:

  • Geef op welke kolommen moeten worden opgenomen in de training.
  • Selecteer aangepaste imputatiemethoden.
Veldnaam Type Description
gegevensset str pandas. DataFrame pyspark. DataFrame pyspark.sql.DataFrame Naam van invoertabel of DataFrame met trainingsfuncties en -doel.

De tabelnaam kan de notatie '.' hebben. of "." voor niet-Unity Catalog-tabellen
target_col Str Kolomnaam voor het doellabel.
data_dir str of format
dbfs:/<folder-name>
(Optioneel) DBFS-pad dat wordt gebruikt voor het opslaan van de trainingsgegevensset. Dit pad is zichtbaar voor zowel stuurprogramma- als werkknooppunten.

Databricks raadt aan dit veld leeg te laten, zodat AutoML de trainingsgegevensset kan opslaan als een MLflow-artefact.

Als er een aangepast pad is opgegeven, neemt de gegevensset de toegangsmachtigingen van het AutoML-experiment niet over.
exclude_cols List[str] (Optioneel) Lijst met kolommen die moeten worden genegeerd tijdens AutoML-berekeningen.

Standaard: []
exclude_ frameworks List[str] (Optioneel) Lijst met algoritmeframeworks waarmee AutoML geen rekening moet houden bij het ontwikkelen van modellen. Mogelijke waarden: lege lijst of een of meer van 'sklearn', 'lightgbm', 'xgboost'.

Standaard: [] (alle frameworks worden overwogen)
experiment_dir Str (Optioneel) Pad naar de map in de werkruimte om de gegenereerde notebooks en experimenten op te slaan.

Standaardwaarde: /Users/<username>/databricks_automl/
experiment_name Str (Optioneel) Naam voor het MLflow-experiment dat door AutoML wordt gemaakt.

Standaard: De naam wordt automatisch gegenereerd.
feature_store_ zoekopdrachten List[Dict] (Optioneel) Lijst met woordenlijsten die functies uit Feature Store vertegenwoordigen voor gegevensvergroting. Geldige sleutels in elke woordenlijst zijn:

* table_name (str): Vereist. Naam van de functietabel.
* lookup_key (lijst of str): Vereist. Kolomnamen die als sleutel moeten worden gebruikt bij het samenvoegen van de functietabel met de gegevens die zijn doorgegeven in de
dataset Param. De volgorde van de kolomnamen moet overeenkomen met de volgorde van de primaire sleutels van de functietabel.
* timestamp_lookup_key (str): Vereist als de opgegeven tabel een tijdreeksfunctietabel is. De kolomnaam die moet worden gebruikt bij het uitvoeren van een zoekactie naar een bepaald tijdstip in de functietabel met de gegevens die zijn doorgegeven in de dataset param.

Standaard: []
imputers Dict[str, Union[str, Dict[str, Any]] (Optioneel) Woordenlijst waarbij elke sleutel een kolomnaam is en elke waarde een tekenreeks of woordenlijst is die de imputatiestrategie beschrijft. Als deze is opgegeven als een tekenreeks, moet de waarde een van 'gemiddelde', 'mediaan' of 'most_frequent' zijn. Als u een bekende waarde wilt toepassen, geeft u de waarde op als een woordenlijst
{"strategy": "constant", "fill_value": <desired value>}. U kunt ook tekenreeksopties opgeven als woordenlijsten, bijvoorbeeld {"strategy": "mean"}.

Als er geen imputatiestrategie is opgegeven voor een kolom, selecteert AutoML een standaardstrategie op basis van het kolomtype en de inhoud. Als u een niet-standaardimplicatiemethode opgeeft, voert AutoML geen semantische typedetectie uit.

Standaardwaarde: {}
max_trials int (Optioneel) Maximum aantal tests dat moet worden uitgevoerd.

Deze parameter is beschikbaar in Databricks Runtime 10.5 ML en lager, maar wordt afgeschaft vanaf Databricks Runtime 10.3 ML. In Databricks Runtime 11.0 ML en hoger wordt deze parameter niet ondersteund.

Standaardwaarde: 20

Als timeout_minutes=Geen, wordt met AutoML het maximum aantal experimenten uitgevoerd.
pos_label Union[int, bool, str] (alleen classificatie) De positieve klasse. Dit is handig voor het berekenen van metrische gegevens, zoals precisie en relevante overeenkomsten. Mag alleen worden opgegeven voor binaire classificatieproblemen.
primary_metric Str Metrische gegevens die worden gebruikt om modelprestaties te evalueren en rangschikken.

Ondersteunde metrische gegevens voor regressie: "r2" (standaard), "mae", "rmse", "mse"

Ondersteunde metrische gegevens voor classificatie: 'f1' (standaard), 'log_loss', 'precisie', 'nauwkeurigheid', 'roc_auc'
time_col Str Beschikbaar in Databricks Runtime 10.1 ML en hoger.

(Optioneel) Kolomnaam voor een tijdkolom.

Indien opgegeven, probeert AutoML de gegevensset op te splitsen in trainings-, validatie- en testsets chronologisch, met behulp van de vroegste punten als trainingsgegevens en de laatste punten als een testset.

Geaccepteerde kolomtypen zijn tijdstempel en geheel getal. Met Databricks Runtime 10.2 ML en hoger worden tekenreekskolommen ook ondersteund. Als het kolomtype tekenreeks is, probeert AutoML het te converteren naar een tijdstempel met behulp van semantische detectie. Als de conversie mislukt, mislukt de AutoML-uitvoering.
timeout_minutes int (Optioneel) Maximale tijd om te wachten totdat de AutoML-proefversies zijn voltooid. Met langere time-outs kan AutoML meer proefversies uitvoeren en een model identificeren met een betere nauwkeurigheid.

Standaard: 120 minuten

Minimumwaarde: 5 minuten

Er wordt een fout gerapporteerd als de time-out te kort is om ten minste één proefversie te voltooien.

Parameters voor prognose

Veldnaam Type Description
gegevensset Str

pandas. DataFrame pyspark. DataFrame pyspark.sql.DataFrame
Naam van invoertabel of DataFrame met trainingsfuncties en -doel.

De tabelnaam kan de notatie '.' hebben. of "." voor niet-Unity Catalog-tabellen
target_col Str Kolomnaam voor het doellabel.
time_col Str Naam van de tijdkolom voor prognose.
frequency Str Frequentie van de tijdreeks voor prognoses. Dit is de periode waarmee gebeurtenissen naar verwachting plaatsvinden. De standaardinstelling is 'D' of dagelijkse gegevens. Zorg ervoor dat u de instelling wijzigt als uw gegevens een andere frequentie hebben.

Mogelijke waarden:

"W" (weken)

"D" / "dagen" / "dag"

"hours" / "hour" / "hr" / "h"

"m" / "minuut" / "min" / "minuten" / "T"

"S" / "seconds" / "sec" / "second"

De volgende zijn alleen beschikbaar met Databricks Runtime 12.0 ML en hoger:

"M" / "maand" / "maanden"

"Q" / "kwartaal" / "kwartalen"

"Y" / "year" / "years"

Standaard: "D"
Horizon int Aantal perioden in de toekomst waarvoor prognoses moeten worden geretourneerd. De eenheden zijn de tijdreeksfrequentie. Standaard: 1
data_dir str of format
dbfs:/<folder-name>
(Optioneel) DBFS-pad dat wordt gebruikt voor het opslaan van de trainingsgegevensset. Dit pad is zichtbaar voor zowel stuurprogramma- als werkknooppunten.

Databricks raadt aan dit veld leeg te laten, zodat AutoML de trainingsgegevensset kan opslaan als een MLflow-artefact.

Als er een aangepast pad is opgegeven, neemt de gegevensset de toegangsmachtigingen van het AutoML-experiment niet over.
exclude_ frameworks List[str] (Optioneel) Lijst met algoritmeframeworks waarmee AutoML geen rekening moet houden bij het ontwikkelen van modellen. Mogelijke waarden: lege lijst of een of meer 'profeet', 'arima'. Standaard: [] (alle frameworks worden overwogen)
experiment_dir Str (Optioneel) Pad naar de map in de werkruimte om de gegenereerde notebooks en experimenten op te slaan.

Standaardwaarde: /Users/<username>/databricks_automl/
experiment_name Str (Optioneel) Naam voor het MLflow-experiment dat door AutoML wordt gemaakt.

Standaard: De naam wordt automatisch gegenereerd.
feature_store_ zoekopdrachten List[Dict] (Optioneel) Lijst met woordenlijsten die functies uit Feature Store vertegenwoordigen voor gegevensvergroting. Geldige sleutels in elke woordenlijst zijn:

* table_name (str): Vereist. Naam van de functietabel.
* lookup_key (lijst of str): Vereist. Kolomnamen die als sleutel moeten worden gebruikt bij het samenvoegen van de functietabel met de gegevens die zijn doorgegeven in de
dataset Param. De volgorde van de kolomnamen moet overeenkomen met de volgorde van de primaire sleutels van de functietabel.
* timestamp_lookup_key (str): Vereist als de opgegeven tabel een tijdreeksfunctietabel is. De kolomnaam die moet worden gebruikt bij het uitvoeren van een zoekactie naar een bepaald tijdstip in de functietabel met de gegevens die zijn doorgegeven in de dataset param.

Standaard: []
identity_col Union[str, list] (Optioneel) Kolom(en) die de tijdreeks voor prognoses van meerdere reeksen identificeren. AutoML groepeert op deze kolom(en) en de tijdkolom voor prognoses.
output_database Str (Optioneel) Indien opgegeven, worden voorspellingen van het beste model opgeslagen in een nieuwe tabel in de opgegeven database.

Standaard: Voorspellingen worden niet opgeslagen.
primary_metric Str Metrische gegevens die worden gebruikt om modelprestaties te evalueren en rangschikken. Ondersteunde metrische gegevens: 'smape'(standaard) 'mse', 'rmse', 'mae' of 'mdape'.
timeout_minutes int (Optioneel) Maximale tijd om te wachten totdat de AutoML-proefversies zijn voltooid. Met langere time-outs kan AutoML meer proefversies uitvoeren en een model identificeren met een betere nauwkeurigheid.

Standaard: 120 minuten

Minimumwaarde: 5 minuten

Er wordt een fout gerapporteerd als de time-out te kort is om ten minste één proefversie te voltooien.
country_code Str Beschikbaar in Databricks Runtime 12.0 ML en hoger. Alleen ondersteund door het voorspellende model van prophet.

(Optioneel) Landcode van twee letters die aangeeft welke feestdagen het prognosemodel moet gebruiken. Als u feestdagen wilt negeren, stelt u deze parameter in op een lege tekenreeks (""). Ondersteunde landen.

Standaard: VS (Verenigde Staten feestdagen).

Retourneert

AutoMLSummary

Samenvattingsobject voor een AutoML-uitvoering die de metrische gegevens, parameters en andere details voor elk van de proefversies beschrijft. U gebruikt dit object ook om het model te laden dat is getraind door een specifieke proefversie.

Eigenschap Type Description
experiment mlflow.entities.Experiment Het MLflow-experiment dat wordt gebruikt om de experimenten te registreren.
Proeven List[TrialInfo] Een lijst met informatie over alle uitgevoerde proefversies.
best_trial TrialInfo Informatie over de proefversie die heeft geresulteerd in de beste gewogen score voor de primaire metrische waarde.
metric_distribution Str De verdeling van gewogen scores voor de primaire meetwaarde voor alle experimenten.
output_table_name Str Wordt alleen gebruikt met prognoses en alleen als output_database is opgegeven. Naam van de tabel in output_database met de voorspellingen van het model.

TrialInfo

Samenvattingsobject voor elke afzonderlijke proefversie.

Eigenschap Type Description
notebook_path Optioneel[str] Het pad naar het gegenereerde notebook voor deze proefversie in de werkruimte. Voor classificatie en regressie is deze waarde alleen ingesteld voor de beste proefversie, terwijl alle andere experimenten de waarde hebben ingesteld op None. Voor prognoses is deze waarde aanwezig voor alle proefversies
notebook_url Optioneel[str] De URL van het gegenereerde notebook voor deze proefversie. Voor classificatie en regressie is deze waarde alleen ingesteld voor de beste proefversie, terwijl alle andere experimenten de waarde hebben ingesteld op None. Voor prognoses is deze waarde aanwezig voor alle proefversies
artifact_uri Optioneel[str] De MLflow-artefact-URI voor het gegenereerde notebook.
mlflow_run_id Str De MLflow-uitvoerings-id die is gekoppeld aan deze proefversie.
metrics Dict[str, float] De metrische gegevens die zijn vastgelegd in MLflow voor deze proefversie.
params Dict[str, str] De parameters die zijn vastgelegd in MLflow die zijn gebruikt voor deze proefversie.
model_path Str De MLflow-artefact-URL van het model dat in deze proefversie is getraind.
model_description Str Korte beschrijving van het model en de hyperparameters die worden gebruikt voor het trainen van dit model.
duur Str Trainingsduur in minuten.
preprocessors Str Beschrijving van de preprocessors die worden uitgevoerd voordat het model wordt getraind.
evaluation_metric_score zwevend Score van primaire metrische gegevens, geëvalueerd voor de validatiegegevensset.
Wijze Description
load_model() Laad het model dat in deze proefversie is gegenereerd, geregistreerd als een MLflow-artefact.

Een notebook importeren

Als u een notebook wilt importeren dat is opgeslagen als een MLflow-artefact, gebruikt u de databricks.automl.import_notebook Python-API.

def import_notebook(artifact_uri: str, path: str, overwrite: bool = False) -> ImportNotebookResult:
    """
    Import a trial notebook, saved as an MLflow artifact, into the workspace.

    :param artifact_uri: The URI of the MLflow artifact that contains the trial notebook.
    :param path: The path in the Databricks workspace where the notebook should be imported. This must be an absolute path. The directory will be created if it does not exist.
    :param overwrite: Whether to overwrite the notebook if it already exists. It is `False` by default.

    :return: ImportNotebookResult contains two fields, `path` and `url`, referring to the imported notebook
    """

Een gebruiksvoorbeeld:

summary = databricks.automl.classify(...)
result = databricks.automl.import_notebook(summary.trials[5].artifact_uri, "/Users/you@yourcompany.com/path/to/directory")
print(result.path)
print(result.url)

Een model registreren en implementeren

U kunt uw getrainde AutoML-model registreren en implementeren, net zoals elk geregistreerd model in het MLflow-modelregister, logboek , laden, registreren en implementeren van MLflow-modellen.

Geen module met de naam pandas.core.indexes.numeriek

Bij het leveren van een model dat is gebouwd met Behulp van AutoML met Model Serving, krijgt u mogelijk de volgende fout: No module named 'pandas.core.indexes.numeric.

Dit komt door een incompatibele pandas versie tussen AutoML en het model voor eindpuntomgeving. U kunt deze fout oplossen door het add-pandas-dependency.py script uit te voeren. Het script bewerkt het requirements.txt en conda.yaml voor het geregistreerde model om de juiste pandas afhankelijkheidsversie op te nemen: pandas==1.5.3

  1. Wijzig het script om de run_id MLflow-uitvoering op te nemen waarin uw model is vastgelegd.
  2. Het model opnieuw registreren bij het MLflow-modelregister.
  3. Probeer de nieuwe versie van het MLflow-model te leveren.

Notebook-voorbeelden

Bekijk deze notebooks om aan de slag te gaan met AutoML.

In het volgende notebook ziet u hoe u classificatie kunt uitvoeren met AutoML.

Voorbeeldnotitieblok voor AutoML-classificatie

Notebook downloaden

In het volgende notebook ziet u hoe u regressie kunt uitvoeren met AutoML.

Voorbeeldnotebook voor AutoML-regressie

Notebook downloaden

In het volgende notebook ziet u hoe u prognoses kunt uitvoeren met AutoML.

Voorbeeldnotitieblok voor AutoML-prognose

Notebook downloaden

In het volgende notebook ziet u hoe u een ML-model traint met functietabellen AutoML en Feature Store.

AutoML-experiment met voorbeeldnotitieblok van Feature Store

Notebook downloaden