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:
- Maak een notebook en koppel deze aan een cluster met Databricks Runtime ML.
- Bepaal welke tabel u wilt gebruiken vanuit uw bestaande gegevensbron of upload een gegevensbestand naar DBFS en maak een tabel.
- Als u een AutoML-uitvoering wilt starten, geeft u de tabelnaam door aan de juiste API-specificatie: classificatie, regressie of prognose.
- 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.
- 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 formatdbfs:/<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 formatdbfs:/<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
- Wijzig het script om de
run_id
MLflow-uitvoering op te nemen waarin uw model is vastgelegd. - Het model opnieuw registreren bij het MLflow-modelregister.
- 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
In het volgende notebook ziet u hoe u regressie kunt uitvoeren met AutoML.
Voorbeeldnotebook voor AutoML-regressie
In het volgende notebook ziet u hoe u prognoses kunt uitvoeren met AutoML.
Voorbeeldnotitieblok voor AutoML-prognose
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
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor