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:
- Anzahl der virtuellen CPUs (vCPUs) pro Knoten
- Speichermenge pro Knoten
- Unterstützung für GPUs, die Sie bestimmten Maschinentypen hinzufügen können
- Unterstützung für bestimmte AI Platform Prediction-Features
- Preise
- Abdeckung durch das Service Level Agreement (SLA)
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:
- Wählen Sie in der Drop-down-Liste Skalierung die Option Autoscaling aus.
- Geben Sie im Feld Mindestanzahl von Knoten den Wert
2
ein. - Wählen Sie in der Drop-down-Liste Maschinentyp die Option Standard > n1-standard-4 aus.
- Wählen Sie in der Drop-down-Liste Beschleunigertyp die Option NVIDIA_TESLA_T4 aus.
- 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:
- Sie können keine scikit-learn-Pipeline mit benutzerdefiniertem Code verwenden.
- Sie können keine benutzerdefinierte Vorhersageroutine verwenden.
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.