Treinar modelos de ML com a API do Python do AutoML no Azure Databricks
Este artigo demonstra como treinar um modelo com o AutoML do Azure Databricks usando a API. Saiba mais sobre O que é o AutoML?. A API de Python fornece funções para iniciar execuções de classificação, regressão e regressão do AutoML. Cada chamada de função treina um conjunto de modelos e gera um notebook de avaliação para cada modelo.
As seguintes etapas descrevem geralmente como configurar um experimento de AutoML usando a API:
- Crie um notebook e anexe-o a um cluster Databricks Runtime ML.
- Identifique qual tabela você deseja usar da fonte de dados existente ou carregue um arquivo de dados no DBFS e crie uma tabela.
- Para iniciar uma execução de AutoML, passe o nome da tabela para a especificação de API apropriada: classificação, regressão ou previsão.
- Quando a executar o AutoML é iniciada, uma URL de experimento do MLflow é exibida no console. Use essa URL para monitorar o progresso da executar. Atualize o experimento do MLflow para ver as avaliação conforme elas são concluídas.
- Após a conclusão da executar o AutoML:
- Use os links no resumo de saída para navegar até o experimento do MLflow ou para o notebook que gerou os melhores resultados.
- Use o link para o notebook de exploração de dados para obter algumas informações sobre os dados passados para o AutoML. Você também pode anexar esse notebook ao mesmo cluster e executar o 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 as avaliação ou carregar um modelo treinado por uma determinada avaliação. Saiba mais sobre o objeto AutoMLSummary.
- Clone qualquer notebook gerado das avaliação e execute o notebook de novo anexando-o ao mesmo cluster para reproduzir os resultados. Você também pode fazer as edições necessárias e executá-las novamente para treinar modelos adicionais e registrá-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 de AutoML para treinar um modelo de classificação. Para obter parâmetros adicionais para personalizar ainda mais sua execução de AutoML, consulte Parâmetros de classificação e regressão.
Observação
O parâmetro max_trials
está preterido no Databricks Runtime 10.4 ML e não é compatível com o Databricks Runtime 11.0 ML e superior. 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,
) -> AutoMLSummary
Especificação de regressão
O exemplo de código a seguir configura uma execução de AutoML para treinar um modelo de regressão. Para obter parâmetros adicionais para personalizar ainda mais sua execução de AutoML, consulte Parâmetros de classificação e regressão.
Observação
O parâmetro max_trials
está preterido no Databricks Runtime 10.4 ML e não é compatível com o Databricks Runtime 11.0 ML e superior. 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,
) -> AutoMLSummary
Especificação de previsão
O exemplo de código a seguir configura uma execução de AutoML para treinar um modelo de previsão. Para obter detalhes adicionais sobre parâmetros para a execução do AutoML, consulte Parâmetros de previsão. Para usar o ARIMA automático, a série temporal deve ter uma frequência regular (ou seja, o intervalo entre dois pontos deve ser o mesmo em toda a série temporal). A frequência deve corresponder à unidade de frequência especificada na chamada à API. O AutoML trata das etapas de tempo ausentes 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:
- Especificar quais colunas incluir no treinamento.
- Selecionar 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 que não são do Catálogo do Unity |
target_col | str | Nome da coluna para o rótulo de destino. |
data_dir | str de formatodbfs:/<folder-name> |
(Opcional) Caminho DBFS usado para armazenar o conjuntos de dados de treinamento. Esse caminho é visível para nós de driver e de trabalho. O Databricks recomenda deixar esse campo vazio, para que o AutoML possa salvar o conjunto de dados de treinamento como um artefato do MLflow. Se um caminho personalizado for especificado, o conjunto de dados não herdará as permissões de acesso do experimento do AutoML. |
exclude_cols | List[str] | (Opcional) Lista de colunas a ignorar durante cálculos de AutoML. Padrão: [] |
exclude_ frameworks | List[str] | (Opcional) Lista de estruturas de algoritmo que o AutoML não deve considerar à medida que desenvolve modelos. Valores possíveis: lista vazia ou um ou mais de "sklearn", "lightgbm", "xgboost". Padrão: [] (todas as estruturas são consideradas) |
experiment_dir | str | (Opcional) Caminho para o diretório no workspace para salvar os notebooks e experimentos gerados. Padrão: /Users/<username>/databricks_automl/ |
experiment_name | str | (Opcional) Nome do experimento do MLflow que o AutoML cria. Padrão: o nome é gerado automaticamente. |
feature_store_ lookups | List[Dict] | (Opcional) Lista de dicionários que representam recursos do Repositório de Recursos para aumento de dados. As chaves válidas em cada dicionário são: * table_name (str): obrigatório. Nome da tabela de recursos. * lookup_key (list ou str): obrigatório. Nome de coluna a ser usado como chave ao unir a tabela de recursos com os dados passados no parâmetro dataset . A ordem dos nomes de coluna deve corresponder à ordem das chaves primárias 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 a pesquisa pontual na tabela de recursos com os dados passados no parâmetro dataset .Padrão: [] |
insertores | Dict[str, Union[str, Dict[str, Any]]] | (Opcional) Dicionário em que cada chave é um nome de coluna, e cada valor é uma cadeia de caracteres ou dicionário que descreve a estratégia de imputação. Se especificado como uma cadeia de caracteres, 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 de cadeia de caracteres 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 padrão com base no tipo e no conteúdo da coluna. Se você especificar um método de imputação não padrão, o AutoML não executará a detecção de tipo semântico. Padrão: {} |
max_trials | INT | (Opcional) Número máximo de tentativas a executar. Este parâmetro está disponível no Databricks Runtime 10.5 ML e anterior, mas foi preterido a partir do Databricks Runtime 10.3 ML. No Databricks Runtime 11.0 ML e superior, esse parâmetro não tem mais suporte. Padrão: 20 Se timeout_minutes=None, o AutoML executa o número máximo de tentativas. |
pos_label | Union[int, bool, str] | (Somente classificação) A classe positiva. Isso é útil para calcular métricas como precisão e recall. Deve ser especificado apenas para problemas de classificação binária. |
primary_metric | str | Métrica usada para avaliar e classificar o desempenho do modelo. Métricas com suporte para regressão: "r2" (padrão), "mae", "rmse", "mse" Métricas com suporte para classificação: “f1” (default), “log_loss”, “precision”, “accuracy”, “roc_auc” |
time_col | str | Disponível no Databricks Runtime 10.1 ML e superior. (Opcional) Nome da coluna de tempo. Se fornecido, o AutoML tenta dividir o conjunto de dados 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 testes. Os tipos de coluna aceitos são carimbo de data/hora e inteiro. Com Databricks Runtime 10.2 ML superior, também há suporte para colunas de cadeia de caracteres. Se o tipo de coluna for cadeia de caracteres, o AutoML tentará convertê-lo em um 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 para aguardar a conclusão das avaliação de AutoML. Carimbos de data/hora mais longos permitem que o AutoML execute mais testes e identifique um modelo com melhor precisão. Padrão: 120 minutos Valor mínimo: 5 minutos Um erro será relatado se o carimbo de data/hora for muito curto para permitir que pelo menos uma avaliação seja concluída. |
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 que não são do Catálogo do Unity |
target_col | 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. Esse é o período no qual os eventos devem ocorrer. A configuração padrão é "D" ou dados diários. Você deverá alterar a configuração se os dados tiverem uma frequência diferente. Valores possíveis: “W” (semanas) “D” / “days” / “day” “hours” / “hour” / “hr” / “h” “m” / “minute” / “min” / “minutes” / “T” “S” / “seconds” / “sec” / “second” Os seguintes itens só estão disponíveis com o Databricks Runtime 12.0 ML e superior: “M” / “month” / “months” “Q” / “quarter” / “quarters” “Y” / “year” / “years” Padrão: "D" |
horizon | INT | Número de períodos no futuro para os quais as previsões devem ser retornadas. As unidades são a frequência de séries temporais. Padrão: 1 |
data_dir | str de formatodbfs:/<folder-name> |
(Opcional) Caminho DBFS usado para armazenar o conjuntos de dados de treinamento. Esse caminho é visível para nós de driver e de trabalho. O Databricks recomenda deixar esse campo vazio, para que o AutoML possa salvar o conjunto de dados de treinamento como um artefato do MLflow. Se um caminho personalizado for especificado, o conjunto de dados não herdará as permissões de acesso do experimento do AutoML. |
exclude_ frameworks | List[str] | (Opcional) Lista de estruturas de algoritmo que o AutoML não deve considerar à medida que desenvolve modelos. Valores possíveis: lista vazia, ou um ou mais de “prophet”, “arima”. Padrão: [] (todas as estruturas são consideradas) |
experiment_dir | str | (Opcional) Caminho para o diretório no workspace para salvar os notebooks e experimentos gerados. Padrão: /Users/<username>/databricks_automl/ |
experiment_name | str | (Opcional) Nome do experimento do MLflow que o AutoML cria. Padrão: o nome é gerado automaticamente. |
feature_store_ lookups | List[Dict] | (Opcional) Lista de dicionários que representam recursos do Repositório de Recursos para aumento de dados. As chaves válidas em cada dicionário são: * table_name (str): obrigatório. Nome da tabela de recursos. * lookup_key (list ou str): obrigatório. Nome de coluna a ser usado como chave ao unir a tabela de recursos com os dados passados no parâmetro dataset . A ordem dos nomes de coluna deve corresponder à ordem das chaves primárias 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 a pesquisa pontual na tabela de recursos com os dados passados no parâmetro dataset .Padrão: [] |
identity_col | Union[str, list] | (Opcional) Coluna(s) que identificam a série temporal para previsão de várias séries. O AutoML agrupa por essas colunas e pela coluna de tempo para previsão. |
output_database | str | (Opcional) Se fornecido, o AutoML salvará previsões do melhor modelo para uma nova tabela no banco de dados especificado. Padrão: as previsões não são salvas. |
primary_metric | str | Métrica usada para avaliar e classificar o desempenho do modelo. Métricas com suporte: "smape" (padrão) "MSE", "RMSE", "mae" ou "mdape". |
timeout_minutes | INT | (Opcional) Tempo máximo para aguardar a conclusão das avaliação de AutoML. Carimbos de data/hora mais longos permitem que o AutoML execute mais testes e identifique um modelo com melhor precisão. Padrão: 120 minutos Valor mínimo: 5 minutos Um erro será relatado se o carimbo de data/hora for muito curto para permitir que pelo menos uma avaliação seja concluída. |
country_code | str | Disponível no Databricks Runtime 12.0 ML e superior. Compatível apenas com o modelo de previsão do Prophet. (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 esse parâmetro como uma cadeia de caracteres vazia (""). Países com suporte. Padrão: US (feriados dos Estados Unidos). |
Retorna
AutoMLSummary
Objeto de resumo para uma execução do AutoML que descreve as métricas, os parâmetros e outros detalhes para cada uma das avaliações. Você também usa esse objeto para carregar o modelo treinado por uma avaliação específica.
Propriedade | Type | Descrição |
---|---|---|
experimento | mlflow.entities.Experiment | O experimento MLflow usado para registrar as avaliações. |
avaliações | List[TrialInfo] | Uma lista que contém informações sobre todas as avaliações que foram executadas. |
best_trial | TrialInfo | Informações sobre a avaliação que resultaram na melhor pontuação ponderada para a métrica primária. |
metric_distribution | str | A distribuição de pontuações ponderadas para a métrica primária em todas as avaliações. |
output_table_name | str | Usado somente com previsão e somente se output_database for fornecido. Nome da tabela no output_database que contém as previsões do modelo. |
TrialInfo
Objeto de resumo para cada avaliação individual.
Propriedade | Type | Descrição |
---|---|---|
notebook_path | Opcional[str] | O caminho para o notebook gerado para esta avaliação no espaço de trabalho. Para classificação e regressão, esse valor é definido apenas para a melhor avaliação, enquanto todas as outras avaliações têm o valor definido como None . Para previsão, esse valor está presente para todas as avaliações |
notebook_url | Opcional[str] | A URL do notebook gerado para esta avaliação. Para classificação e regressão, esse valor é definido apenas para a melhor avaliação, enquanto todas as outras avaliações têm o valor definido como None . Para previsão, esse valor está presente para todas as avaliações |
artifact_uri | Opcional[str] | O URI do artefato do MLflow para o notebook gerado. |
mlflow_run_id | str | A ID de execução do MLflow associada a esta execução de avaliação. |
Métricas | Dict[str, float] | As métricas registradas em MLflow para esta avaliação. |
params | Dict[str, str] | Os parâmetros registrados em MLflow que foram usados para esta avaliação. |
model_path | str | A URL do artefato MLflow do modelo treinado nesta avaliação. |
model_description | str | Breve descrição do modelo e dos hiperparâmetros usados para treinar esse modelo. |
duration | str | Duração do treinamento em minutos |
pré-processadores | str | Descrição dos pré-processadores executados antes de treinar o modelo. |
evaluation_metric_score | FLOAT | Pontuação da métrica primária, avaliada para o conjunto de dados de validação. |
Método | Descrição |
---|---|
load_model() | Carregue o modelo gerado nesta avaliação, registrado como um artefato MLflow. |
Importar um notebook
Para importar um notebook salvo como um artefato do MLflow, use a API do Python 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
"""
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 implantar um modelo
Você pode registrar e implantar seu modelo treinado de AutoML como qualquer modelo registrado no registro de modelo do MLflow, consulte Registrar em log, carregar, registrar e implantar modelos do MLflow.
Nenhum módulo chamado 'pandas.core.indexes.numeric
Ao servir um modelo criado usando o AutoML com o Serviço de Modelo, você pode receber o erro: No module named 'pandas.core.indexes.numeric
.
Isso ocorre devido a uma versão incompatível pandas
entre o AutoML e o modelo que atende ao ambiente de ponto de extremidade. Você pode resolve esse erro executando o script add-pandas-dependency.py. O script edita o requirements.txt
e conda.yaml
para o modelo registrado incluir a versão de dependência apropriada pandas
: pandas==1.5.3
.
- Modifique o script para incluir o
run_id
da execução do MLflow em que o modelo foi registrado. - Registrar novamente o modelo no registro de modelo do MLflow.
- Tente fornecer a nova versão do modelo MLflow.
Exemplos de notebook
Examine esses blocos de anotações para começar a usar o AutoML.
O notebook a seguir mostra como fazer a classificação com o AutoML.
Notebook de exemplo de classificação de AutoML
O notebook a seguir mostra como fazer regressão com o AutoML.
Notebook de exemplo de regressão de AutoML
O notebook a seguir mostra como fazer a previsão com o AutoML.
Notebook de exemplo de previsão de AutoML
O notebook a seguir mostra como treinar um modelo de ML com tabelas de recursos do AutoML e do Repositório de Recursos.
Notebook de exemplo de experimento de AutoML com o Repositório de Recursos
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de