Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Neste artigo, irá aprender a incluir bibliotecas personalizadas ou bibliotecas de um servidor espelho privado ao registar o seu modelo, para que possa usá-las com implantações de modelos na Mosaic AI. 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 Servir de Modelos do Azure Databricks.
O desenvolvimento de modelos geralmente requer o uso de bibliotecas Python personalizadas 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 à cadeia de suprimentos. O Azure Databricks oferece suporte nativo para a instalação de bibliotecas personalizadas e bibliotecas a partir de um espelho privado no espaço de trabalho do Azure Databricks.
Requisitos
- MLflow 1.29 ou superior
- Restrinja o acesso de saída à rede a partir de pontos de extremidade do Model Serving configurando políticas de rede. Consulte Validar com a disponibilização de modelos.
Opção 1: Usar um repositório privado de pacotes
Use a Opção 1 se a sua organização usar um espelho privado PyPI (como Nexus ou Artifactory). Os administradores do espaço de trabalho podem configurá-lo como repositório de pacotes predefinido para o espaço de trabalho. O Model Serving utiliza automaticamente esta configuração ao nível do espaço de trabalho ao construir o seu ambiente de modelo.
Para configurar um repositório privado de pacotes, consulte Configurar repositórios de pacotes Python predefinidos.
Depois de configurado, proceda a Servir o seu modelo.
Opção 2: Empacotar bibliotecas personalizadas como ficheiros wheel
Use a Opção 2 se um espelho privado PyPI não estiver acessível, ou se tiver bibliotecas personalizadas que não estão disponíveis em nenhum repositório de pacotes. Podes embalá-los como ficheiros de roda Python e incluí-los ao registar o teu modelo.
Passo 1: Carregue o seu ficheiro de dependência
O Databricks recomenda que carregues o teu arquivo de dependência nos volumes do Catálogo Unity. Como alternativa, você pode carregá-lo no Sistema de Arquivos Databricks (DBFS) usando a interface do usuário do Azure Databricks.
Para garantir que a sua biblioteca esteja disponível no seu computador portátil, é necessário instalá-la usando %pip. Usar %pip instala a biblioteca no caderno atual e descarrega a dependência para o cluster.
Etapa 2: Registrar o modelo com uma biblioteca personalizada
Depois de instalar a biblioteca e carregar o arquivo de roda Python para volumes do Catálogo Unity ou DBFS, inclua o código a seguir no script. No campo extra_pip_requirements especifique o caminho do seu ficheiro 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 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 extra_pip_requirements parâmetros ou conda_env em log_model().
Importante
Se estiver usando DBFS, certifique-se de incluir uma barra para frente, /, antes do caminho dbfs ao registrar extra_pip_requirements. Saiba mais sobre caminhos DBFS em Trabalhar com arquivos no Azure Databricks.
from mlflow.utils.environment import _mlflow_conda_env
mlflow.pyfunc.log_model(
name="model",
python_model=MyModel(),
extra_pip_requirements=["/volumes/path/to/dependency"],
)
Se a sua biblioteca personalizada estiver armazenada em algum lugar diferente de um volume ou DBFS, poderá especificar o seu local usando o parâmetro code_paths, e passar "code/<wheel-file-name>.whl" no parâmetro extra_pip_requirements.
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 de 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 de roda Python. Isso empacota suas bibliotecas personalizadas juntamente com o modelo, além de todas as outras bibliotecas que são especificadas como dependências do seu modelo. Isso garante que as bibliotecas usadas pelo seu modelo sejam exatamente as acessíveis a partir do seu ambiente de treinamento.
No exemplo a seguir, model_uri faz referência ao registro do modelo Unity Catalog usando a sintaxe models:/<uc-model>/<model-version>. Para fazer referência ao uso do registro do modelo de espaço de trabalho (legado), models:/<model-name>/<model-version>.
Quando você usa o URI do registro 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>)
Sirva o seu modelo
Quando uma nova versão do modelo com os pacotes incluídos estiver disponível no registo do modelo, pode adicionar essa versão do modelo a um ponto de extremidade com Model Serving.
Instalação do pacote de resolução de problemas
Se a implementação do seu modelo falhar durante a fase de compilação, pode rever os registos de compilação para identificar problemas de instalação de pacotes.
- Vai à página de Serviço no teu espaço de trabalho Azure Databricks.
- Clique no nome do seu endpoint para abrir os detalhes do endpoint.
- Clique na aba Registos.
- Seleciona a versão falhada no menu suspenso.
- Clica em Construir registos.
Revise as mensagens de erro para identificar o problema.
Depois de resolver o problema, crie uma nova implementação ou atualize o seu endpoint para desencadear uma nova compilação.
Resolução de problemas do repositório privado de pacotes
Se estiver a usar um repositório privado de paquetes, os problemas comuns incluem:
- Pacotes em falta: O pacote não está disponível no seu repositório configurado. Adicione o pacote necessário ao seu repositório privado.
- Problemas de ligação: O Model Serving não consegue aceder ao seu repositório de pacotes. 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 expiradas. Atualize os segredos na configuração do seu espaço de trabalho.
Os notebooks sem servidor usam o mesmo repositório de pacotes padrão configurado para o seu espaço de trabalho. Pode usar um notebook digital para testar a conectividade, autenticação e disponibilidade de pacotes, instalando os requisitos a partir do ficheiro requirements.txt do seu modelo antes de implementar no Model Serving.
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!")