modelos de ML ensinados com Databricks AutoML Python API

Este artigo demonstra como ensinar um modelo com Databricks AutoML usando a API. Saiba mais sobre O que é AutoML?. A API do Python fornece funções para começar a classificação, regressão e previsão da execução do AutoML. Cada função chama um conjunto de modelos e gera um Notebook de teste para cada modelo.

As passos a seguir descrevem geralmente como configurar um experimento do AutoML usando a API:

  1. Crie um Notebook e anexe-o a um clusters executando o Databricks Runtime ML.

  2. Identifique qual tabela você deseja usar de sua fonte de dados existente ou upload um arquivo de dados para DBFS e crie uma tabela.

  3. Para iniciar uma execução do AutoML, passe o nome da tabela para a especificação de API apropriada: classificação, regressão ou previsão.

  4. Quando a execução do AutoML começa, um URL de experimento do MLflow aparece no console. Use esta URL para monitorar o progresso da execução. refresh o experimento MLflow para ver os testes conforme eles são concluídos.

  5. Depois que a execução do AutoML for concluída:

    • Use os links no resumo de saída para navegar para o experimento MLflow ou para o Notebook que gerou os melhores resultados.

    • Use o link para o Notebook de exploração de dados para obter algum entendimento sobre os dados passados para o AutoML. Você também pode anexar este Notebook aos mesmos clusters e reexecução do Notebook para reproduzir os resultados ou fazer análises de dados adicionais.

    • Use o objeto de resumo retornado da chamada AutoML para explorar mais detalhes sobre os testes ou para carregar um modelo treinado por um determinado teste. Saiba mais sobre o objeto AutoMLSummary.

    • Clone qualquer Notebook gerado a partir dos testes e reexecução do Notebook anexando-o aos mesmos clusters para reproduzir os resultados. Você também pode fazer as edições necessárias e reexecutá-las para ensinar modelos adicionais e logs los no mesmo experimento.

Requisitos

Consulte Requisitos para experimentos do AutoML.

especificação de classificação

O exemplo de código a seguir configura uma execução do AutoML para treinamento de um modelo de classificação. Para obter parâmetros adicionais para personalizar ainda mais sua execução do AutoML, consulte Parâmetros de classificação e regressão.

Observação

O parâmetro max_trials foi preterido no Databricks Runtime 10,4 ML e não tem suporte no Databricks Runtime 11,0 MLe acima. Use timeout_minutes para controlar a duração de uma execução do AutoML.

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,
  split_col: Optional[str] = None,
) -> AutoMLSummary

Especificação de regressão

O exemplo de código a seguir configura uma execução do AutoML para treinamento de um modelo de regressão. Para obter parâmetros adicionais para personalizar ainda mais sua execução do AutoML, consulte Parâmetros de classificação e regressão.

Observação

O parâmetro max_trials foi preterido no Databricks Runtime 10,4 ML e não tem suporte no Databricks Runtime 11,0 MLe acima. Use timeout_minutes para controlar a duração de uma execução do AutoML.

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,
  split_col: Optional[str] = None,
) -> AutoMLSummary

Especificação de previsão

O exemplo de código a seguir configura uma execução do AutoML para treinamento de um modelo de previsão. Para obter detalhes adicionais sobre parâmetros para sua execução do AutoML, consulte Parâmetros de previsão. Para usar o Auto-ARIMA, a série temporal deve ter uma frequência regular (ou seja, o intervalo entre quaisquer dois pontos deve ser o mesmo ao longo da série temporal). A frequência deve corresponder à unidade de frequência especificada na chamada de API. O AutoML lida com o tempo ausente dos passos preenchendo esses valores com o valor anterior.

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

Parâmetros de classificação e regressão

Observação

Somente para problemas de classificação e regressão, você pode:

  • Especifique quais colunas incluir no treinamento.

  • Selecione métodos de imputação personalizados.

Nome do campo

Tipo

Descrição

dataset

str pandas.DataFrame PySpark.DataFrame PySpark.sql.DataFrame

Nome da tabela de entrada ou DataFrame que contém recursos de treinamento e destino.

O nome da tabela pode estar no formato “..” ou “.” para tabelas Unity Catalog

col_alvo

str

Nome da coluna para o rótulo de destino.

data_dir

str de formato dbfs:/<folder-name>

(Opcional) Caminho DBFS usado para armazenar o dataset de treinamento. Esse caminho é visível para nós de driver e worker .

A Databricks recomenda deixar este campo vazio, para que o AutoML possa salvar o dataset de treinamento como um artefato MLflow.

