Die Onlinevorhersage von AI Platform Prediction ist ein Dienst, der für die Verarbeitung Ihrer Daten durch gehostete Modelle optimiert ist – und zwar mit so wenig Latenz wie möglich. Sie senden kleine Mengen von Daten an den Dienst und dieser gibt Ihre Vorhersagen in der Antwort zurück.
Informationen finden Sie unter Onlinevorhersage im Vergleich mit Batchvorhersage und Vorhersageübersicht.
Hinweise
Sie müssen zuerst folgende Schritte ausführen, um Vorhersagen anzufordern:
Exportieren Sie das trainierte Modell als eines oder mehrere Artefakte, die in AI Platform Prediction bereitgestellt werden können.
Stellen Sie das trainierte Modell in AI Platform Prediction bereit. Erstellen Sie dazu eine Modellressource und eine Modellversion.
Regionen
Die Onlinevorhersage ist in bestimmten Regionen verfügbar. Darüber hinaus sind in jeder Region unterschiedliche Maschinentypen verfügbar. Weitere Informationen zur Verfügbarkeit von Onlinevorhersagen in den einzelnen Regionen finden Sie im Leitfaden für Regionen.
Modelle und Versionen erstellen
Beachten Sie, dass Sie die Art und Weise, in der Onlinevorhersagen ausgeführt werden, nur während der Erstellung der Modell- und Versionsressourcen festlegen können:
Erstellte Ressource | Bei der Ressourcenerstellung festzulegende Einstellungen |
---|---|
Modell | Region, in der Vorhersagen ausgeführt werden sollen |
Modell | Logging von Onlinevorhersagen aktivieren |
Version | Zu verwendende Laufzeitversion |
Version | Zu verwendende Python-Version |
Version | Für die Onlinevorhersage zu verwendender Maschinentyp |
Nachdem Sie das Modell oder die Version erstellt haben, können Sie die oben aufgeführten Einstellungen nicht mehr ändern. Wenn Sie die Einstellungen ändern möchten, müssen Sie ein neues Modell oder eine neue Versionsressource mit den neuen Einstellungen erstellen und Ihr Modell noch einmal bereitstellen.
Maschinentypen für die Onlinevorhersage
Bei der Erstellung einer Version können Sie den Typ der virtuellen Maschine auswählen, den AI Platform Prediction für Knoten zur Onlinevorhersage verwenden soll. Weitere Informationen finden Sie auf der Seite zur Auswahl von Maschinentypen.
Logs für Onlinevorhersageanfragen anfordern
Der AI Platform Prediction-Vorhersagedienst protokolliert standardmäßig keine Informationen zu Anfragen, da Logs kostenpflichtig sind. Onlinevorhersagen mit einer hohen Rate von Abfragen pro Sekunde können zu einer erheblichen Anzahl von Logs führen, die Cloud Logging-Preisen oder BigQuery-Preisen unterliegen.
Wenn Sie das Onlinevorhersage-Logging aktivieren möchten, müssen Sie es bei der Erstellung einer Modellressource oder bei der Erstellung einer Modellversionsressource konfigurieren, je nachdem, welche Art von Logging verwendet werden soll. Es gibt drei Logging-Arten, die Sie unabhängig voneinander aktivieren können:
Zugriffs-Logging, das Informationen wie Zeitstempel und Latenz für jede Anfrage an Cloud Logging protokolliert.
Sie können das Zugriffs-Logging beim Erstellen einer Modellressource aktivieren.
Console-Logging, das die
stderr
- undstdout
-Streams von Ihren Vorhersageknoten in Cloud Logging protokolliert und für die Fehlerbehebung nützlich sein kann. Diese Art des Loggings befindet sich in der Vorschau für Compute Engine-Maschinentypen (N1) und ist allgemein für Legacy-Maschinentypen (MLS1) verfügbar.Sie können das Console-Logging beim Erstellen einer Modellressource aktivieren.
Anfrage-/Antwort-Logging: Protokolliert eine Stichprobe von Onlinevorhersageanfragen und -antworten in einer BigQuery-Tabelle. Diese Art des Loggings befindet sich in der Betaphase.
Sie können das Anfrage-/Antwort-Logging aktivieren. Dazu erstellen Sie eine Modellversionsressource und aktualisieren dann diese Version.
gcloud
Zur Aktivierung des Zugriffs-Loggings fügen Sie bei der Erstellung Ihres Modells mit dem Befehl gcloud ai-platform models create
das Flag --enable-logging
hinzu. Beispiel:
gcloud ai-platform models create MODEL_NAME \
--region=us-central1 \
--enable-logging
Zur Aktivierung des Console-Loggings (Vorschau) verwenden Sie die Komponente gcloud beta
und fügen Sie das Flag --enable-console-logging
hinzu. Beispiel:
gcloud components install beta
gcloud beta ai-platform models create MODEL_NAME \
--region=us-central1 \
--enable-console-logging
Das Anfrage-/Antwort-Logging (Beta) kann derzeit nicht mit der gcloud CLI aktiviert werden. Sie können diese Art des Loggings nur durch Senden einer projects.models.versions.patch
-Anfrage an die REST API aktivieren.
REST API
Zur Aktivierung des Zugriffs-Loggings legen Sie in der Modellressource für onlinePredictionLogging
den Wert True
fest, wenn Sie Ihr Modell mit projects.models.create
erstellen.
Zur Aktivierung des Console-Loggings (Beta) legen Sie in der Modellressource für das Feld onlinePredictionConsoleLogging
den Wert True
fest.
Anfrage-/Antwort-Logging
Im Gegensatz zu den anderen Arten des Loggings können Sie das Anfrage-/Antwort-Logging nicht beim Erstellen eines Modells aktivieren. Stattdessen können Sie es dadurch aktivieren, dass Sie die Methode projects.models.versions.patch
für eine vorhandene Modellversion verwenden. (Sie müssen zuerst die Modellversion mit der Google Cloud Console, der gcloud CLI oder der REST API erstellen.)
Für die Aktivierung des Anfrage-/Antwort-Loggings müssen Sie in das Feld requestLoggingConfig
der Versionsressource Folgendes eintragen:
samplingPercentage
: Eine Zahl zwischen 0 oder 1, die den Anteil der zu protokollierenden Anfragen definiert. Legen Sie dafür beispielsweise den Wert1
fest, um alle Anfragen zu protokollieren, oder den Wert0.1
, um 10 % der Anfragen zu protokollieren.bigqueryTableName
: Der voll qualifizierte Name (PROJECT_ID.DATASET_NAME.TABLE_NAME) der BigQuery-Tabelle, in der Sie Anfragen und Antworten protokollieren möchten. Die Tabelle muss mit dem folgenden Schema bereits vorhanden sein:Feldname Typ Modus model STRING ERFORDERLICH model_version STRING ERFORDERLICH time TIMESTAMP ERFORDERLICH raw_data STRING ERFORDERLICH raw_prediction STRING NULLWERTE ZULÄSSIG groundtruth STRING NULLABLE Weitere Informationen zum Erstellen einer BigQuery-Tabelle finden Sie unter Tabelle erstellen und verwenden.
Modelle mit dem What-If-Tool prüfen
Sie können das What-If-Tool (WIT) in Notebook-Umgebungen verwenden, um AI Platform Prediction-Modelle über ein interaktives Dashboard zu prüfen. Das What-If-Tool ist in TensorBoard, Jupyter-Notebooks, Colab-Notebooks und JupyterHub enthalten. Außerdem ist es auf TensorFlow-Instanzen von Vertex AI Workbench vorinstalliert.
Informationen zur Anwendung des What-If-Tools mit AI Platform erhalten Sie unter What-If-Tool verwenden.
Eingabe für Onlinevorhersagen formatieren
Instanzen als JSON-Strings formatieren
Das Grundformat für Onlinevorhersagen ist eine Liste mit Dateninstanzen. Es kann sich dabei um eine einfache Werteliste oder Elemente eines JSON-Objekts handeln. Dies hängt davon ab, wie Sie die Eingaben in der Trainingsanwendung konfiguriert haben: TensorFlow-Modelle und benutzerdefinierte Vorhersageroutinen können komplexere Eingaben akzeptieren. Die meisten Scikit-Learn- und XGBoost-Modelle erwarten hingegeben eine Liste von Zahlen als Eingabe.
Dieses Beispiel zeigt einen Eingabetensor und einen Instanzschlüssel für ein TensorFlow-Modell:
{"values": [1, 2, 3, 4], "key": 1}
Die Zusammensetzung des JSON-Strings kann komplex sein, solange diese Regeln eingehalten werden:
Die oberste Ebene der Instanzdaten muss ein JSON-Objekt sein – ein Wörterbuch aus Schlüssel/Wert-Paaren.
Einzelne Werte in einem Instanzobjekt können Strings, Zahlen oder Listen sein. JSON-Objekte können nicht eingebettet werden.
Listen dürfen nur Elemente des gleichen Typs (einschließlich anderer Listen) enthalten. Strings und numerische Werte dürfen nicht kombiniert werden.
Sie übergeben die Eingabeinstanzen für die Onlinevorhersage als Nachrichtentext für den projects.predict
-Aufruf. Weitere Informationen zu den Formatierungsanforderungen des Anfragetextes finden Sie hier.
gcloud
Je nachdem, wie Sie die Vorhersageanfrage senden möchten, haben Sie zwei Möglichkeiten, die Eingabe zu formatieren. Wir empfehlen die Verwendung des Flags --json-request
des gcloud ai-platform predict
-Befehls. Alternativ können Sie das Flag --json-instances
mit durch Zeilenumbruch getrennten JSON-Daten verwenden.
Für --json-request
Nehmen Sie jede Instanz als Element in ein JSON-Array auf und geben Sie das Array als instances
-Feld einer JSON-Datei an. Beispiel:
instances.json
{"instances": [
{"values": [1, 2, 3, 4], "key": 1},
{"values": [5, 6, 7, 8], "key": 2}
]}
Für --json-instances
Beachten Sie, dass die Eingabedatei eine durch Zeilenumbruch getrennte JSON-Datei sein muss, in der jede Instanz ein JSON-Objekt ist und in einer eigenen Zeile steht. Beispiel:
instances.jsonl
{"values": [1, 2, 3, 4], "key": 1}
{"values": [5, 6, 7, 8], "key": 2}
REST API
Nehmen Sie jede Instanz als Element in ein JSON-Array auf und geben Sie das Array als instances
-Feld eines JSON-Objekts an. Beispiel:
{"instances": [
{"values": [1, 2, 3, 4], "key": 1},
{"values": [5, 6, 7, 8], "key": 2}
]}
Binärdaten in der Vorhersageeingabe
Binärdaten können nicht als von JSON unterstützte UTF-8-codierte Strings formatiert werden. Wenn Sie Binärdaten in Ihren Eingaben verwenden, müssen Sie für deren Darstellung die base64-Codierung verwenden. Folgende besondere Formatierungen sind erforderlich:
Ihre codierte Zeichenfolge muss als JSON-Objekt mit einem einzelnen Schlüssel namens
b64
formatiert sein. Im folgenden Python 2.7-Beispiel wird ein Puffer aus JPEG-Rohdaten mithilfe der base64-Bibliothek codiert, um eine Instanz zu erstellen:{"image_bytes": {"b64": base64.b64encode(jpeg_data)}}
In Python 3.5 gibt die Base64-Codierung eine Byte-Sequenz aus. Diese müssen Sie in einen String konvertieren, um die Serialisierung in JSON zu ermöglichen:
{'image_bytes': {'b64': base64.b64encode(jpeg_data).decode()}}
Benennen Sie die Aliase für die binären Ein- und Ausgabetensoren in Ihrem TensorFlow-Modellcode so, dass sie auf "_bytes" enden.
Vorhersagen anfordern
Wenn Sie eine Onlinevorhersage anfordern möchten, senden Sie Ihre Eingabedateninstanzen als JSON-String in einer predict. Informationen zum Formatieren des Anfrage- und Antworttextes finden Sie unter Details zur Vorhersageanfrage.
Wenn Sie keine Modellversion angeben, verwendet die Vorhersageanfrage die Standardversion des Modells.
gcloud
Erstellen Sie Umgebungsvariablen für die Parameter und schließen Sie einen Versionswert ein, wenn Sie eine bestimmte Modellversion angeben möchten:
MODEL_NAME="[YOUR-MODEL-NAME]" INPUT_DATA_FILE="instances.json" VERSION_NAME="[YOUR-VERSION-NAME]"
Verwenden Sie gcloud ai-platform predict, um Instanzen an ein bereitgestelltes Modell zu senden.
--version
ist optional.gcloud ai-platform predict \ --model=$MODEL_NAME \ --version=$VERSION_NAME \ --json-request=$INPUT_DATA_FILE \ --region=REGION
Ersetzen Sie REGION durch die Region des regionalen Endpunkts, in dem Sie Ihr Modell erstellt haben. Wenn Sie das Modell auf dem globalen Endpunkt erstellt haben, lassen Sie das Flag
--region
aus.Das gcloud-Tool parst die Antwort und gibt die Vorhersagen in einem für Menschen lesbaren Format an Ihr Terminal aus. Wenn Sie ein anderes Ausgabeformat wie etwa JSON oder CSV festlegen möchten, fügen Sie Ihrem Vorhersagebefehl das Flag "--format" hinzu. Weitere Informationen erhalten Sie unter den verfügbaren Ausgabeformaten.
Python
Mit der Google API-Clientbibliothek für Java können Sie die AI Platform Training and Prediction API aufrufen, ohne manuell HTTP-Anfragen erstellen zu müssen. Bevor Sie das folgende Codebeispiel ausführen, müssen Sie die Authentifizierung einrichten.
Java
Mit der Google API-Clientbibliothek für Java können Sie die AI Platform Training and Prediction API aufrufen, ohne HTTP-Anfragen manuell zu erstellen. Bevor Sie das folgende Codebeispiel ausführen, müssen Sie die Authentifizierung einrichten.
Fehlerbehebung bei Onlinevorhersagen
Bei Onlinevorhersagen treten mitunter folgende Fehler auf:
- Unzureichender Speicherplatz
- Falsch formatierte Eingabedaten
- Eine einzelne Onlinevorhersageanfrage darf nicht mehr als 1,5 MB an Daten enthalten. Anfragen, die mit der gcloud CLI erstellt wurden, können nicht mehr als 100 Instanzen pro Datei verarbeiten. Verwenden Sie die Batchvorhersage, um Vorhersagen für mehrere Instanzen gleichzeitig zu erhalten.
Versuchen Sie, die Modellgröße zu reduzieren, bevor Sie sie für die Vorhersage in AI Platform Prediction bereitstellen.
Weitere Informationen zur Fehlerbehebung bei Onlinevorhersagen
Nächste Schritte
- Mithilfe von Batchvorhersagen Inferenzen asynchron abrufen
- Weitere Details zum Vorhersageprozess einsehen
- Probleme beim Anfordern von Onlinevorhersagen beheben