Use bibliotecas Python personalizadas com Model Serving

Prévia

O Mosaic AI Model Serving está em Public Preview e é compatível com os sites us-east1 e us-central1.

Neste artigo, você aprenderá a incluir biblioteca personalizada ou biblioteca de um servidor espelho privado ao acessar log seu modelo, para que possa usá-las com Mosaic AI Model Serving implantações de modelos. O senhor deve concluir os passos detalhados neste guia depois de ter um ML modelo treinado e pronto para ser implantado, mas antes de criar um modelo Databricks endpointservindo.

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

Databricks recomenda que o senhor upload seu arquivo de dependência para Unity Catalog volumes. Como alternativa, o senhor pode upload para Databricks File System (DBFS ) usando a interface do usuário 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 do Unity Catalog usando a sintaxe models:/<uc-model>/<model-version>. Para consultar o workspace registro de modelo (legado), use 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.