Träna ML-modeller med Azure Databricks AutoML Python API
Den här artikeln visar hur du tränar en modell med Azure Databricks AutoML med hjälp av API:et. Läs mer om Vad är AutoML?. Python-API:et innehåller funktioner för att starta klassificering, regression och prognostisering av AutoML-körningar. Varje funktionsanrop tränar en uppsättning modeller och genererar en utvärderingsanteckningsbok för varje modell.
Följande steg beskriver vanligtvis hur du konfigurerar ett AutoML-experiment med hjälp av API:et:
- Skapa en notebook-fil och koppla den till ett kluster som kör Databricks Runtime ML.
- Identifiera vilken tabell du vill använda från din befintliga datakälla eller ladda upp en datafil till DBFS och skapa en tabell.
- Om du vill starta en AutoML-körning skickar du tabellnamnet till lämplig API-specifikation: klassificering, regression eller prognostisering.
- När AutoML-körningen börjar visas en URL för MLflow-experiment i konsolen. Använd den här URL:en för att övervaka körningens förlopp. Uppdatera MLflow-experimentet för att se utvärderingsversionerna när de har slutförts.
- När AutoML-körningen är klar:
- Använd länkarna i utdatasammanfattningen för att navigera till MLflow-experimentet eller till anteckningsboken som genererade bästa resultat.
- Använd länken till notebook-filen för datautforskning för att få insikter om de data som skickas till AutoML. Du kan också koppla den här notebook-filen till samma kluster och köra notebook-filen igen för att återskapa resultatet eller utföra ytterligare dataanalys.
- Använd sammanfattningsobjektet som returneras från AutoML-anropet för att utforska mer information om utvärderingsversionerna eller för att läsa in en modell som tränats av en viss utvärderingsversion. Läs mer om AutoMLSummary-objektet.
- Klona alla genererade notebook-filer från utvärderingsversionerna och kör notebook-filen igen genom att koppla den till samma kluster för att återskapa resultatet. Du kan också göra nödvändiga ändringar och köra dem igen för att träna ytterligare modeller och logga dem till samma experiment.
Behov
Se Krav för AutoML-experiment.
Klassificeringsspecifikation
I följande kodexempel konfigureras en AutoML-körning för träning av en klassificeringsmodell. Ytterligare parametrar för att ytterligare anpassa AutoML-körningen finns i Parametrar för klassificering och regression.
Kommentar
Parametern max_trials
är inaktuell i Databricks Runtime 10.4 ML och stöds inte i Databricks Runtime 11.0 ML och senare. Använd timeout_minutes
för att styra varaktigheten för en AutoML-körning.
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
Regressionsspecifikation
I följande kodexempel konfigureras en AutoML-körning för träning av en regressionsmodell. Ytterligare parametrar för att ytterligare anpassa AutoML-körningen finns i Parametrar för klassificering och regression.
Kommentar
Parametern max_trials
är inaktuell i Databricks Runtime 10.4 ML och stöds inte i Databricks Runtime 11.0 ML och senare. Använd timeout_minutes
för att styra varaktigheten för en AutoML-körning.
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
Prognosspecifikation
I följande kodexempel konfigureras en AutoML-körning för träning av en prognosmodell. Mer information om parametrar för autoML-körningen finns i Prognostiseringsparametrar. Om du vill använda Auto-ARIMA måste tidsserierna ha en regelbunden frekvens (det vill: intervallet mellan två punkter måste vara detsamma under hela tidsserien). Frekvensen måste matcha den frekvensenhet som anges i API-anropet. AutoML hanterar saknade tidssteg genom att fylla i dessa värden med föregående värde.
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
Parametrar för klassificering och regression
Kommentar
Endast för klassificerings- och regressionsproblem kan du:
- Ange vilka kolumner som ska inkluderas i träningen.
- Välj anpassade imputationsmetoder.
Fältnamn | Typ | Beskrivning |
---|---|---|
datauppsättning | str pandas. DataFrame pyspark. DataFrame pyspark.sql.DataFrame | Indatatabellnamn eller DataFrame som innehåller träningsfunktioner och mål. Tabellnamnet kan ha formatet ".". eller "." för tabeller som inte är unity-kataloger |
target_col | Str | Kolumnnamn för måletiketten. |
data_dir | str av formatdbfs:/<folder-name> |
(Valfritt) DBFS-sökväg som används för att lagra träningsdatauppsättningen. Den här sökvägen är synlig för både drivrutins- och arbetsnoder. Databricks rekommenderar att du lämnar det här fältet tomt, så att AutoML kan spara träningsdatauppsättningen som en MLflow-artefakt. Om en anpassad sökväg har angetts ärver inte datauppsättningen AutoML-experimentets åtkomstbehörigheter. |
exclude_cols | Lista[str] | (Valfritt) Lista över kolumner som ska ignoreras under AutoML-beräkningar. Standard: [] |
exclude_ ramverk | Lista[str] | (Valfritt) Lista över algoritmramverk som AutoML inte bör tänka på när det utvecklar modeller. Möjliga värden: tom lista eller en eller flera av "sklearn", "lightgbm", "xgboost". Standard: [] (alla ramverk beaktas) |
experiment_dir | Str | (Valfritt) Sökväg till katalogen på arbetsytan för att spara de genererade notebook-filerna och experimenten. Standard: /Users/<username>/databricks_automl/ |
experiment_name | Str | (Valfritt) Namn på MLflow-experimentet som AutoML skapar. Standard: Namnet genereras automatiskt. |
feature_store_ sökningar | Lista[Dict] | (Valfritt) Lista över ordlistor som representerar funktioner från Funktionslager för dataförstoring. Giltiga nycklar i varje ordlista är: * table_name (str): Krävs. Namnet på funktionstabellen. * lookup_key (lista eller str): Krävs. Kolumnnamn som ska användas som nyckel när du ansluter funktionstabellen med data som skickas i dataset Param. Ordningen på kolumnnamnen måste matcha ordningen på de primära nycklarna i funktionstabellen.* timestamp_lookup_key (str): Krävs om den angivna tabellen är en funktionstabell för tidsserier. Kolumnnamnet som ska användas vid sökning till tidpunkt i funktionstabellen med data som skickas i dataset param.Standard: [] |
imputers | Dict[str, Union[str, Dict[str, Any]]] | (Valfritt) Ordlista där varje nyckel är ett kolumnnamn och varje värde är en sträng eller ordlista som beskriver imputationsstrategin. Om värdet anges som en sträng måste det vara "medelvärde", "median" eller "most_frequent". Om du vill imputera med ett känt värde anger du värdet som en ordlista{"strategy": "constant", "fill_value": <desired value>} . Du kan också ange strängalternativ som ordlistor, till exempel {"strategi": "mean"}.Om ingen imputationsstrategi tillhandahålls för en kolumn väljer AutoML en standardstrategi baserat på kolumntyp och innehåll. Om du anger en imputationsmetod som inte är standard utför AutoML inte semantisk typidentifiering. Standard: {} |
max_trials | heltal | (Valfritt) Maximalt antal utvärderingsversioner som ska köras. Den här parametern är tillgänglig i Databricks Runtime 10.5 ML och nedan, men är inaktuell från och med Databricks Runtime 10.3 ML. I Databricks Runtime 11.0 ML och senare stöds inte den här parametern. Standard: 20 Om timeout_minutes=Ingen kör AutoML det maximala antalet utvärderingsversioner. |
pos_label | Union[int, bool, str] | (Endast klassificering) Den positiva klassen. Detta är användbart för att beräkna mått som precision och återkallande. Bör endast anges för problem med binär klassificering. |
primary_metric | Str | Mått som används för att utvärdera och rangordna modellprestanda. Mått som stöds för regression: "r2" (standard), "mae", "rmse", "mse" Mått som stöds för klassificering: "f1" (standard), "log_loss", "precision", "noggrannhet", "roc_auc" |
time_col | Str | Tillgänglig i Databricks Runtime 10.1 ML och senare. (Valfritt) Kolumnnamn för en tidskolumn. Om det tillhandahålls försöker AutoML dela upp datamängden i tränings-, validerings- och testuppsättningar kronologiskt, med hjälp av de tidigaste punkterna som träningsdata och de senaste punkterna som en testuppsättning. Accepterade kolumntyper är tidsstämpel och heltal. Med Databricks Runtime 10.2 ML och senare stöds även strängkolumner. Om kolumntypen är sträng försöker AutoML konvertera den till tidsstämpel med hjälp av semantisk identifiering. Om konverteringen misslyckas misslyckas AutoML-körningen. |
timeout_minutes | heltal | (Valfritt) Maximal tid att vänta tills AutoML-utvärderingsversionerna har slutförts. Med längre tidsgränser kan AutoML köra fler utvärderingsversioner och identifiera en modell med bättre noggrannhet. Standard: 120 minuter Minsta värde: 5 minuter Ett fel rapporteras om tidsgränsen är för kort för att minst en utvärderingsversion ska kunna slutföras. |
Prognosparametrar
Fältnamn | Typ | Beskrivning |
---|---|---|
datauppsättning | Str Pandor. DataFrame pyspark. DataFrame pyspark.sql.DataFrame |
Indatatabellnamn eller DataFrame som innehåller träningsfunktioner och mål. Tabellnamnet kan ha formatet ".". eller "." för tabeller som inte är unity-kataloger |
target_col | Str | Kolumnnamn för måletiketten. |
time_col | Str | Namn på tidskolumnen för prognostisering. |
frequency | Str | Frekvens för tidsserierna för prognostisering. Det här är den period med vilken händelser förväntas inträffa. Standardinställningen är "D" eller dagliga data. Se till att ändra inställningen om dina data har en annan frekvens. Möjliga värden: "W" (veckor) "D" / "days" / "day" "hours" / "hour" / "hr" / "h" "m" / "minute" / "min" / "minutes" / "T" "S" / "seconds" / "sec" / "second" Följande är endast tillgängliga med Databricks Runtime 12.0 ML och senare: "M" / "month" / "months" "Q" / "kvartal" / "kvartal" "Y" / "år" / "år" Standard: "D" |
Horisonten | heltal | Antal perioder in i framtiden för vilka prognoser ska returneras. Enheterna är tidsseriefrekvensen. Standard: 1 |
data_dir | str av formatdbfs:/<folder-name> |
(Valfritt) DBFS-sökväg som används för att lagra träningsdatauppsättningen. Den här sökvägen är synlig för både drivrutins- och arbetsnoder. Databricks rekommenderar att du lämnar det här fältet tomt, så att AutoML kan spara träningsdatauppsättningen som en MLflow-artefakt. Om en anpassad sökväg har angetts ärver inte datauppsättningen AutoML-experimentets åtkomstbehörigheter. |
exclude_ ramverk | Lista[str] | (Valfritt) Lista över algoritmramverk som AutoML inte bör tänka på när det utvecklar modeller. Möjliga värden: tom lista, eller en eller flera av "profeten", "arima". Standard: [] (alla ramverk beaktas) |
experiment_dir | Str | (Valfritt) Sökväg till katalogen på arbetsytan för att spara de genererade notebook-filerna och experimenten. Standard: /Users/<username>/databricks_automl/ |
experiment_name | Str | (Valfritt) Namn på MLflow-experimentet som AutoML skapar. Standard: Namnet genereras automatiskt. |
feature_store_ sökningar | Lista[Dict] | (Valfritt) Lista över ordlistor som representerar funktioner från Funktionslager för dataförstoring. Giltiga nycklar i varje ordlista är: * table_name (str): Krävs. Namnet på funktionstabellen. * lookup_key (lista eller str): Krävs. Kolumnnamn som ska användas som nyckel när du ansluter funktionstabellen med data som skickas i dataset Param. Ordningen på kolumnnamnen måste matcha ordningen på de primära nycklarna i funktionstabellen.* timestamp_lookup_key (str): Krävs om den angivna tabellen är en funktionstabell för tidsserier. Kolumnnamnet som ska användas vid sökning till tidpunkt i funktionstabellen med data som skickas i dataset param.Standard: [] |
identity_col | Union[str, list] | (Valfritt) Kolumner som identifierar tidsserierna för prognostisering i flera serier. AutoML grupperar efter dessa kolumner och tidskolumnen för prognostisering. |
output_database | Str | (Valfritt) Om det tillhandahålls sparar AutoML förutsägelser om den bästa modellen i en ny tabell i den angivna databasen. Standard: Förutsägelser sparas inte. |
primary_metric | Str | Mått som används för att utvärdera och rangordna modellprestanda. Mått som stöds: "smape"(standard) "mse", "rmse", "mae" eller "mdape". |
timeout_minutes | heltal | (Valfritt) Maximal tid att vänta tills AutoML-utvärderingsversionerna har slutförts. Med längre tidsgränser kan AutoML köra fler utvärderingsversioner och identifiera en modell med bättre noggrannhet. Standard: 120 minuter Minsta värde: 5 minuter Ett fel rapporteras om tidsgränsen är för kort för att minst en utvärderingsversion ska kunna slutföras. |
country_code | Str | Finns i Databricks Runtime 12.0 ML och senare. Stöds endast av profetens prognosmodell. (Valfritt) Landskod med två bokstäver som anger vilket lands helgdagar prognosmodellen ska använda. Om du vill ignorera helgdagar anger du den här parametern till en tom sträng (""). Länder som stöds. Standard: USA (USA helgdagar). |
Returnerar
AutoMLSummary
Sammanfattningsobjekt för en AutoML-körning som beskriver mått, parametrar och annan information för var och en av utvärderingsversionerna. Du använder också det här objektet för att läsa in modellen som tränats av en specifik utvärderingsversion.
Property | Type | Beskrivning |
---|---|---|
experiment | mlflow.entities.Experiment | MLflow-experimentet som används för att logga utvärderingsversionerna. |
Prövningar | Lista[TrialInfo] | En lista som innehåller information om alla utvärderingsversioner som kördes. |
best_trial | TrialInfo | Information om utvärderingsversionen som resulterade i den bästa viktade poängen för det primära måttet. |
metric_distribution | Str | Fördelningen av viktade poäng för det primära måttet i alla utvärderingsversioner. |
output_table_name | Str | Används endast med prognostisering och endast om output_database tillhandahålls. Namnet på tabellen i output_database som innehåller modellens förutsägelser. |
TrialInfo
Sammanfattningsobjekt för varje enskild utvärderingsversion.
Property | Type | Beskrivning |
---|---|---|
notebook_path | Valfritt[str] | Sökvägen till den genererade notebook-filen för den här utvärderingsversionen på arbetsytan. För klassificering och regression anges det här värdet endast för den bästa utvärderingsversionen, medan alla andra utvärderingar har värdet inställt på None . För prognostisering finns det här värdet för alla utvärderingsversioner |
notebook_url | Valfritt[str] | URL:en för den genererade notebook-filen för den här utvärderingsversionen. För klassificering och regression anges det här värdet endast för den bästa utvärderingsversionen, medan alla andra utvärderingar har värdet inställt på None . För prognostisering finns det här värdet för alla utvärderingsversioner |
artifact_uri | Valfritt[str] | MLflow-artefakt-URI:n för den genererade notebook-filen. |
mlflow_run_id | Str | MLflow-körnings-ID:t som är associerat med den här utvärderingskörningen. |
metrics | Diktering[str, float] | Måtten som loggas i MLflow för den här utvärderingsversionen. |
parametrar | Dict[str, str] | Parametrarna som loggades i MLflow som användes för den här utvärderingsversionen. |
model_path | Str | MLflow-artefakt-URL:en för modellen som tränats i den här utvärderingsversionen. |
model_description | Str | Kort beskrivning av modellen och de hyperparametrar som används för att träna den här modellen. |
varaktighet | Str | Träningsvaraktighet i minuter. |
förprocessorer | Str | Beskrivning av de förprocessorer som körs innan modellen tränas. |
evaluation_metric_score | flyttal | Poäng för primärt mått, utvärderat för valideringsdatauppsättningen. |
Metod | beskrivning |
---|---|
load_model() | Läs in modellen som genererades i den här utvärderingsversionen, loggad som en MLflow-artefakt. |
Importera en notebook-fil
Om du vill importera en notebook-fil som har sparats som en MLflow-artefakt använder du Python-API:et databricks.automl.import_notebook
.
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
"""
Ett användningsexempel:
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)
Registrera och distribuera en modell
Du kan registrera och distribuera din AutoML-tränade modell precis som vilken registrerad modell som helst i MLflow-modellregistret, se Logga, läsa in, registrera och distribuera MLflow-modeller.
Ingen modul med namnet 'pandas.core.indexes.numeric
När du betjänar en modell som skapats med AutoML med modellservering kan du få felet: No module named 'pandas.core.indexes.numeric
.
Detta beror på en inkompatibel pandas
version mellan AutoML och modellen som betjänar slutpunktsmiljön. Du kan lösa det här felet genom att köra skriptet add-pandas-dependency.py. Skriptet redigerar requirements.txt
och conda.yaml
för den loggade modellen så att den innehåller rätt pandas
beroendeversion: pandas==1.5.3
.
- Ändra skriptet så att det
run_id
inkluderar MLflow-körningen där din modell loggades. - Omregistrera modellen till MLflow-modellregistret.
- Prova att hantera den nya versionen av MLflow-modellen.
Notebook-exempel
Granska de här notebook-filerna för att komma igång med AutoML.
Följande notebook-fil visar hur du gör klassificering med AutoML.
AutoML-klassificeringsexempel notebook
Följande notebook-fil visar hur du utför regression med AutoML.
Exempelanteckningsbok för AutoML-regression
Följande notebook-fil visar hur du utför prognostisering med AutoML.
Exempelanteckningsbok för AutoML-prognostisering
Följande notebook-fil visar hur du tränar en ML-modell med funktionstabeller för AutoML och Funktionsarkiv.