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:

  1. Skapa en notebook-fil och koppla den till ett kluster som kör Databricks Runtime ML.
  2. Identifiera vilken tabell du vill använda från din befintliga datakälla eller ladda upp en datafil till DBFS och skapa en tabell.
  3. Om du vill starta en AutoML-körning skickar du tabellnamnet till lämplig API-specifikation: klassificering, regression eller prognostisering.
  4. 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.
  5. 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 format
dbfs:/<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 format
dbfs:/<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.

  1. Ändra skriptet så att det run_id inkluderar MLflow-körningen där din modell loggades.
  2. Omregistrera modellen till MLflow-modellregistret.
  3. 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

Hämta notebook-fil

Följande notebook-fil visar hur du utför regression med AutoML.

Exempelanteckningsbok för AutoML-regression

Hämta notebook-fil

Följande notebook-fil visar hur du utför prognostisering med AutoML.

Exempelanteckningsbok för AutoML-prognostisering

Hämta notebook-fil

Följande notebook-fil visar hur du tränar en ML-modell med funktionstabeller för AutoML och Funktionsarkiv.

AutoML-experiment med Exempelanteckningsbok för Funktionsarkiv

Hämta notebook-fil