Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Le indicazioni contenute in questo articolo consentono di rilevare i problemi relativi al modello prima di attendere il processo di distribuzione dell'endpoint. Databricks consiglia di eseguire questi passaggi di convalida per garantire un'esperienza di sviluppo migliore quando si usa la gestione del modello.
Testare le stime prima della distribuzione
Prima di distribuire il modello all'endpoint di servizio, testa le predizioni offline in un ambiente virtuale utilizzando mlflow.models.predict ed esempi di input. MLflow fornisce API di convalida che simulano l'ambiente di distribuzione e consentono il test delle dipendenze modificate.
Sono disponibili due opzioni di convalida pre-distribuzione: l'API Python MLflow e la riga di comando MLflow. Per indicazioni più dettagliate, vedere la documentazione di MLflow per testare le previsioni.
È possibile specificare i parametri seguenti:
- Oggetto
model_uridel modello distribuito nella gestione del modello. - Uno dei seguenti:
- Oggetto
input_datanel formato previsto per lamlflow.pyfunc.PyFuncModel.predict()chiamata del modello. - Oggetto
input_pathche definisce un file contenente i dati di input che verranno caricati e usati per la chiamata apredict.
- Oggetto
- Il formato
content_typeincsvojson. - Facoltativo
output_pathper scrivere le stime in un file. Se si omette questo parametro, le stime vengono stampate instdout. - Gestore dell'ambiente,
env_manager, usato per compilare l'ambiente per la gestione:- Il valore predefinito è
virtualenv. Consigliato per la convalida. -
localè disponibile, ma potenzialmente soggetto a errori per la gestione della convalida. In genere viene usato solo per il debug rapido.
- Il valore predefinito è
- Se si desidera installare la versione corrente di MLflow presente nell’ambiente con l'ambiente virtuale utilizzando
install_mlflow. L'impostazione predefinita èFalse. - Se aggiornare e testare versioni diverse delle dipendenze del pacchetto per la risoluzione dei problemi o il debug. È possibile specificare questa opzione come elenco di sostituzioni o aggiunte di dipendenze di stringa usando l'argomento override
pip_requirements_override.
Per esempio:
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"],
)
Aggiornare le dipendenze del modello
Se si verificano problemi con le dipendenze specificate con un modello registrato, è possibile aggiornare i requisiti usando l'interfaccia della riga di comando di MLflow o mlflow.models.model.update_model_requirements() nell'API Python MLflow senza dover registrare un altro modello.
Nell'esempio seguente viene illustrato come aggiornare l'oggetto pip_requirements.txt di un modello registrato direttamente.
È possibile aggiornare le definizioni esistenti con le versioni del pacchetto specificate o aggiungere requisiti inesistenti al file di pip_requirements.txt. Questo file si trova all’interno dell'artefatto del modello MLflow nel percorso specificato 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"],
)
Convalidare l'input del modello prima della distribuzione
I modelli che servono gli endpoint prevedono un formato speciale di input JSON. È possibile verificare che l'input del modello funzioni su un endpoint di servizio prima della distribuzione usando validate_serving_input in MLflow.
Di seguito è riportato un esempio del codice generato automaticamente nella scheda artefatti dell'esecuzione se il modello viene registrato con un esempio di input valido.
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)
È anche possibile testare qualsiasi esempio di input rispetto al modello registrato usando l'API convert_input_example_to_serving_input per generare un input di gestione JSON valido.
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)
Testare manualmente la gestione del modello
È possibile testare manualmente il comportamento di gestione del modello attenendosi alla procedura seguente:
- Aprire un notebook e collegarsi a un cluster all-purpose che usa una versione di Databricks Runtime, non Databricks Runtime per Machine Learning.
- Caricare il modello usando MLflow e provare a eseguire il debug da questa posizione.
È anche possibile caricare il modello in locale nel PC ed eseguire il debug da questa posizione. Caricare il modello in locale usando quanto segue:
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)