Freigeben über


Debugginganleitung für die Modellbereitstellung

In diesem Artikel werden Debuggingschritte für häufige Probleme veranschaulicht, die bei der Arbeit mit Modellbereitstellungsendpunkten auftreten können. Zu den häufig auftretenden Problemen können Fehler gehören, die auftreten, wenn der Endpunkt nicht initialisiert oder gestartet wird, Buildfehler im Zusammenhang mit dem Container oder Probleme während des Betriebs oder der Ausführung des Modells auf dem Endpunkt.

Zugreifen auf und Überprüfen von Protokollen

Databricks empfiehlt das Überprüfen von Buildprotokollen zum Debuggen und Beheben von Fehlern in Ihren Workloads zur Modellbereitstellung. Informationen zu Protokollen und ihrer Anzeige finden Sie unter Überwachen der Modellqualität und Endpunktintegrität.

Überprüfen Sie die Ereignisprotokolle für das Modell in der Benutzeroberfläche des Arbeitsbereichs und prüfen Sie sie auf eine Nachricht über die erfolgreiche Containererstellung. Wenn nach einer Stunde keine Nachricht zur Erstellung angezeigt wird, wenden Sie sich an den Databricks-Support.

Wenn die Erstellung erfolgreich ist, aber andere Fehler auftreten, sehen Sie unter Debuggen nach erfolgreicher Containererstellung nach. Wenn die Erstellung fehlschlägt, sehen Sie unter Debuggen nach fehlgeschlagener Containererstellung nach.

Installierte Bibliothekspaketversionen

In Ihren Buildprotokollen können Sie die installierten Paketversionen bestätigen.

  • Wenn Sie für MLflow-Versionen keine Version angegeben haben, verwendet Model Serving die neueste Version.
  • Für die benutzerdefinierte GPU-Bereitstellung installiert Model Serving die empfohlenen Versionen und cuda cuDNN entsprechend der öffentlichen PyTorch- und Tensorflow-Dokumentation.

Debuggen nach erfolgreicher Containererstellung

Auch wenn der Container erfolgreich erstellt wurde, können Probleme beim Ausführen des Modells oder während des Betriebs des Endpunkts selbst auftreten. In den folgenden Unterabschnitten werden häufige Probleme sowie die Problembehandlung und das Debuggen beschrieben.

Fehlende Abhängigkeit

Sie erhalten möglicherweise eine Fehlermeldung wie An error occurred while loading the model. No module named <module-name>.. Dieser Fehler kann darauf hindeuten, dass eine Abhängigkeit aus dem Container fehlt. Vergewissern Sie sich, dass Sie alle Abhängigkeiten ordnungsgemäß angegeben haben, die im Build des Containers enthalten sein sollten. Achten Sie besonders auf benutzerdefinierte Bibliotheken und stellen Sie sicher, dass die .whl-Dateien als Artefakte enthalten sind.

Schleifen in Dienstprotokollen

Wenn die Containererstellung fehlschlägt, überprüfen Sie die Dienstprotokolle auf Schleifen, wenn der Endpunkt versucht, das Modell zu laden. Wenn dieses Verhalten festzustellen ist, versuchen Sie es mit den folgenden Schritten:

  1. Öffnen Sie ein Notebook und fügen Sie es an einen Allzweckcluster an, der eine Databricks Runtime-Version verwendet, bei der es sich nicht um die Databricks Runtime für maschinelles Lernen handelt.
  2. Laden Sie das Modell mit MLflow und versuchen Sie, von dort aus zu debuggen.

Sie können das Modell auch lokal auf Ihrem PC laden und von dort aus debuggen. Gehen Sie zum lokalen Laden Ihres Modells folgendermaßen vor:

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)

Das Modell schlägt fehl, wenn Anforderungen an den Endpunkt gesendet werden

Sie erhalten gegebenenfalls eine Fehlermeldung wie Encountered an unexpected error while evaluating the model. Verify that the input is compatible with the model for inference. beim Aufrufen von predict() in ihrem Modell.

Es gibt ein Codeproblem in der predict()-Funktion. Databricks empfiehlt, das Modell aus MLflow in ein Notebook zu laden und es aufzurufen. Dadurch werden die Probleme in der predict()-Funktion hervorgehoben, und Sie können sehen, wo der Fehler innerhalb der Methode auftritt.

Arbeitsbereich überschreitet die bereitgestellte Parallelität

Sie erhalten möglicherweise eine Workspace exceeded provisioned concurrency quota-Fehlermeldung.

Je nach Verfügbarkeit in der Region können Sie die Parallelität erhöhen. Wenden Sie sich an Ihr Databricks-Kontoteam und geben Sie Ihre Arbeitsbereichs-ID an, um eine Erhöhung der Parallelität anzufordern.

Debuggen nach fehlgeschlagener Containererstellung

In diesem Abschnitt werden Probleme beschrieben, die auftreten können, wenn die Erstellung fehlschlägt.

OSError: [Errno 28] No space left on device

Der No space left-Fehler kann auf zu viele große Artefakte zurückzuführen sein, die unnötigerweise zusammen mit dem Modell protokolliert werden. Überprüfen Sie in MLflow, dass neben dem Modell keine irrelevanten Artefakte protokolliert werden, und versuchen Sie, das verschlankte Paket erneut bereitzustellen.

Probleme mit Azure Firewall bei der Bereitstellung von Modellen aus dem Unity Catalog

Möglicherweise wird ein Fehler wie Build could not start due to an internal error. If you are serving a model from UC and Azure Firewall is enabled, this is not supported by default. angezeigt.

Wenden Sie sich an Ihr Databricks-Kontoteam, um eine Lösung zu finden.

Buildfehler aufgrund fehlender GPU-Verfügbarkeit

Möglicherweise wird ein Fehler wie Build could not start due to an internal error - please contact your Databricks representative. angezeigt.

Wenden Sie sich an Ihr Databricks-Kontoteam, um eine Lösung zu finden.