Usar Python biblioteca personalizada com o modelo servindo
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 as etapas detalhadas 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 modelos geralmente requer o uso de Python biblioteca personalizada que contém funções para pré ou pós-processamento, definições de modelos personalizados 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. Databricks oferece suporte nativo para a instalação de biblioteca personalizada e biblioteca de um espelho privado no site Databricks workspace.
Requisitos
- MLflow 1.29 ou superior
Etapa 1: Fazer upload do 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 para o Notebook, o senhor precisa instalá-la usando %pip%
. O uso de %pip
instala a biblioteca no Notebook atual e downloads a dependência para o agrupamento.
Etapa 2: registrar o modelo com uma biblioteca personalizada
A orientação nesta seção não é necessária se o usuário instalar a biblioteca privada apontando para um espelho personalizado do PyPi.
Depois de instalar a biblioteca e upload o arquivo Python wheel para os volumes Unity Catalog ou DBFS, inclua o seguinte código em seu script. No 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 Python bibliotecas 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().
Se estiver usando o DBFS, certifique-se de incluir uma barra, /
, antes do caminho dbfs
ao registrar extra_pip_requirements
. Saiba mais sobre os caminhos do DBFS em Work with files on 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 Python wheel
MLflow fornece os utilitários add_libraries_to_model() para log seu modelo com todas as suas dependências pré-pacote como arquivos Python wheel. Isso inclui 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 o senhor usa o URI de registro de modelo, esse utilitário gera uma nova versão sob o modelo registrado existente.
import mlflow.models.utils
mlflow.models.utils.add_libraries_to_model(<model-uri>)
Etapa 4: sirva seu modelo
Quando uma nova versão de modelo com o pacote incluído estiver disponível no registro de modelo, o senhor poderá adicionar essa versão de modelo a um endpoint com servindo modelo.