Se um caminho personalizado for especificado, o dataset não herdará as permissões de acesso do experimento AutoML.

exclu_cols

Lista[str]

(Opcional) Lista de colunas a serem ignoradas durante os cálculos do AutoML.

default: []

excluir_ estruturas

Lista[str]

(Opcional) Lista de estruturas de algoritmo que o AutoML não deve considerar ao desenvolver modelos. Valores possíveis: lista vazia ou um ou mais de “sklearn”, “lightgbm”, “xgboost”.

default: [] (todos os frameworks são considerados)

experimento_dir

str

(Opcional) Caminho para o diretório no workspace para salvar o Notebook e os experimentos gerados.

default: /Users/<username>/databricks_automl/

experiment_name

str

(Opcional) Nome do experimento MLflow criado pelo AutoML.

default: o nome é gerado automaticamente.

pesquisas de recursos

Lista[Ditado]

(Opcional) Lista de dicionários que representam recursos do Feature Store para aumento de dados. key válidas em cada dicionário são:

  • table_name (str): Obrigatório. Nome da tabela de recursos.

  • lookup_key (lista ou str): Obrigatório. Nome(s) da coluna para usar como key ao unir a tabela de recursos com os dados passados no parâmetro dataset. A ordem dos nomes das colunas deve corresponder à ordem da key primária da tabela de recursos.

  • timestamp_lookup_key (str): obrigatório se a tabela especificada for uma tabela de recursos de série temporal. O nome da coluna a ser usado ao executar uma pesquisa pontual na tabela de recursos com os dados transmitidos no parâmetro dataset .

default: []

imputadores

Dict[str, Union[str, Dict[str, Any]]]

(Opcional) Dicionário onde cada key é um nome de coluna e cada valor é uma strings ou dicionário que descreve a estratégia de imputação. Se especificado como strings, o valor deve ser “mean”, “median” ou “most_frequent”. Para imputar com um valor conhecido, especifique o valor como um dicionário {"strategy": "constant", "fill_value": <desired value>}. Você também pode especificar opções strings como dicionários, por exemplo {“strategy”: “mean”}.

Se nenhuma estratégia de imputação for fornecida para uma coluna, o AutoML selecionará uma estratégia default com base no tipo e conteúdo da coluna. Se você especificar um método de imputação nãodefault , o AutoML não executará a detecção de tipo semântico.

default: {}

max_trials

int

(Opcional) Número máximo de tentativas para execução.

Este parâmetro está disponível no Databricks Runtime 10,5 ML e abaixo, mas foi preterido a partir do Databricks Runtime 10,3 ML. No Databricks Runtime 11,0 ML e acima, esse parâmetro não tem suporte.

default: 20

Se timeout_minutes=None, AutoML executa o número máximo de tentativas.

etiqueta

União[int, bool, str]

(Apenas classificação) A classe positiva. Isso é útil para calcular métricas como precisão e rechamada. Deve ser especificado apenas para problemas de classificação binária.

métrica_principal

str

métricas usadas para avaliar e classificar o desempenho do modelo.

Métricas suportadas para regressão: “r2” (default), “mae”, “rmse”, “mse”

Métricas suportadas para classificação: “f1” (default), “logs”, “precision”, “accuracy”, “ROC”

split_col

str

(Opcional) Nome da coluna para uma coluna dividida.

Disponível apenas em Databricks Runtime 15.2 ML e acima para API fluxo de trabalho.

Se fornecido, o site AutoML tentará dividir os conjuntos ensinar/validar/testar por valores especificados pelo usuário, e essa coluna será automaticamente excluída do treinamento recurso.

O tipo de coluna aceito é a cadeia de caracteres. O valor de cada entrada nessa coluna deve ser um dos seguintes: "ensinar", "validar" ou "testar".

time_col

str

Disponível no Databricks Runtime 10.1 MLe acima.

(Opcional) Nome da coluna para uma coluna de tempo.

Se fornecido, o AutoML tentará dividir o dataset em conjuntos de treinamento, validação e teste cronologicamente, usando os pontos mais antigos como dados de treinamento e os pontos mais recentes como um conjunto de teste.

Os tipos de coluna aceitos são timestamp e integer. Com o Databricks Runtime 10.2 MLe acima, colunas strings também são suportadas. Se o tipo de coluna for strings, o AutoML tentará convertê-lo em carimbo de data/hora usando a detecção semântica. Se a conversão falhar, a execução do AutoML falhará.

timeout_minutes

