Maschinentyp für Onlinevorhersagen auswählen

AI Platform Prediction ordnet -Knoten zu, um Onlinevorhersageanfragen zu verarbeiten, die an eine Modellversion gesendet wurden. Wenn Sie eine Modellversion bereitstellen, können Sie den Typ der virtuellen Maschine anpassen, den AI Platform Prediction für diese Knoten verwendet.

Maschinentypen unterscheiden sich in verschiedener Hinsicht:

Wenn Sie einen Maschinentyp mit mehr Rechenressourcen auswählen, können Sie Vorhersagen mit geringerer Latenz bereitstellen oder mehr Vorhersageanfragen gleichzeitig verarbeiten.

Verfügbare Maschinentypen

Compute Engine-Maschinentypen (N1) und der Maschinentyp mls1-c1-m2 sind generell für die Onlinevorhersage verfügbar. Der Maschinentyp mls1-c4-m2 ist in der Betaversion verfügbar.

In der folgenden Tabelle werden die verfügbaren Maschinentypen verglichen:

Name Verfügbarkeit vCPUs Arbeitsspeicher (GB) Unterstützt GPUs? ML-Framework-Unterstützung Max. Modellgröße
mls1-c1-m2 (Standardeinstellung für den globalen Endpunkt) Allgemein verfügbar 1 2 Nein TensorFlow, XGBoost, scikit-learn (einschließlich Pipelines mit benutzerdefiniertem Code), benutzerdefinierte Vorhersageroutinen 500 MB
mls1-c4-m2 Beta 4 2 Nein TensorFlow, XGBoost, scikit-learn (einschließlich Pipelines mit benutzerdefiniertem Code), benutzerdefinierte Vorhersageroutinen 500 MB
n1-standard-2 (Standardeinstellung für regionale Endpunkte) Allgemein verfügbar 2 7,5 Ja TensorFlow, XGBoost und scikit-learn 10 GB
n1-standard-4 Allgemein verfügbar 4 15 Ja TensorFlow, XGBoost und scikit-learn 10 GB
n1-standard-8 Allgemein verfügbar 8 30 Ja TensorFlow, XGBoost und scikit-learn 10 GB
n1-standard-16 Allgemein verfügbar 16 60 Ja TensorFlow, XGBoost und scikit-learn 10 GB
n1-standard-32 Allgemein verfügbar 32 120 Ja TensorFlow, XGBoost und scikit-learn 10 GB
n1-highmem-2 Allgemein verfügbar 2 13 Ja TensorFlow, XGBoost und scikit-learn 10 GB
n1-highmem-4 Allgemein verfügbar 4 26 Ja TensorFlow, XGBoost und scikit-learn 10 GB
n1-highmem-8 Allgemein verfügbar 8 52 Ja TensorFlow, XGBoost und scikit-learn 10 GB
n1-highmem-16 Allgemein verfügbar 16 104 Ja TensorFlow, XGBoost und scikit-learn 10 GB
n1-highmem-32 Allgemein verfügbar 32 208 Ja TensorFlow, XGBoost und scikit-learn 10 GB
n1-highcpu-2 Allgemein verfügbar 2 1.8 Ja TensorFlow, XGBoost und scikit-learn 10 GB
n1-highcpu-4 Allgemein verfügbar 4 3,6 Ja TensorFlow, XGBoost und scikit-learn 10 GB
n1-highcpu-8 Allgemein verfügbar 8 7,2 Ja TensorFlow, XGBoost und scikit-learn 10 GB
n1-highcpu-16 Allgemein verfügbar 16 14,4 Ja TensorFlow, XGBoost und scikit-learn 10 GB
n1-highcpu-32 Allgemein verfügbar 32 28,8 Ja TensorFlow, XGBoost und scikit-learn 10 GB

Weitere Informationen zu den Preisen für jeden Maschinentyp Hier erfahren Sie mehr über die detaillierten Spezifikationen der Compute Engine-Maschinentypen (N1) in der Compute Engine-Dokumentation.

Maschinentyp angeben

Sie können einen Maschinentyp auswählen, wenn Sie eine Modellversion erstellen. Wenn Sie keinen Maschinentyp angeben, verwendet Ihre Modellversion standardmäßig n1-standard-2, wenn Sie einen regionalen Endpunkt verwenden, und mls1-c1-m2, wenn Sie den globalen Endpunkt nutzen.

