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

Der Standardmaschinentyp mls1-c1-m2 ist allgemein für die Onlinevorhersage verfügbar. Alternativ können Sie eine Modellversion mit einem der anderen Maschinentypen bereitstellen, die in der Betaversion verfügbar sind.

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 (Standard) Allgemein verfügbar 1 2 Nein AI Platform Prediction unterstützt alle Typen von Modellartefakten. 500 MB
mls1-c4-m2 Beta 4 2 Nein AI Platform Prediction unterstützt alle Typen von Modellartefakten. 500 MB
n1-standard-2 Beta 2 7,5 Ja Nur TensorFlow SavedModel 2 GB
n1-standard-4 Beta 4 15 Ja Nur TensorFlow SavedModel 2 GB
n1-standard-8 Beta 8 30 Ja Nur TensorFlow SavedModel 2 GB
n1-standard-16 Beta 16 60 Ja Nur TensorFlow SavedModel 2 GB
n1-standard-32 Beta 32 120 Ja Nur TensorFlow SavedModel 2 GB
n1-highmem-2 Beta 2 13 Ja Nur TensorFlow SavedModel 2 GB
n1-highmem-4 Beta 4 26 Ja Nur TensorFlow SavedModel 2 GB
n1-highmem-8 Beta 8 52 Ja Nur TensorFlow SavedModel 2 GB
n1-highmem-16 Beta 16 104 Ja Nur TensorFlow SavedModel 2 GB
n1-highmem-32 Beta 32 208 Ja Nur TensorFlow SavedModel 2 GB
n1-highcpu-2 Beta 2 1.8 Ja Nur TensorFlow SavedModel 2 GB
n1-highcpu-4 Beta 4 3,6 Ja Nur TensorFlow SavedModel 2 GB
n1-highcpu-8 Beta 8 7,2 Ja Nur TensorFlow SavedModel 2 GB
n1-highcpu-16 Beta 16 14,4 Ja Nur TensorFlow SavedModel 2 GB
n1-highcpu-32 Beta 32 28,8 Ja Nur TensorFlow SavedModel 2 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. Sollten Sie keinen angeben, verwendet Ihre Modellversion standardmäßig mls1-c1-m2 für ihre Knoten.

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

GCP Console

Öffnen Sie auf der Seite Version erstellen die Drop-down-Liste Maschinentyp und wählen Sie AI Platform-Maschinentypen > Quad-Core-CPU (BETA) aus.

gcloud

Nachdem Sie Ihre Modellartefakte in Cloud Storage hochgeladen und eine Modellressource erstellt haben, können Sie mit der Beta-Komponente des Befehlszeilentools gcloud eine Modellversion erstellen, die den Maschinentyp mls1-c4-m2 verwendet:

gcloud beta ai-platform versions create version_name \
  --model model_name \
  --origin gs://model-directory-uri \
  --runtime-version 1.14 \
  --python-version 3.5 \
  --framework ml-framework-name \
  --machine-type mls1-c4-m2

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 googleapiclient import discovery

ml = discovery.build('ml', 'v1')
request_dict = {
    'name': 'version_name',
    'deploymentUri': 'gs://model-directory-uri',
    'runtimeVersion': '1.14',
    'pythonVersion': '3.5',
    'framework': 'ML_FRAMEWORK_NAME',
    'machineType': 'mls1-c4-m2'
}
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

Wenn Sie für Ihre Modellversion einen der Compute Engine-Maschinentypen (N1) verwenden, haben Sie die Möglichkeit, optional GPUs hinzuzufügen, um die einzelnen Vorhersageknoten zu beschleunigen. 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 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. Sie werden von Legacy-Maschinentypen (MLS1) nicht unterstützt.

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 müssen die Vorhersageknoten manuell für Ihre Version skalieren, wenn Sie GPUS verwenden. Später können Sie dann ändern, wie viele Knoten ausgeführt werden. Momentan ist es allerdings nicht möglich, Autoscaling mit GPUs zu verwenden.