int

(Opcional) Tempo máximo de espera para a conclusão dos testes do AutoML. Tempos limite mais longos permitem que o AutoML execute mais tentativas e identifique um modelo com melhor precisão.

default: 120 minutos

Valor mínimo: 5 minutos

Um erro é relatado se o tempo limite for muito curto para permitir a conclusão de pelo menos uma tentativa.

Parâmetros de previsão

Nome do campo

Tipo

Descrição

dataset

str

pandas.DataFrame PySpark.DataFrame PySpark.sql.DataFrame

Nome da tabela de entrada ou DataFrame que contém recursos de treinamento e destino.

O nome da tabela pode estar no formato “..” ou “.” para tabelas Unity Catalog

col_alvo

str

Nome da coluna para o rótulo de destino.

time_col

str

Nome da coluna de tempo para previsão.

frequência

str

Frequência da série temporal para previsão. Este é o período com o qual os eventos devem ocorrer. A configuração default é “D” ou dados diários. Certifique-se de alterar a configuração se seus dados tiverem uma frequência diferente.

Valores possíveis:

“W” (semanas)

“D” / “dias” / “dia”

“horas” / “hora” / “hr” / “h”

“m” / “minuto” / “min” / “minutos” / “T”

“S” / “segundos” / “seg” / “segundo”

O seguinte está disponível apenas com Databricks Runtime 12.0 MLe acima:

“M” / “mês” / “meses”

“Q” / “quarto” / “quartos”

“Y” / “ano” / “anos”

default: “D”

horizonte

int

Número de períodos no futuro para os quais as previsões devem ser retornadas. As unidades são a frequência da série temporal. default: 1

data_dir

str de formato dbfs:/<folder-name>

(Opcional) Caminho DBFS usado para armazenar o dataset de treinamento. Esse caminho é visível para nós de driver e worker .

A Databricks recomenda deixar este campo vazio, para que o AutoML possa salvar o dataset de treinamento como um artefato MLflow.

Se um caminho personalizado for especificado, o dataset não herdará as permissões de acesso do experimento AutoML.

excluir_ estruturas

Lista[str]

(Opcional) Lista de estruturas de algoritmo que o AutoML não deve considerar ao desenvolver modelos. Valores possíveis: lista vazia ou um ou mais de “profeta”, “arima”. default: [] (todos os frameworks são considerados)

experimento_dir

str

(Opcional) Caminho para o diretório no workspace para salvar o Notebook e os experimentos gerados.

default: /Users/<username>/databricks_automl/

experiment_name

str

(Opcional) Nome do experimento MLflow criado pelo AutoML.

default: o nome é gerado automaticamente.

pesquisas de recursos

Lista[Ditado]

(Opcional) Lista de dicionários que representam recursos do Feature Store para aumento de dados. key válidas em cada dicionário são:

  • table_name (str): Obrigatório. Nome da tabela de recursos.

  • lookup_key (lista ou str): Obrigatório. Nome(s) da coluna para usar como key ao unir a tabela de recursos com os dados passados no parâmetro dataset. A ordem dos nomes das colunas deve corresponder à ordem da key primária da tabela de recursos.

  • timestamp_lookup_key (str): obrigatório se a tabela especificada for uma tabela de recursos de série temporal. O nome da coluna a ser usado ao executar uma pesquisa pontual na tabela de recursos com os dados transmitidos no parâmetro dataset .

default: []

identidade_col

União[str, lista]

(Opcional) Coluna(s) que identifica(m) a série temporal para previsão de várias séries. O AutoML agrupa por essas colunas e a coluna de tempo para previsão.

output_database

str

(Opcional) Se fornecido, o AutoML salva previsões do melhor modelo em uma nova tabela no banco de dados especificado.

default: as previsões não são salvas.

métrica_principal

str

métricas usadas para avaliar e classificar o desempenho do modelo. Métricas suportadas: “smape”(default) “mse”, “rmse”, “mae” ou “mdape”.

timeout_minutes

int

(Opcional) Tempo máximo de espera para a conclusão dos testes do AutoML. Tempos limite mais longos permitem que o AutoML execute mais tentativas e identifique um modelo com melhor precisão.

default: 120 minutos

Valor mínimo: 5 minutos

Um erro é relatado se o tempo limite for muito curto para permitir a conclusão de pelo menos uma tentativa.

Código do país

str

Disponível no Databricks Runtime 12,0 MLe acima. Suportado apenas pelo modelo de previsão do Profeta.

