Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Vägledningen i den här artikeln kan hjälpa dig att fånga upp problem med din modell innan du väntar på slutpunktsdistributionsprocessen. Databricks rekommenderar att du går igenom dessa valideringssteg för att säkerställa en bättre utvecklingsupplevelse när du använder modellservering.
Testa förutsägelser före distribution
Innan du distribuerar din modell till tjänstslutpunkten ska du testa offlineförutsägelser i en virtuell miljö med mlflow.models.predict och indataexempel. MLflow tillhandahåller validerings-API:er som simulerar distributionsmiljön och tillåter testning av ändrade beroenden.
Det finns två valideringsalternativ före distributionen: MLflow Python API och MLflow CLI. Mer detaljerad vägledning finns i MLflow-dokumentation för att testa förutsägelser.
Du kan ange följande parametrar:
- Den
model_urimodell som distribueras till modellservern. - Något av följande:
- I
input_datadet förväntade formatet för anropetmlflow.pyfunc.PyFuncModel.predict()av modellen. - Som
input_pathdefinierar en fil som innehåller indata som ska läsas in och användas för anropet tillpredict.
- I
- I
content_typecsv- eller-formatetjson. - Ett valfritt
output_pathalternativ för att skriva förutsägelserna till en fil. Om du utelämnar den här parametern skrivs förutsägelserna ut tillstdout. - En miljöhanterare,
env_manager, som används för att skapa miljön för att betjäna:- Standardvärdet är
virtualenv. Rekommenderas för att hantera validering. -
localär tillgänglig, men potentiellt felbenägen för att hantera validering. Används vanligtvis endast för snabb felsökning.
- Standardvärdet är
- Om du vill installera den aktuella versionen av MLflow som finns i din miljö med den virtuella miljön med hjälp av
install_mlflow. Den här inställningen ärFalsesom standard . - Om du vill uppdatera och testa olika versioner av paketberoenden för felsökning eller avlusning. Du kan ange detta som en lista över åsidosättningar eller tillägg för strängberoende med hjälp av åsidosättningsargumentet
pip_requirements_override.
Till exempel:
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"],
)
Uppdatera modellberoenden
Om det finns problem med de beroenden som anges med en loggad modell kan du uppdatera kraven med hjälp av MLflow CLI eller mlflow.models.model.update_model_requirements() I MLflow Python API utan att behöva logga en annan modell.
I följande exempel visas hur du uppdaterar en loggad modell pip_requirements.txt på plats.
Du kan uppdatera befintliga definitioner med angivna paketversioner eller lägga till icke-existerande krav i filen pip_requirements.txt. Den här filen finns i MLflow-modellartefakten på den angivna model_uri platsen.
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"],
)
Verifiera modellindata före distribution
Modell som betjänar slutpunkter förväntar sig ett särskilt format för JSON-indata. Du kan validera att dina modellindata fungerar på en slutpunkt för tjänstgöring innan du implementerar genom att använda validate_serving_input i MLflow.
Följande är ett exempel på den automatiskt genererade koden på fliken körningsartefakter om din modell loggas med ett giltigt indataexempel.
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)
Du kan också testa indataexempel mot den loggade modellen med hjälp av API:et convert_input_example_to_serving_input för att generera en giltig JSON-serveringsindata.
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)
Testa att modellen hanteras manuellt
Du kan testa modellens serveringsbeteende manuellt med hjälp av följande steg:
- Öppna en notebook-fil och anslut till ett All-Purpose-kluster som använder en Databricks Runtime-version, inte Databricks Runtime för Machine Learning.
- Läs in modellen med MLflow och försök felsöka därifrån.
Du kan också läsa in modellen lokalt på datorn och felsöka därifrån. Läs in din modell lokalt med hjälp av följande:
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)