Use bibliotecas Python personalizadas com Model Serving

Neste artigo, você aprenderá como incluir bibliotecas personalizadas ou bibliotecas de um servidor espelho privado ao logs seu modelo, para que possa usá-las com implantações de modelo Model Serving . Você deve concluir as passos detalhadas neste guia depois de ter um modelo de ML treinado pronto para ser aprimorado, mas antes de criar um ponto de extremidade do DatabricksModel Serving .

O desenvolvimento de modelo geralmente requer o uso de bibliotecas Python personalizadas que contêm funções para pré ou pós-processamento, definições de modelo personalizado e outras utilidades compartilhadas. 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 à cadeia de suprimentos. O Databricks oferece suporte nativo para instalação de bibliotecas personalizadas e bibliotecas de um espelho privado no workspace do Databricks.

Requisitos

  • MLflow 1.29 ou superior

o passo 1: Carregar arquivo de dependência

A Databricks recomenda que você upload seu arquivo de dependência nos volumes do Unity Catalog. Como alternativa, você pode upload lo no Databricks File System (DBFS) usando a UI do Databricks.

Para garantir que sua biblioteca esteja disponível em seu Notebook, você precisa instalá-la usando %pip%. O uso de %pip instala a biblioteca no Notebook atual e downloads da dependência para os clusters.

passo 2: logs o modelo com uma biblioteca personalizada

Importante

A orientação nesta seção não é necessária se você instalar a biblioteca privada apontando para um espelho PyPi personalizado.

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

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

Para DBFS, use o seguinte:

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

Se o senhor tiver uma biblioteca personalizada, deverá especificar todas as bibliotecas Python personalizadas associadas ao seu modelo ao configurar o registro. O senhor pode fazer isso com os parâmetros extra_pip_requirements ou conda_env em logs().

Importante

Se estiver usando DBFS, certifique-se de incluir uma barra, /, antes do caminho dbfs ao registrar extra_pip_requirements. Saiba mais sobre caminhos DBFS em Trabalhar com arquivos no 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)

o passo 3: Atualizar o modelo MLflow com os arquivos Python wheel

MLflow fornece os utilitários add_libraries_to_model() para log seu modelo com todas as dependências pré-pacote como arquivos Python wheel. Isso coloca sua biblioteca personalizada 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 aquelas acessíveis a partir do 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 de registro de modelo, essas utilidades geram uma nova versão em seu modelo registrado existente.

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

passo 4: Sirva 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 endpoint com Model Serving.