Compartilhar via


Usar bibliotecas do Python personalizadas com Serviço de Modelo

Neste artigo, você aprenderá a incluir bibliotecas ou bibliotecas personalizadas de um servidor espelho privado ao registrar seu modelo em log, para que você possa usá-las com implantações de modelo do Serviço de Modelo. Você deve concluir as etapas detalhadas neste guia depois de ter um modelo de ML treinado pronto para implantação, mas antes de criar um ponto de extremidade de Serviço de Modelo do Azure Databricks.

O desenvolvimento de modelo geralmente requer o uso de bibliotecas personalizadas do Python que contêm funções para pré ou pós-processamento, definições de modelo personalizadas e outros utilitários compartilhados. Além disso, muitas equipes de segurança corporativa incentivam o uso de espelhos PyPi privados, como Nexus ou Artifactory, para reduzir o risco de ataques na cadeia de suprimentos. O Azure Databricks oferece suporte nativo para instalação de bibliotecas e bibliotecas personalizadas de um espelho privado no workspace do Azure Databricks.

Requisitos

  • MLflow 1.29 ou superior

Etapa 1: Carregar arquivo de dependência

O Databricks recomenda que você carregue seu arquivo de dependência em volumes do Catálogo do Unity. Como alternativa, você pode carregá-lo no Sistema de Arquivos do Databricks (DBFS) usando a interface do usuário do Azure Databricks.

Para garantir que sua biblioteca esteja disponível para seu notebook, você precisa instalá-la usando %pip%. O uso de %pip instala a biblioteca no notebook atual e baixa a dependência para o cluster.

Etapa 2: Registrar o modelo em log com uma biblioteca personalizada

Importante

As diretrizes nesta seção não serão necessárias se você instalar a biblioteca privada apontando para um espelho PyPi personalizado.

Depois de instalar a biblioteca e carregar o arquivo wheel para volumes do Catálogo do Unity ou DBFS, inclua o código a seguir em seu script. Em extra_pip_requirements, especifique o caminho do arquivo de dependência.

mlflow.sklearn.log_model(model, "sklearn-model", extra_pip_requirements=["/volume/path/to/dependency.whl"])

Para o DBFS, use o seguinte:

mlflow.sklearn.log_model(model, "sklearn-model", extra_pip_requirements=["/dbfs/path/to/dependency.whl"])

Se você tiver uma biblioteca personalizada, deverá especificar todas as bibliotecas Python personalizadas associadas ao seu modelo ao configurar o log. Você pode fazer isso com os parâmetros extra_pip_requirements ou conda_env no log_model().

Importante

Se estiver usando DBFS, certifique-se de incluir uma barra, /, antes do seu caminho dbfs ao registrar em log extra_pip_requirements. Saiba mais sobre caminhos do DBFS em Trabalhar com arquivos no Azure Databricks.

from mlflow.utils.environment import _mlflow_conda_env
conda_env =  _mlflow_conda_env(
            additional_conda_deps= None,
            additional_pip_deps= ["/volumes/path/to/dependency"],
            additional_conda_channels=None,
)
mlflow.pyfunc.log_model(..., conda_env = conda_env)

Etapa 3: atualizar o modelo MLflow com arquivos roda Python

MLflow fornece o utilitário add_libraries_to_model() para registrar seu modelo com todas as suas dependências pré-empacotadas como arquivos roda Python. Ele empacota suas bibliotecas personalizadas junto com o modelo, além de todas as outras bibliotecas especificadas como dependências do seu modelo. Isso garante que as bibliotecas usadas pelo seu modelo sejam exatamente as acessíveis em seu ambiente de treinamento.

No exemplo a seguir, model_uri faz referência ao registro de modelo usando a sintaxe models:/<model-name>/<model-version>.

Quando você usa o URI do registro de modelo, esse utilitário gera uma nova versão em seu modelo registrado existente.

import mlflow.models.utils
mlflow.models.utils.add_libraries_to_model(<model-uri>)

Etapa 4: Fornecer seu modelo

Quando uma nova versão de modelo com os pacotes incluídos estiver disponível no registro de modelo, você poderá adicionar essa versão de modelo a um ponto de extremidade com o Serviço de Modelo.