Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Pokyny v tomto článku vám můžou pomoct zachytit problémy s modelem před čekáním na proces nasazení koncového bodu. Databricks doporučuje projít tyto kroky ověřování, aby se zajistilo lepší vývojové prostředí při používání obsluhy modelů.
Testování předpovědí před nasazením
Před nasazením modelu do obsluhujícího koncového bodu otestujte offline předpovědi s virtuálním prostředím pomocí mlflow.models.predict a vstupních příkladů. MLflow poskytuje rozhraní API pro ověřování, která simulují prostředí nasazení a umožňují testování upravených závislostí.
Existují dvě možnosti ověřování před nasazením: rozhraní PYTHON API MLflow a rozhraní příkazového řádku MLflow. Podrobnější pokyny najdete v dokumentaci MLflow k testování předpovědí.
Můžete zadat následující parametry:
- Model
model_uri, který se nasadí do obsluhy modelu. - Jedna z následujících možností:
- Očekávaný
input_dataformát volánímlflow.pyfunc.PyFuncModel.predict()modelu. - Ten
input_pathdefinuje soubor obsahující vstupní data, která budou načtena a použita pro volánípredict.
- Očekávaný
- Formát
content_typenebo incsv.json - Volitelné
output_pathpro zápis předpovědí do souboru. Pokud tento parametr vynecháte, předpovědi se vytisknou nastdout. - Správce prostředí,
env_managerkterý se používá k sestavení prostředí pro obsluhu:- Výchozí hodnota je
virtualenv. Doporučuje se pro obsluhu ověření. -
localje k dispozici, ale potenciálně náchylná k chybám pro obsluhu ověřování. Obecně se používá pouze pro rychlé ladění.
- Výchozí hodnota je
- Zda nainstalovat aktuální verzi MLflow, která je ve vašem prostředí s virtuálním prostředím pomocí
install_mlflow. Toto nastavení je ve výchozím nastavení nastaveno naFalsehodnotu . - Ať už chcete aktualizovat a otestovat různé verze závislostí balíčků, pro řešení potíží nebo ladění. Můžete to zadat jako seznam přepsání nebo přidání řetězcových závislostí pomocí argumentu override,
pip_requirements_override.
Například:
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"],
)
Aktualizace závislostí modelu
Pokud dojde k nějakým problémům se závislostmi zadanými v protokolovaném modelu, můžete požadavky aktualizovat pomocí rozhraní příkazového řádku MLflow nebo mlflow.models.model.update_model_requirements() v rozhraní PYTHON API MLflow, aniž byste museli protokolovat jiný model.
Následující příklad ukazuje, jak aktualizovat pip_requirements.txt protokolovaný model na místě.
Existující definice můžete aktualizovat pomocí zadaných verzí balíčků nebo do souboru pip_requirements.txt přidat neexistující požadavky. Tento soubor se nachází v artefaktu modelu MLflow v zadaném model_uri umístění.
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"],
)
ověření vstupu modelu před nasazením
Model obsluhující koncové body očekává speciální formát vstupu JSON. Pomocí validate_serving_input v MLflow můžete před nasazením ověřit, že vstup modelu funguje na obslužném koncovém bodu.
Dále uvádíme příklad automaticky vytvořeného kódu v záložce artefaktů spuštění, pokud je váš model protokolován s vzorovým příkladem vstupu.
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)
Pomocí rozhraní convert_input_example_to_serving_input API můžete také otestovat všechny vstupní příklady proti protokolovanému modelu a vygenerovat platný JSON pro obslužný vstup.
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)
Ruční testování obsluhy modelu
Chování modelu můžete ručně otestovat pomocí následujícího postupu:
- Otevřete poznámkový blok a připojte se ke clusteru pro všechny účely, který používá verzi Databricks Runtime, nikoli Databricks Runtime pro Machine Learning.
- Načtěte model pomocí MLflow a zkuste ho odsud ladit.
Model můžete také načíst místně na počítači a ladit ho odsud. Načtěte model místně pomocí následujícího příkazu:
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)