Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
As diretrizes neste artigo podem ajudá-lo a detectar problemas com seu modelo antes de iniciar o processo de implantação do endpoint. O Databricks recomenda passar por essas etapas de validação para garantir uma melhor experiência de desenvolvimento ao usar o serviço de modelo.
Testar previsões antes da implantação
Antes de implantar seu modelo no endpoint de serviço, teste, em um ambiente virtual, previsões offline usando mlflow.models.predict e exemplos de entrada. O MLflow fornece APIs de validação que simulam o ambiente de implantação e permitem o teste de dependências modificadas.
Há duas opções de validação de pré-implantação: a API do Python do MLflow e a CLI do MLflow. Consulte a documentação do MLflow para testar previsões para obter diretrizes mais detalhadas.
Você pode especificar os seguintes parâmetros:
- O
model_urido modelo que é implantado para o serviço do modelo. - Um dos seguintes:
- O
input_datano formato esperado para a chamadamlflow.pyfunc.PyFuncModel.predict()do modelo. - O
input_pathque define um arquivo que contém dados de entrada que serão carregados e usados para a chamada parapredict.
- O
- O
content_typeno formatocsvoujson. - Um
output_pathopcional para gravar as previsões em um arquivo. Se você omitir esse parâmetro, as previsões serão impressas emstdout. - Um gerenciador de ambiente,
env_managerque é usado para criar o ambiente para servir:- O padrão é
virtualenv. Recomendado para servir a validação. -
localestá disponível, mas potencialmente propenso a erros para a validação de serviço. Geralmente usado apenas para depuração rápida.
- O padrão é
- Se deseja instalar a versão atual do MLflow que está em seu ambiente com o ambiente virtual usando
install_mlflow. Essa configuração usaFalsecomo padrão. - Se deve atualizar e testar diferentes versões de dependências de pacotes para solução de problemas ou depuração. Você pode especificar isso como uma lista de substituições ou adições de dependência de cadeia de caracteres usando o argumento de substituição,
pip_requirements_override.
Por exemplo:
import mlflow
run_id = "..."
model_uri = f"runs:/{run_id}/model"
mlflow.models.predict(
model_uri=model_uri,
input_data={"col1": 34.2, "col2": 11.2, "col3": "green"},
content_type="json",
env_manager="virtualenv",
install_mlflow=False,
pip_requirements_override=["pillow==10.3.0", "scipy==1.13.0"],
)
Atualizar dependências de modelo
Se houver problemas com as dependências especificadas com um modelo registrado, você poderá atualizar os requisitos usando a CLI do MLflow ou a API do Python do MLflow sem precisar registrar novamente um modelo.
O exemplo a seguir mostra como atualizar o pip_requirements.txt de um modelo registrado diretamente.
Você pode atualizar definições existentes com versões de pacote especificadas ou adicionar requisitos inexistentes ao arquivo pip_requirements.txt. Esse arquivo está dentro do artefato do modelo MLflow no local de model_uri especificado.
from mlflow.models.model import update_model_requirements
update_model_requirements(
model_uri=model_uri,
operation="add",
requirement_list=["pillow==10.2.0", "scipy==1.12.0"],
)
Validar a entrada do modelo antes da implantação
Os endpoints de serviço de modelo requerem um formato especial de entrada JSON. Você pode validar se a entrada do modelo funciona em um endpoint de serviço antes da implantação usando validate_serving_input no MLflow.
Veja a seguir um exemplo do código gerado automaticamente na aba de artefatos da execução, se o modelo estiver registrado com um exemplo de entrada válido.
from mlflow.models import validate_serving_input
model_uri = 'runs:/<run_id>/<artifact_path>'
serving_payload = """{
"messages": [
{
"content": "How many product categories are there?",
"role": "user"
}
]
}
"""
# Validate the serving payload works on the model
validate_serving_input(model_uri, serving_payload)
Você também pode testar quaisquer exemplos de entrada no modelo registrado usando a convert_input_example_to_serving_input API para gerar uma entrada de serviço JSON válida.
from mlflow.models import validate_serving_input
from mlflow.models import convert_input_example_to_serving_input
model_uri = 'runs:/<run_id>/<artifact_path>'
# Define INPUT_EXAMPLE with your own input example to the model
# A valid input example is a data instance suitable for pyfunc prediction
serving_payload = convert_input_example_to_serving_input(INPUT_EXAMPLE)
# Validate the serving payload works on the model
validate_serving_input(model_uri, serving_payload)
Testar manualmente o serviço do modelo
Você pode testar manualmente o comportamento de serviço do modelo usando as seguintes etapas:
- Abra um notebook e anexe a um cluster para todos os fins que usa uma versão do Databricks Runtime, não o Databricks Runtime para Machine Learning.
- Carregue o modelo usando o MLflow e tente depurar a partir daí.
Você também pode carregar o modelo localmente em seu computador e depurar a partir daí. Carregue seu modelo localmente usando o seguinte:
import os
import mlflow
os.environ["MLFLOW_TRACKING_URI"] = "databricks://PROFILE"
ARTIFACT_URI = "model_uri"
if '.' in ARTIFACT_URI:
mlflow.set_registry_uri('databricks-uc')
local_path = mlflow.artifacts.download_artifacts(ARTIFACT_URI)
print(local_path)
conda env create -f local_path/artifact_path/conda.yaml
conda activate mlflow-env
mlflow.pyfunc.load_model(local_path/artifact_path)