In den folgenden Anleitungen wird erläutert, wie Sie beim Erstellen einer Modellversion einen Maschinentyp angeben. Als Beispiel wird n1-standard-4 verwendet. Detaillierte Informationen zur Erstellung einer Modellversion erhalten Sie im Leitfaden zur Bereitstellung von Modellen.

Google Cloud Console

Öffnen Sie auf der Seite Version erstellen die Drop-down-Liste Maschinentyp und wählen Sie Standard > n1-standard-4 aus.

gcloud

Nachdem Sie Ihre Modellartefakte in Cloud Storage hochgeladen und eine Modellressource erstellt haben, können Sie eine Modellversion erstellen, die den Maschinentyp n1-standard-4 verwendet:

gcloud ai-platform versions create VERSION_NAME \
  --model MODEL_NAME \
  --origin gs://model-directory-uri \
  --runtime-version 2.11 \
  --python-version 3.7 \
  --framework ML_FRAMEWORK_NAME \
  --region us-central1 \
  --machine-type n1-standard-4

Python

In diesem Beispiel wird die Google APIs-Clientbibliothek für Python verwendet. Bevor Sie das folgende Codebeispiel ausführen, müssen Sie die Authentifizierung einrichten.

Nachdem Sie Ihre Modellartefakte in Cloud Storage hochgeladen und eine Modellressource erstellt haben, senden Sie eine Anfrage an die Methode projects.models.versions.create Ihres Modells und geben Sie im Anfragetext das Feld machineType an:

from google.api_core.client_options import ClientOptions
from googleapiclient import discovery

endpoint = 'https://us-central1-ml.googleapis.com'
client_options = ClientOptions(api_endpoint=endpoint)
ml = discovery.build('ml', 'v1', client_options=client_options)

request_dict = {
    'name': 'VERSION_NAME',
    'deploymentUri': 'gs://model-directory-uri',
    'runtimeVersion': '2.11',
    'pythonVersion': '3.7',
    'framework': 'ML_FRAMEWORK_NAME',
    'machineType': 'n1-standard-4'
}
request = ml.projects().models().versions().create(
    parent='projects/PROJECT_NAME/models/MODEL_NAME',
    body=request_dict
)
response = request.execute()

GPUs für die Onlinevorhersage verwenden

Bei einigen Konfigurationen können Sie optional GPUs hinzufügen, um jeden Vorhersageknoten zu beschleunigen. Für GPUs müssen Sie mehrere Anforderungen berücksichtigen:

  • Sie können GPUs nur mit Compute Engine-Maschinentypen (N1) verwenden. Sie werden von Legacy-Maschinentypen (MLS1) nicht unterstützt.
  • Sie können GPUs nur verwenden, wenn Sie ein TensorFlow SavedModel bereitstellen. GPUs können nicht für scikit-learn- oder XGBoost-Modelle verwendet werden.
  • Die Verfügbarkeit der einzelnen GPU-Typen hängt davon ab, welche Region Sie für Ihr Modell verwenden. Verfügbare GPU-Typen in jeweiligen Regionen
  • Sie können nur einen GPU-Typ für Ihre Modellversion verwenden. Je nach genutztem Maschinentyp gibt es allerdings Einschränkungen für die Anzahl der GPUs, die sich hinzufügen lassen. In der folgenden Tabelle werden diese Einschränkungen beschrieben.

In der folgenden Tabelle sehen Sie die GPUs, die für die Onlinevorhersage verfügbar sind, und Sie erfahren, wie viele GPUs der einzelnen Typen Sie mit jedem Compute Engine-Maschinentyp verwenden können:

Gültige GPU-Anzahl für Maschinentypen
Maschinentyp NVIDIA Tesla K80 NVIDIA Tesla P4 NVIDIA Tesla P100 NVIDIA Tesla T4 NVIDIA Tesla V100
n1-standard-2 1, 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 1, 2, 4, 8
n1-standard-4 1, 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 1, 2, 4, 8
n1-standard-8 1, 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 1, 2, 4, 8
n1-standard-16 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 2, 4, 8
n1-standard-32 4, 8 2, 4 2, 4 2, 4 4, 8
n1-highmem-2 1, 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 1, 2, 4, 8
n1-highmem-4 1, 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 1, 2, 4, 8
n1-highmem-8 1, 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 1, 2, 4, 8
n1-highmem-16 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 2, 4, 8
n1-highmem-32 4, 8 2, 4 2, 4 2, 4 4, 8
n1-highcpu-2 1, 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 1, 2, 4, 8
n1-highcpu-4 1, 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 1, 2, 4, 8
n1-highcpu-8 1, 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 1, 2, 4, 8
n1-highcpu-16 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 2, 4, 8
n1-highcpu-32 4, 8 2, 4 2, 4 2, 4 4, 8