(Opcional) Código de país de duas letras que indica quais feriados do país o modelo de previsão deve usar. Para ignorar feriados, defina este parâmetro como strings vazias (“”). Países suportados.

default: EUA (feriados nos Estados Unidos).

devoluções

AutoMLSummary

Objeto de resumo para uma execução do AutoML que descreve as métricas, os parâmetros e outros detalhes de cada uma das tentativas. Você também usa esse objeto para carregar o modelo treinado por uma tentativa específica.

Propriedade

Tipo

Descrição

experimentar

mlflow.entities.Experiment

O experimento MLflow usado para logs os testes.

ensaios

List[TrialInfo]

Uma lista contendo informações sobre todos os julgamentos que foram executados.

best_trial

TrialInfo

Informações sobre o julgamento que resultou na melhor pontuação ponderada para os indicadores primários.

métricas

str

A distribuição de pontuações ponderadas para as métricas primárias em todas as tentativas.

output_table_name

str

Usado apenas com previsão e somente se output_database for fornecido. Nome da tabela em output_database contendo as previsões do modelo.

TrialInfo

Objeto de resumo para cada tentativa individual.

Propriedade

Tipo

Descrição

Notebook

Opcional[str]

O caminho para o Notebook gerado para esta avaliação no workspace. Para classificação e regressão, esse valor é definido apenas para a melhor tentativa, enquanto todas as outras tentativas têm o valor definido como None. Para previsão, este valor está presente para todos os ensaios

Notebook

Opcional[str]

A URL do Notebook gerado para esta avaliação. Para classificação e regressão, esse valor é definido apenas para a melhor tentativa, enquanto todas as outras tentativas têm o valor definido como None. Para previsão, este valor está presente para todos os ensaios

artefato_uri

Opcional[str]

O URI do artefato MLflow para o Notebook gerado.

execução

str

O ID de execução do MLflow associado a esta execução de teste.

métricas

Dict[str, float]

As métricas log in no MLflow para este teste.

parâmetros

Dito[str, str]

Os parâmetros log in MLflow que foram usados para este teste.

model_path

str

A URL do artefato MLflow do modelo treinado neste teste.

modelo_descrição

str

Breve descrição do modelo e dos hiperparâmetros usados para o treinamento deste modelo.

duração

str

treinamento duração em minutos.

pré-processadores

str

Descrição da execução dos pré-processadores antes de treinar o modelo.

avaliação_métrica_pontuação

flutuador

Pontuação de métricas primárias, avaliadas para o dataset de validação.

Método

Descrição

load_model()

Carregue o modelo gerado neste teste, logs como um artefato MLflow.

Importar um Notebook

Para importar um Notebook que foi salvo como um artefato MLflow, use a databricks.automl.import_notebook API Python.

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
    """

Um exemplo de uso:

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)

registrar e aprimorar um modelo

Você pode registrar e aprimorar seu modelo treinado AutoML como qualquer modelo registrado no MLflow Model Registry, ver logs, carregar, registrar e aprimorar modelos MLflow.

Nenhum módulo chamado 'pandas.core.indexes.numeric

Ao exibir um modelo criado usando o AutoML com Model Serving, você pode receber o erro: No module named 'pandas.core.indexes.numeric.

Isso ocorre devido a uma versão pandas incompatível entre o AutoML e o modelo que atende ao ambiente de endpoint. Você pode resolver esse erro executando o script add-pandas-dependency.py. O script edita o requirements.txt e o conda.yaml dos logs de seus modelos para incluir a versão de dependência pandas apropriada: pandas==1.5.3.

  1. Modifique o script para incluir o run_id da execução do MLflow em que seu modelo foi logs.

  2. Registrando novamente o modelo no MLflow Model Registry.

  3. Tente servir a nova versão do modelo MLflow.

exemplos Notebook

Revise este Notebook para começar a usar o AutoML.

O Notebook a seguir mostra como fazer classificação com AutoML.

Notebook de exemplo de classificação do AutoML

Abra o bloco de anotações em outra guia

O Notebook a seguir mostra como fazer regressão com AutoML.

Notebook de exemplo de regressão do AutoML

Abra o bloco de anotações em outra guia

O Notebook a seguir mostra como fazer previsões com o AutoML.

Notebookexemplo de previsão do AutoML

Abra o bloco de anotações em outra guia

O Notebook a seguir mostra como ensinar um modelo ML com tabelas de recursos AutoML e Feature Store.

Experimento do AutoML com exemplo de loja de recursos Notebook

Abra o bloco de anotações em outra guia