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:
Crie um Notebook e anexe-o a um clusters executando o Databricks Runtime ML.
Identifique qual tabela você deseja usar de sua fonte de dados existente ou upload um arquivo de dados para DBFS e crie uma tabela.
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.
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.
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
|
(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: |
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:
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 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
|
(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: |
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:
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 |
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 |
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
.
Modifique o script para incluir o
run_id
da execução do MLflow em que seu modelo foi logs.Registrando novamente o modelo no MLflow Model Registry.
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.
O Notebook a seguir mostra como fazer regressão com AutoML.
O Notebook a seguir mostra como fazer previsões com o AutoML.
O Notebook a seguir mostra como ensinar um modelo ML com tabelas de recursos AutoML e Feature Store.