GPUs sind optional und verursachen zusätzliche Kosten.

GPUs angeben

Sie können GPUs angeben, wenn Sie eine Modellversion erstellen. AI Platform Prediction ordnet die Anzahl und den Typ der GPU zu, den Sie für jeden Vorhersageknoten angeben. Sie können die Vorhersageknoten automatisch skalieren (Vorschau) oder manuell skalieren (GA). Die Anzahl der GPUs, die jeder Knoten verwendet, bleibt aber gleich, wenn Sie die Modellversion erstellen. Sofern Sie keinen komplexeren Anwendungsfall haben, empfehlen wir Ihnen, für jeden Vorhersageknoten eine GPU zu konfigurieren, d. h. Sie legen für die Beschleunigeranzahl den Wert 1 fest.

In der folgenden Anleitung wird erläutert, wie Sie GPUs für die Onlinevorhersage angeben und dafür eine Modellversion erstellen, die mindestens auf zwei Vorhersageknoten jederzeit ausgeführt wird. Jeder Knoten verwendet den Maschinentyp n1-standard-4 sowie eine NVIDIA Tesla T4-GPU.

In den Beispielen wird davon ausgegangen, dass Sie bereits ein TensorFlow SavedModel in Cloud Storage hochgeladen und eine Modellressource in einer Region erstellt haben, die GPUs unterstützt.

Google Cloud Console

Folgen Sie der Anleitung Modellversion erstellen. Legen Sie auf der Seite Version erstellen die folgenden Optionen fest:

  1. Wählen Sie in der Drop-down-Liste Skalierung die Option Autoscaling aus.
  2. Geben Sie im Feld Mindestanzahl von Knoten den Wert 2 ein.
  3. Wählen Sie in der Drop-down-Liste Maschinentyp die Option Standard > n1-standard-4 aus.
  4. Wählen Sie in der Drop-down-Liste Beschleunigertyp die Option NVIDIA_TESLA_T4 aus.
  5. Wählen Sie in der Drop-down-Liste Beschleunigeranzahl die Option 1 aus.

gcloud

Verwenden Sie die gcloud CLI, um eine Modellversion zu erstellen. In diesem Beispiel wird die Version auf n1-standard-4-Vorhersageknoten ausgeführt, die jeweils eine NVIDIA Tesla T4-GPU verwenden. AI Platform Prediction skaliert die Anzahl der Vorhersageknoten automatisch auf eine Zahl zwischen 2 und 4, je nach GPU-Nutzung zu einem bestimmten Zeitpunkt. In diesem Beispiel wird der regionale Endpunkt us-central1 verwendet:

gcloud beta ai-platform versions create VERSION_NAME \
  --model MODEL_NAME \
  --origin gs://model-directory-uri \
  --runtime-version 2.11 \
  --python-version 3.7 \
  --framework tensorflow \
  --region us-central1 \
  --machine-type n1-standard-4 \
  --accelerator count=1,type=nvidia-tesla-t4 \
  --min-nodes 2 \
  --max-nodes 4 \
  --metric-targets gpu-duty-cycle=60

Der Beschleunigername wird in Kleinbuchstaben mit Bindestrichen zwischen den Wörtern angegeben.

Python

In diesem Beispiel wird die Google APIs-Clientbibliothek für Python verwendet. Bevor Sie das folgende Codebeispiel ausführen, müssen Sie die Authentifizierung einrichten.

In diesem Beispiel wird der regionale Endpunkt us-central1 verwendet:

Senden Sie eine Anfrage an die Methode projects.models.versions.create Ihres Modells und geben Sie im Anfragetext die Felder machineType, acceleratorConfig und manualScaling an:

from google.api_core.client_options import ClientOptions
from googleapiclient import discovery

endpoint = 'https://us-central1-ml.googleapis.com'
client_options = ClientOptions(api_endpoint=endpoint)
ml = discovery.build('ml', 'v1', client_options=client_options)

