Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Wskazówki zawarte w tym artykule mogą pomóc w przełapaniu problemów z modelem, zanim będzie trzeba czekać na wdrożenie punktu końcowego. Usługa Databricks zaleca wykonanie tych kroków weryfikacji, aby zapewnić lepsze środowisko programistyczne podczas korzystania z obsługi modelu.
Testowanie przewidywań przed wdrożeniem
Przed wdrożeniem modelu do punktu końcowego obsługi przetestuj przewidywania offline w środowisku wirtualnym, używając mlflow.models.predict i przykładów wejściowych. Platforma MLflow udostępnia interfejsy API sprawdzania poprawności, które symulują środowisko wdrażania i umożliwiają testowanie zmodyfikowanych zależności.
Istnieją dwie opcje weryfikacji przed wdrożeniem: interfejs API języka Python MLflow i interfejs wiersza polecenia platformy MLflow. Aby uzyskać bardziej szczegółowe wskazówki, zobacz dokumentację MLflow dotyczącą testowania przewidywań.
Można określić następujące parametry:
- Model
model_uriwdrożony w usłudze modelowej. - Jedną z następujących czynności:
- Wartość
input_dataw oczekiwanym formacie wywołaniamlflow.pyfunc.PyFuncModel.predict()modelu. - Element
input_pathdefiniujący plik zawierający dane wejściowe, które zostaną załadowane i użyte do wywołania metodypredict.
- Wartość
- Format
content_typelubcsvw formaciejson. - Opcjonalne
output_pathzapisywanie przewidywań w pliku. Jeśli ten parametr zostanie pominięty, przewidywania zostaną wydrukowane na .stdout - Menedżer środowiska ,
env_managerktóry służy do kompilowania środowiska do obsługi:- Wartość domyślna to
virtualenv. Zalecane do sprawdzania poprawności. -
localjest dostępny, ale potencjalnie podatny na błąd służący do sprawdzania poprawności. Ogólnie używane tylko do szybkiego debugowania.
- Wartość domyślna to
- Czy zainstalować bieżącą wersję biblioteki MLflow, która znajduje się w twoim środowisku przy użyciu środowiska wirtualnego przy użyciu polecenia
install_mlflow. To ustawienie jest domyślnie ustawione naFalse. - Czy zaktualizować i przetestować różne wersje zależności pakietów na potrzeby rozwiązywania problemów lub debugowania. Można to określić jako listę przesłonięć lub dodatków zależności ciągów przy użyciu argumentu zastąpienia,
pip_requirements_override.
Przykład:
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"],
)
Aktualizowanie zależności modelu
Jeśli występują jakiekolwiek problemy z zależnościami określonymi przy użyciu zarejestrowanego modelu, możesz zaktualizować wymagania przy użyciu interfejsu wiersza polecenia platformy MLflow lub mlflow.models.model.update_model_requirements() interfejsu API języka Python MLflow bez konieczności rejestrowania innego modelu.
W poniższym przykładzie pokazano, jak zaktualizować pip_requirements.txt zapisany model bezpośrednio.
Istniejące definicje można zaktualizować przy użyciu określonych wersji pakietu lub dodać do pliku nieistniejące wymagania pip_requirements.txt . Ten plik znajduje się w artefaktie modelu MLflow w określonej model_uri lokalizacji.
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"],
)
Weryfikowanie danych wejściowych modelu przed wdrożeniem
Model obsługujący punkty końcowe oczekuje specjalnego formatu danych wejściowych JSON. Możesz sprawdzić, czy dane wejściowe modelu działają na punkcie obsługi końcowej przed wdrożeniem, używając validate_serving_input w MLflow.
Poniżej przedstawiono przykład kodu generowanego automatycznie na karcie Artefakty przebiegu, jeśli model jest rejestrowany przy użyciu prawidłowego przykładu danych wejściowych.
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)
Możesz również przetestować dowolne przykłady wejściowe względem zarejestrowanego modelu przy użyciu API convert_input_example_to_serving_input, aby wygenerować poprawne dane wejściowe JSON.
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)
Ręczne testowanie wdrożenia modelu
Możesz ręcznie przetestować zachowanie serwerowe modelu, wykonując następujące kroki:
- Otwórz notes i dołącz go do klastra ogólnego przeznaczenia, który używa wersji środowiska Databricks Runtime, a nie środowiska Databricks Runtime na potrzeby uczenia maszynowego.
- Załaduj model przy użyciu biblioteki MLflow i spróbuj przeprowadzić debugowanie z tego miejsca.
Możesz również załadować model lokalnie na komputerze i debugować z tego miejsca. Załaduj model lokalnie przy użyciu następujących elementów:
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)