Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Um modelo MLflow é um formato padrão para empacotar modelos de aprendizado de máquina que podem ser usados em uma variedade de ferramentas downstream — por exemplo, inferência em lote no Apache Spark ou serviço em tempo real por meio de uma API REST. O formato define uma convenção que permite salvar um modelo em diferentes formatos (python-function, pytorch, sklearn, e assim por diante), que podem ser entendidos por diferentes plataformas de disponibilização e inferência de modelos.
Para saber como registrar e pontuar um modelo de streaming, consulte Como salvar e carregar um modelo de streaming.
O MLflow 3 introduz melhorias significativas nos modelos MLflow introduzindo um novo objeto dedicado LoggedModel com seus próprios metadados, como métricas e parâmetros. Para obter mais detalhes, consulte Rastrear e comparar modelos usando modelos registrados MLflow.
Registrar e carregar modelos
Quando você registra um modelo, o MLflow arquiva automaticamente os arquivos requirements.txt e conda.yaml. Você pode usar esses arquivos para recriar o ambiente de desenvolvimento do modelo e reinstalar dependências usando virtualenv (recomendado) ou conda.
Importante
A Anaconda Inc. atualizou os seus termos de serviço para os canais do anaconda.org. Com base nos novos termos de serviço, você pode precisar de uma licença comercial se depender da embalagem e distribuição da Anaconda. Consulte Anaconda Commercial Edition FAQ para obter mais informações. Seu uso de qualquer canal Anaconda é regido por seus termos de serviço.
Os modelos MLflow registados antes da v1.18 (Databricks Runtime 8.3 ML ou anteriores) eram, por padrão, registados com o canal conda defaults (https://repo.anaconda.com/pkgs/) como dependência. Devido a esta alteração de licença, o Databricks interrompeu o uso do defaults canal para modelos registrados usando MLflow v1.18 e posteriores. O canal padrão registado é agora conda-forge, que aponta para a comunidade gerida https://conda-forge.org/.
Se você registrou um modelo antes do MLflow v1.18 sem excluir o defaults canal do ambiente conda para o modelo, esse modelo pode ter uma dependência do defaults canal que você pode não ter pretendido.
Para confirmar manualmente se um modelo tem esta dependência, pode-se examinar o valor em channel no arquivo que é empacotado com conda.yaml o modelo registado. Por exemplo, um modelo com uma dependência de canal conda.yaml pode ter esta aparência: defaults
channels:
- defaults
dependencies:
- python=3.8.8
- pip
- pip:
- mlflow
- scikit-learn==0.23.2
- cloudpickle==1.6.0
name: mlflow-env
Como a Databricks não pode determinar se seu uso do repositório Anaconda para interagir com seus modelos é permitido sob seu relacionamento com a Anaconda, a Databricks não está forçando seus clientes a fazer alterações. Se o seu uso do repositório de Anaconda.com através do uso do Databricks for permitido sob os termos da Anaconda, você não precisará tomar nenhuma ação.
Se desejar alterar o canal usado no ambiente de um modelo, pode reinscrever o modelo no registo do modelo com um novo conda.yaml. Você pode fazer isso especificando o conda_env canal no parâmetro de log_model().
Para obter mais informações sobre a log_model() API, consulte a documentação do MLflow para o modelo com o qual você está trabalhando, por exemplo, log_model para scikit-learn.
Para obter mais informações sobre conda.yaml arquivos, consulte a documentação do MLflow.
Comandos da API
Para registrar um modelo no servidor de rastreamento MLflow, use mlflow.<model-type>.log_model(model, ...).
Para carregar um modelo registrado anteriormente para inferência ou desenvolvimento adicional, use mlflow.<model-type>.load_model(modelpath), onde modelpath é uma das seguintes:
- um caminho de modelo (como
models:/{model_id}) (MLflow 3 apenas) - um caminho relativo ao contexto de execução (como
runs:/{run_id}/{model-path}) - um caminho de volumes do Catálogo Unity (como
dbfs:/Volumes/catalog_name/schema_name/volume_name/{path_to_artifact_root}/{model_path}) - um caminho de armazenamento de artefato gerenciado por MLflow começando com
dbfs:/databricks/mlflow-tracking/ - um caminho de modelo registrado (como
models:/{model_name}/{model_stage}).
Para obter uma lista completa de opções para carregar modelos MLflow, veja Artefactos de Referência na documentação do MLflow.
Para modelos Python MLflow, uma opção adicional é usar mlflow.pyfunc.load_model() para carregar o modelo como uma função Python genérica.
Você pode usar o trecho de código a seguir para carregar o modelo e pontuar pontos de dados.
model = mlflow.pyfunc.load_model(model_path)
model.predict(model_input)
Como alternativa, você pode exportar o modelo como um Apache Spark UDF para usar para pontuar em um cluster do Spark, seja como um trabalho em lote ou como um trabalho de Spark Streaming em tempo real.
# load input data table as a Spark DataFrame
input_data = spark.table(input_table_name)
model_udf = mlflow.pyfunc.spark_udf(spark, model_path)
df = input_data.withColumn("prediction", model_udf())
Dependências do modelo de log
Para carregar um modelo corretamente, deve certificar-se de que as dependências do modelo sejam carregadas com as versões corretas no ambiente de notebook. No Databricks Runtime 10.5 ML e superior, o MLflow avisa se for detetada uma incompatibilidade entre o ambiente atual e as dependências do modelo.
A funcionalidade adicional para simplificar a restauração das dependências do modelo está incluída no Databricks Runtime 11.0 ML e superior. No Databricks Runtime 11.0 ML ou versões posteriores, para modelos pyfunc, pode chamar mlflow.pyfunc.get_model_dependencies para recuperar e descarregar as dependências do modelo. Esta função retorna um caminho para o arquivo de dependências que você pode instalar usando %pip install <file-path>. Quando você carrega um modelo como um UDF PySpark, especifique env_manager="virtualenv" na mlflow.pyfunc.spark_udf chamada. Isso restaura as dependências do modelo no contexto do UDF do PySpark e não afeta o ambiente externo.
Você também pode usar essa funcionalidade no Databricks Runtime 10.5 ou inferior instalando manualmente o MLflow versão 1.25.0 ou superior:
%pip install "mlflow>=1.25.0"
Para obter informações adicionais sobre como registrar dependências de modelo (Python e não-Python) e artefatos, consulte Log model dependencies.
Saiba como registrar dependências de modelo e artefatos personalizados para servir o modelo:
- Implantar modelos com dependências
- Utilize bibliotecas Python personalizadas com o Serviço de Modelos
- Empacotar artefatos personalizados para o Model Serving
Trechos de código gerados automaticamente na interface do usuário MLflow
Quando você registra um modelo em um bloco de anotações do Azure Databricks, o Azure Databricks gera automaticamente trechos de código que você pode copiar e usar para carregar e executar o modelo. Para exibir esses trechos de código:
- Navegue até ao ecrã de execuções para a execução que gerou o modelo. (Consulte Ver experiência do bloco de notas para saber como apresentar o ecrã Execuções.)
- Desloque-se para a secção Artefactos .
- Clique no nome do modelo registrado. Um painel é aberto à direita mostrando o código que você pode usar para carregar o modelo registrado e fazer previsões no Spark ou pandas DataFrames.
Exemplos
Para obter exemplos de modelos de registro, consulte os exemplos em Rastrear exemplos de execuções de treinamento de aprendizado de máquina.
Registar modelos no Registo Modelo
Você pode registrar modelos no MLflow Model Registry, um repositório de modelos centralizado que fornece uma interface do usuário e um conjunto de APIs para gerenciar o ciclo de vida completo dos modelos MLflow. Para obter instruções sobre como usar o Registro de Modelo para gerenciar modelos no Databricks Unity Catalog, consulte Gerenciar o ciclo de vida do modelo no Unity Catalog. Para usar o Registro do Modelo de Espaço de Trabalho, consulte Gerenciar o ciclo de vida do modelo usando o Registro do Modelo de Espaço de Trabalho (legado).
Quando os modelos criados com o MLflow 3 são registrados no registro do modelo do Unity Catalog, você pode visualizar dados como parâmetros e métricas em um local central, em todos os experimentos e espaços de trabalho. Para obter informações, consulte Aprimoramentos do Registro de modelo com o MLflow 3.
Para registrar um modelo usando a API, use o seguinte comando:
MLflow 3
mlflow.register_model("models:/{model_id}", "{registered_model_name}")
MLflow 2.x
mlflow.register_model("runs:/{run_id}/{model-path}", "{registered-model-name}")
Salvar modelos em volumes do Catálogo Unity
Para salvar um modelo localmente, use mlflow.<model-type>.save_model(model, modelpath).
modelpath deve ser um caminho de volumes do Catálogo Unity . Por exemplo, se utilizares uma localização de volumes do Catálogo Unity designada por dbfs:/Volumes/catalog_name/schema_name/volume_name/my_project_models para armazenar o teu trabalho de projeto, deverás usar o caminho do modelo /dbfs/Volumes/catalog_name/schema_name/volume_name/my_project_models:
modelpath = "/dbfs/Volumes/catalog_name/schema_name/volume_name/my_project_models/model-%f-%f" % (alpha, l1_ratio)
mlflow.sklearn.save_model(lr, modelpath)
Para modelos MLlib, use ML Pipelines.
Baixar artefatos de modelo
Você pode baixar os artefatos de modelo registrados (como arquivos de modelo, gráficos e métricas) para um modelo registrado com várias APIs.
mlflow.set_registry_uri("databricks-uc")
mlflow.artifacts.download_artifacts(f"models:/{model_name}/{model_version}")
MlflowClient mlflowClient = new MlflowClient();
// Get the model URI for a registered model version.
String modelURI = mlflowClient.getModelVersionDownloadUri(modelName, modelVersion);
// Or download the model artifacts directly.
File modelFile = mlflowClient.downloadModelVersion(modelName, modelVersion);
mlflow artifacts download --artifact-uri models:/<name>/<version|stage>
Implantar modelos para atendimento online
Observação
Antes de implantar seu modelo, é benéfico verificar se o modelo é capaz de ser servido. Consulte a documentação do MLflow para saber como pode usar o mlflow.models.predict para validar modelos antes da implementação.
Use Mosaic AI Model Serving para hospedar modelos de aprendizado de máquina registrados no registro de modelo do Unity Catalog como pontos de extremidade REST. Esses pontos de extremidade são atualizados automaticamente com base na disponibilidade das versões do modelo.