Pular para o conteúdo principal

Usar Python biblioteca personalizada com o modelo servindo

Neste artigo, você aprenderá como incluir uma biblioteca personalizada ou uma biblioteca de um servidor espelho privado ao log seu modelo, para que possa usá-las com implantações de modelos de serviço . Você deve concluir os passos detalhados neste guia depois de ter um modelo ML treinado e pronto para implantação, mas antes de criar um endpointde modelo de serviço Databricks .

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

  • Restrinja o acesso à rede de saída do endpoint do modelo de serviço configurando políticas de rede. Consulte Validar com servindo modelo.

Opção 1: Use um repositório de pacote privado​

Use a Opção 1 se sua organização utiliza um espelho PyPI privado (como Nexus ou Artifactory). Os administradores do espaço de trabalho podem configurá-lo como o repositório de pacotes default para o workspace. Servindo o modelo usa automaticamente essa configuração de nível workspaceao construir seu ambiente de modelo.

Para configurar um repository de pacote privado, consulte Configurar repositórios de pacote default.

Após configurar o repository, prossiga para Servir seu modelo.

Opção 2: pacote biblioteca personalizada como arquivos wheel​

Use a Opção 2 se um espelho PyPI privado não estiver acessível ou se você tiver bibliotecas personalizadas que não estejam disponíveis em nenhum repositório de pacotes. Você pode empacotá-los como arquivos Python wheel e incluí-los ao registrar os logs do seu modelo.

Passo 1: faça o upload do seu 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​

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.

Python
mlflow.sklearn.log_model(model, "sklearn-model", extra_pip_requirements=["/volumes/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().

Python
from mlflow.utils.environment import _mlflow_conda_env

mlflow.pyfunc.log_model(
name="model",
python_model=MyModel(),
extra_pip_requirements=["/volumes/path/to/dependency.whl"],
)

Se a biblioteca personalizada estiver armazenada em outro local que não seja um volume ou DBFS, o senhor poderá especificar o local usando o parâmetro code_paths e passar "code/<wheel-file-name>.whl" no parâmetro extra_pip_requirements.

Python
mlflow.pyfunc.log_model(
name="model",
python_model=MyModel(),
code_paths=["/path/to/dependency.whl"], # This will be logged as `code/dependency.whl`
extra_pip_requirements=["code/dependency.whl"],
)

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.

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

Sirva sua 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.

Solução de problemas na instalação do pacote​

Se a implantação do seu modelo falhar durante a fase de compilação, você pode revisar os logs de compilação para identificar problemas de instalação do pacote.

  1. Acesse a página "Serving" (Servindo) no seu workspace Databricks .
  2. Clique no nome do seu endpoint para abrir os detalhes do endpoint.
  3. Clique na tab de registros .
  4. Selecione a versão com falha no menu suspenso.
  5. Clique em logsde compilação .

Analise as mensagens de erro para identificar o problema.

Após resolver o problema, crie uma nova implantação ou atualize seu endpoint para acionar uma nova compilação.

Solucionar problemas de repositório de pacote privado​

Se você estiver usando um repositório de pacotes privado, os problemas comuns incluem:

  • Pacote ausente : O pacote não está disponível no seu repositório configurado. Adicione o pacote necessário ao seu repositório privado.
  • Problemas de conexão : o modelo de transferência não consegue acessar seu repositório de pacote. Verifique a conectividade da rede e as regras do firewall.
  • Falhas de autenticação : As credenciais configuradas para o seu repositório não são válidas ou expiraram. Atualize os segredos na configuração do seu workspace .

O Notebook sem servidor usa o mesmo pacote repositório default configurado para seu workspace. Você pode usar um Notebook para testar a conectividade, autenticação e disponibilidade de pacotes instalando os requisitos do arquivo requirements.txt do seu modelo antes de implantá-lo no modelo de serviço.

Python
import mlflow
import subprocess
import sys

# Step 1: Set your model details
catalog = "<your_catalog>"
schema = "<your_schema>"
model_name = "<your_model>"
version = <your_version>

# Step 2: Download the model's requirements.txt
full_model_name = f"{catalog}.{schema}.{model_name}"
requirements_uri = f"models:/{full_model_name}/{version}/requirements.txt"

print(f"Downloading artifacts from: {requirements_uri}")
local_path = mlflow.artifacts.download_artifacts(requirements_uri)

# Step 3: Print the requirements
with open(local_path, "r") as f:
print(f.read())

# Step 4: Install the requirements using the workspace's default package repository
print(f"Installing requirements from {local_path}...")
subprocess.check_call([sys.executable, "-m", "pip", "install", "-r", local_path])
print("Installation complete!")