request_dict = {
    'name': 'VERSION_NAME',
    'deploymentUri': 'gs://model-directory-uri',
    'runtimeVersion': '2.11',
    'pythonVersion': '3.7',
    'framework': 'TENSORFLOW',
    'machineType': 'n1-standard-4',
    'acceleratorConfig': {
      'count': 1,
      'type': 'NVIDIA_TESLA_T4'
    },
    'autoScaling': {
      'minNodes': 2,
      'maxNodes': 4,
      'metrics': [
        {
          'name': 'GPU_DUTY_CYCLE',
          'target': 60
        }
      ]
    }
}
request = ml.projects().models().versions().create(
    parent='projects/PROJECT_NAME/models/MODEL_NAME',
    body=request_dict
)
response = request.execute()

Der Beschleunigername wird in Großbuchstaben mit Unterstrichen zwischen den Wörtern angegeben.

Unterschiede zwischen den Maschinentypen

Neben der Bereitstellung unterschiedlicher Mengen an Rechenressourcen variieren die Maschinentypen auch in ihrer Unterstützung bestimmter AI Platform Prediction-Features. In der folgenden Tabelle erhalten Sie einen Überblick über die Unterschiede zwischen Compute Engine-Maschinentypen (N1) und Legacy-Maschinentypen (MLS1):

Compute Engine-Maschinentypen (N1) Legacy-Maschinentypen (MLS1)
Regionen Alle regionalen Endpunktregionen Alle globalen Endpunktregionen
Typen von ML-Artefakten
Laufzeitversionen 1.11 oder höher Alle verfügbaren AI Platform-Laufzeitversionen
Benutzerdefinierte Containerunterstützung Ja Nein
Max. Modellgröße 10 GB 500 MB
Autoscaling Min. Anzahl Knoten = 1 Min. Anzahl Knoten = 0
Manuelle Skalierung Kann die Anzahl der Knoten aktualisieren Kann die Anzahl der Knoten nach der Erstellung der Modellversion nicht aktualisieren
GPU-Unterstützung Ja (nur TensorFlow) Nein
Unterstützung von AI Explanations Ja (nur TensorFlow) Nein
Unterstützung durch VPC Service Controls Ja Nein
SLA-Abdeckung für allgemein verfügbare Maschinentypen Ja, in einigen Fällen Ja

In den folgenden Abschnitten werden die Unterschiede zwischen den Maschinentypen ausführlich erläutert.

Regionale Verfügbarkeit

Compute Engine-Maschinentypen (N1) sind verfügbar, wenn Sie Ihr Modell auf einem regionalen Endpunkt bereitstellen. Wenn Sie einen Compute Engine-Maschinentyp (N1) verwenden, können Sie Ihr Modell nicht für den globalen Endpunkt bereitstellen.

Wenn Sie eine Modellversion mit Compute Engine-Maschinentypen (N1) auf zwei oder mehr Vorhersageknoten skalieren, werden die Knoten in mehreren Zonen innerhalb derselben Region ausgeführt. Dies gewährleistet eine kontinuierliche Verfügbarkeit, wenn eine Zone ausfällt. Weitere Informationen finden Sie im Abschnitt Skalierung dieses Dokuments.

Die GPU-Verfügbarkeit für Compute Engine-Maschinentypen (N1) variiert je nach Region.

Legacy-Maschinentypen (MLS1) sind auf dem globalen Endpunkt in vielen Regionen verfügbar. Legacy-Maschinentypen (MLS1) sind auf regionalen Endpunkten nicht verfügbar.

Batchvorhersage wird unterstützt

Modellversionen, die den Maschinentyp mls1-c1-m2 verwenden, unterstützen die Batchvorhersage. Modellversionen, die andere Maschinentypen verwenden, unterstützen keine Batchvorhersagen.

ML-Framework-Unterstützung

Wenn Sie einen der Compute Engine-Maschinentypen (N1) verwenden, können Sie Ihre Modellversion mit allen Modellartefakten erstellen, die im Leitfaden zum Exportieren von Vorhersagemodellen beschrieben sind, mit folgenden zwei Ausnahmen:

Für Legacy-Maschinentypen (MLS1) können Sie jede Art von Modellartefakt verwenden, die von AI Platform Prediction unterstützt wird, einschließlich einer scikit-learn-Pipeline mit benutzerdefiniertem Code oder einer benutzerdefinierten Vorhersageroutine.

Laufzeitversion wird unterstützt

