Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
As orientações deste artigo podem ajudá-lo a detetar problemas com o seu modelo antes de esperar pelo processo de implementação do endpoint. A Databricks recomenda passar por estes passos de validação para garantir uma melhor experiência de desenvolvimento ao utilizar o serviço de modelos.
Testar previsões antes da implantação
Antes de implantar o seu modelo no endpoint de serviço, teste previsões offline com um ambiente virtual usando exemplos de entrada e de mlflow.models.predict. 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 pré-implantação: a API Python MLflow e a CLI MLflow. Consulte a documentação do MLflow em sobre testar previsões em para obter orientações mais detalhadas.
Você pode especificar os seguintes parâmetros:
- O
model_urido modelo que é implantado para servir o modelo. - Um dos seguintes:
- O
input_datano formato esperado para amlflow.pyfunc.PyFuncModel.predict()chamada do modelo. - O
input_pathque define um arquivo contendo dados de entrada que serão carregados e usados para a chamada parapredict.
- O
- O
content_typeemcsvoujsonformato. - Um opcional
output_pathpara 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_manager, que é usado para construir o ambiente para servir:- A predefinição é
virtualenv. Recomendado para validação de serviço. -
localestá disponível, mas potencialmente propenso a erros para servir a validação. Geralmente usado apenas para depuração rápida.
- A predefinição é
- Se deseja instalar a versão atual do MLflow que está em seu ambiente com o ambiente virtual usando
install_mlflowo . O padrão desta configuração éFalse. - Se deseja atualizar e testar diferentes versões de dependências de pacote 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 do modelo
Se houver algum problema com as dependências especificadas com um modelo registrado, você poderá atualizar os requisitos usando a CLI MLflow ou mlflow.models.model.update_model_requirements() na API Python MLflow sem precisar registrar outro modelo.
O exemplo a seguir mostra como atualizar o pip_requirements.txt de um modelo registado diretamente.
Você pode atualizar as 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 especificado model_uri .
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 pontos finais de disponibilização de modelos esperam um formato especial de entrada JSON. Pode validar que a entrada do seu modelo funciona num endpoint de serviço antes da implantação usando validate_serving_input no MLflow.
Segue-se um exemplo do código gerado automaticamente no separador de artefactos da execução se o seu modelo for registado 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)
Também pode testar quaisquer exemplos de entrada contra o modelo registado usando a convert_input_example_to_serving_input API para gerar um JSON de entrada válido para processamento.
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 a implementação do modelo
Pode testar manualmente o comportamento de serviço do modelo usando os seguintes passos:
- Abra um bloco de anotações e anexe a um cluster multiuso que usa uma versão do Databricks Runtime, não do Databricks Runtime for Machine Learning.
- Carregue o modelo usando MLflow e tente depurar a partir daí.
Você também pode carregar o modelo localmente no seu PC 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)