In den folgenden Anleitungen wird erläutert, wie Sie GPUs für die Onlinevorhersage angeben, wenn Sie einen n1-highmem-32-Maschinentyp mit vier NVIDIA Tesla K80-GPUs für jeden Vorhersageknoten verwenden:

GCP Console

Öffnen Sie auf der Seite Version erstellen die Drop-down-Liste Maschinentyp und wählen Sie Großer Speicher > n1-highmem-32 aus. Wählen Sie im Feld Beschleunigertyp die Option NVIDIA_TESLA_K80 aus. Wählen Sie im Feld Beschleunigeranzahl die Option 4 aus.

gcloud

Nachdem Sie Ihr TensorFlow SavedModel in Cloud Storage hochgeladen und eine Modellressource in der Region us-central1 erstellt haben, können Sie eine Version erstellen. Verwenden Sie dazu die Betakomponente des Befehlszeilentools gcloud und geben Sie das Flag --accelerator an:

gcloud beta ai-platform versions create version_name \
  --model model_name \
  --origin gs://model-directory-uri \
  --runtime-version 1.14 \
  --python-version 3.5 \
  --framework tensorflow \
  --machine-type n1-highmem-32 \
  --accelerator 4,nvidia-tesla-k80

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.

Nachdem Sie Ihr TensorFlow SavedModel in Cloud Storage hochgeladen und eine Modellressource in der Region us-central1 erstellt haben, senden Sie eine Anfrage an die Methode projects.models.versions.create Ihres Modells und geben Sie im Anfragetext die Felder machineType und acceleratorConfig an:

from googleapiclient import discovery

ml = discovery.build('ml', 'v1')
request_dict = {
    'name': 'version_name',
    'deploymentUri': 'gs://model-directory-uri',
    'runtimeVersion': '1.14',
    'pythonVersion': '3.5',
    'framework': 'TENSORFLOW',
    'machineType': 'mls1-c4-m2',
    'acceleratorConfig': {
      'count': 4,
      'type': 'NVIDIA_TESLA_K80'
    }
}
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-Funktionen. 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 us-central1 Alle AI Platform Prediction-Regionen
Typen von ML-Artefakten TensorFlow SavedModels Alle AI Platform-Modellartefakte
Laufzeitversionen 1.11 oder höher Alle verfügbaren AI Platform-Laufzeitversionen
Max. Modellgröße 2 GB 500 MB
Logging Kein Stream-Logging Alle Logging-Typen
Automatische Skalierung 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

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

Regionale Verfügbarkeit

Compute Engine-Maschinentypen (N1) sind derzeit nur verfügbar, wenn Sie Ihr Modell in der Region us-central1 bereitstellen.

Sie können Legacy-Maschinentypen (MLS1) in allen Regionen verwenden, die für Onlinevorhersagen verfügbar sind.

Batchvorhersage wird unterstützt

Von Modellversionen, die den Maschinentyp mls1-c4-m2 verwenden, wird die Batchvorhersage nicht unterstützt.

ML-Framework-Unterstützung

Wenn Sie einen der Compute Engine-Maschinentypen (N1) verwenden, müssen Sie Ihre Modellversion mit einem TensorFlow SavedModel erstellen und TENSORFLOW für das Feld framework angeben.

Für Legacy-Maschinentypen (MLS1) können Sie alle exportierten ML-Modelle verwenden, die von AI Platform Prediction unterstützt werden.

Laufzeitversion wird unterstützt

Wenn Sie Compute Engine-Maschinentypen (N1) verwenden, 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.

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 2 GB betragen, wenn Sie einen Compute Engine-Maschinentyp (N1) verwenden.

Logging-Vorhersagen

Stream-Logging der stderr- und stdout-Streams von Vorhersageknoten wird von Compute Engine-Maschinentypen (N1) nicht unterstützt.

Legacy-Maschinentypen (MLS1) unterstützen alle Typen von Onlinevorhersage-Logging.

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.

Automatische Skalierung

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 Ihre Modellversion GPUs verwenden, ist Autoscaling nicht verfügbar. Sie müssen dann die manuelle Skalierung verwenden.

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 ist standardmäßig auf 0 gesetzt.

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 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.