Wenn Sie einen Compute Engine-Maschinentyp (N1) nutzen, müssen Sie für Ihre Modellversion Laufzeitversion 1.11 oder höher verwenden.

Wenn Sie einen Legacy-Maschinentyp (MLS1) verwenden, können Sie jede verfügbare AI Platform-Laufzeitversion verwenden.

Benutzerdefinierte Containerunterstützung

Um einen benutzerdefinierten Container für Onlinevorhersagen zu nutzen, müssen Sie einen Compute Engine-Maschinentyp (N1) verwenden.

Max. Modellgröße

Die Modellartefakte, die Sie beim Erstellen einer Modellversion angeben, dürfen eine Gesamtdateigröße von 500 MB nicht überschreiten, wenn Sie einen Legacy-Maschinentyp (MLS1) verwenden. Die Gesamtdateigröße kann bis zu 10 GB betragen, wenn Sie einen Compute Engine-Maschinentyp (N1) verwenden.

Logging-Vorhersagen

Für Compute Engine-Maschinentypen (N1) befindet sich das Konsolen-Logging in der Vorschau. Für Legacy-Maschinentypen (MLS1) ist das Logging der Konsole allgemein verfügbar.

Skalierung von Vorhersageknoten

Autoscaling und die manuelle Skalierung von Vorhersageknoten unterliegen je nachdem, ob Sie einen Compute Engine-Maschinentyp (N1) oder einen Legacy-Maschinentyp (MLS1) verwenden, bestimmten Einschränkungen.

Autoscaling

Wenn Sie einen Compute Engine-Maschinentypen (N1) mit Autoscaling verwenden, muss in Ihrer Modellversion immer mindestens ein Knoten aktiv sein. Mit anderen Worten: Das Feld autoScaling.minNodes der Version hat standardmäßig den Wert 1 und darf nicht kleiner als 1 sein. Wenn Sie für autoScaling.minNodes den Wert 2 oder höher festlegen, werden Vorhersageknoten in mehreren Zonen innerhalb derselben Region ausgeführt. Dies gewährleistet eine kontinuierliche Verfügbarkeit, wenn eine Zone ausfällt.

Das Autoscaling funktioniert unter Umständen nicht richtig, wenn Sie mehr vCPUs oder RAM zuweisen, als Ihr ML-Modell benötigt. Das kann zu Problemen mit der Modellleistung führen. Testen Sie verschiedene Maschinentypen für Ihr Modell und sorgen Sie dafür, dass Sie nicht zu viele Rechenressourcen bereitstellen.

Wenn Sie einen Legacy-Maschinentyp (MLS1) verwenden, kann Ihre Modellversion auf 0 Knoten skaliert werden, wenn sie keinen Traffic empfängt: autoScaling.minNodes kann auf 0 gesetzt werden und wird standardmäßig auf 0 gesetzt. Durch die Skalierung auf null können Sie die Kosten senken, wenn Ihre Modellversion keine Vorhersageanfragen empfängt. Allerdings kann dies auch zu Latenzen oder Fehlern führen, wenn AI Platform Prediction einen neuen Knoten zuordnet, um Anfragen nach einem Zeitraum mit null Knoten zu verarbeiten. Weitere Informationen zur Skalierung auf null

Manuelle Skalierung

Wenn Sie einen Compute Engine-Maschinentyp (N1) mit manueller Skalierung verwenden, können Sie die Anzahl der laufenden Vorhersageknoten jederzeit mit der API-Methode projects.models.versions.patch aktualisieren. Wenn Sie das Feld manualScaling.nodes auf 2 oder höher festlegen, werden Vorhersageknoten in mehreren Zonen innerhalb derselben Region ausgeführt. Dies gewährleistet eine kontinuierliche Verfügbarkeit, wenn eine Zone ausfällt.

Wenn Sie einen Legacy-Maschinentyp (MLS1) mit manueller Skalierung verwenden, können Sie die Anzahl der Vorhersageknoten nicht mehr aktualisieren, nachdem Sie die Modellversion erstellt haben. Wenn Sie die Anzahl der Knoten ändern möchten, müssen Sie die Version löschen und eine neue erstellen.

Unterstützung durch VPC Service Controls

Wenn Sie VPC Service Controls zum Schutz von AI Platform Prediction verwenden, können Sie keine Versionen mit Legacy-Maschinentypen (MLS1) erstellen. Sie müssen dann Compute Engine-Maschinentypen (N1) nutzen.