Vor dem Ausführen eines Trainingsjobs in AI Platform Training müssen Sie die Anzahl und den Typ der erforderlichen Maschinen angeben. Zur Vereinfachung können Sie aus einer Reihe von vordefinierten Clusterspezifikationen, den sogenannten Skalierungsstufen, auswählen. Alternativ können Sie eine benutzerdefinierte Stufe auswählen und die Maschinentypen selbst angeben.
Ihre Konfiguration angeben
Wie Sie Ihre Clusterkonfiguration angeben, hängt davon ab, wie Sie Ihren Trainingsjob ausführen wollen:
gcloud
Erstellen Sie eine YAML-Konfigurationsdatei für das Objekt TrainingInput
. Legen Sie in der Konfigurationsdatei die Kennzeichnung der Skalierungsstufe sowie die Maschinentypen fest. Die Datei kann nach Wunsch benannt werden. Der Name lautet üblicherweise config.yaml
.
Das folgende Beispiel zeigt den Inhalt der Konfigurationsdatei config.yaml
für einen Job mit einem benutzerdefiniertenVerarbeitungscluster.
trainingInput: scaleTier: CUSTOM masterType: n1-highcpu-16 workerType: n1-highcpu-16 parameterServerType: n1-highmem-8 evaluatorType: n1-highcpu-16 workerCount: 9 parameterServerCount: 3 evaluatorCount: 1
Geben Sie im Flag --config
den Pfad der YAML-Datei an, wenn Sie den Befehl gcloud ai-platform jobs submit training
ausführen:
gcloud ai-platform jobs submit training $JOB_NAME \ --package-path $TRAINER_PACKAGE_PATH \ --module-name $MAIN_TRAINER_MODULE \ --job-dir $JOB_DIR \ --region $REGION \ --config config.yaml \ -- \ --user_first_arg=first_arg_value \ --user_second_arg=second_arg_value
Sie können alternativ die Cluster-Konfigurationsdetails mit Befehlszeilen-Flags angeben, anstatt eine Konfigurationsdatei zu verwenden. Weitere Informationen zur Verwendung dieser Flags erhalten Sie hier.
Das folgende Beispiel zeigt, wie Sie einen Trainingsjob mit einer ähnlichen Konfiguration wie im vorherigen Beispiel senden, jedoch ohne Konfigurationsdatei:
gcloud ai-platform jobs submit training $JOB_NAME \
--package-path $TRAINER_PACKAGE_PATH \
--module-name $MAIN_TRAINER_MODULE \
--job-dir $JOB_DIR \
--region $REGION \
--scale-tier custom \
--master-machine-type n1-highcpu-16 \
--worker-machine-type n1-highcpu-16 \
--parameter-server-machine-type n1-highmem-8 \
--worker-count 9 \
--parameter-server-count 3 \
-- \
--user_first_arg=first_arg_value \
--user_second_arg=second_arg_value
Weitere Informationen zum Ausführen eines Trainingsjobs.
Python
Geben Sie in der Jobkonfiguration die Kennzeichnung der Skalierungsstufe sowie die Maschinentypen im Objekt TrainingInput
an.
Das folgende Beispiel zeigt, wie Sie für einen Job mit einem benutzerdefinierten Verarbeitungscluster eine Darstellung von "Job" erstellen.
training_inputs = {'scaleTier': 'CUSTOM', 'masterType': 'n1-highcpu-16', 'workerType': 'n1-highcpu-16', 'parameterServerType': 'n1-highmem-8', 'evaluatorType': 'n1-highcpu-16', 'workerCount': 9, 'parameterServerCount': 3, 'evaluatorCount': 1, 'packageUris': ['gs://my/trainer/path/package-0.0.0.tar.gz'], 'pythonModule': 'trainer.task' 'args': ['--arg1', 'value1', '--arg2', 'value2'], 'region': 'us-central1', 'jobDir': 'gs://my/training/job/directory', 'runtimeVersion': '2.11', 'pythonVersion': '3.7'} job_spec = {'jobId': my_job_name, 'trainingInput': training_inputs}
training_inputs
und job_spec
sind willkürliche Kennzeichnungen. Sie können diesen Wörterbüchern beliebige Namen geben. Allerdings müssen die Wörterbuchschlüssel genauso wie oben gezeigt benannt werden, da sie den Namen in den Ressourcen Job
und TrainingInput
entsprechen müssen.
Skalierungsstufen
Google kann die Konfiguration der Skalierungsstufen für verschiedene Jobs auf Basis von Kundenfeedback und der Verfügbarkeit von Cloudressourcen im Laufe der Zeit optimieren. Die Definition der einzelnen Skalierungsstufen erfolgt gemäß ihrer Eignung für bestimmte Arten von Jobs. Im Allgemeinen gilt Folgendes: Je höher die Stufe, desto mehr Maschinen werden dem Cluster zugeordnet und desto leistungsstärker sind die Spezifikationen der einzelnen virtuellen Maschinen. Wenn Sie die Komplexität der Skalierungsstufe erhöhen, steigen auch die stündlichen Kosten der Trainingsjobs, die in Trainingseinheiten gemessen werden. Auf der Preisseite können Sie die Kosten für Ihren Job berechnen.
AI Platform Training unterstützt weder verteiltes Training noch Training mit Beschleunigern für scikit-learn- oder XGBoost-Code. Wenn im Trainingsjob scikit-learn- oder XGBoost-Code ausgeführt wird, müssen Sie die Skalierungsstufe auf BASIC
oder CUSTOM
festlegen.
Im Folgenden sind die Kennungen der Skalierungsstufen aufgeführt:
AI Platform Training-Skalierungsstufe | |
---|---|
BASIC
|
Eine einzelne Worker-Instanz. Diese Stufe eignet sich zum Kennenlernen der Funktionsweise von AI Platform Training und zum Experimentieren mit neuen Modellen unter Verwendung kleiner Datasets. Compute Engine-Maschinenname: n1-standard-4 |
STANDARD_1
|
Eine Master-Instanz plus vier Worker und drei Parameterserver. Verwenden Sie diese Skalierungsstufe nur, wenn Sie mit TensorFlow trainieren oder benutzerdefinierte Container verwenden. Compute Engine-Maschinenname, Master: n1-highcpu-8, Worker: n1-highcpu-8, Parameterserver: n1-standard-4 |
PREMIUM_1
|
Eine Master-Instanz plus 19 Worker und 11 Parameterserver. Verwenden Sie diese Skalierungsstufe nur, wenn Sie mit TensorFlow trainieren oder benutzerdefinierte Container verwenden. Compute Engine-Maschinenname, Master: n1-highcpu-16, Worker: n1-highcpu-16, Parameterserver: n1-highmem-8 |
BASIC_GPU
|
Eine einzelne Worker-Instanz mit einer GPU. Weitere Informationen zu Grafikprozessoren (GPUs) finden Sie im Abschnitt zum Training mit GPUs. Verwenden Sie diese Skalierungsstufe nur, wenn Sie mit TensorFlow trainieren oder einen benutzerdefinierten Container verwenden. Compute Engine-Maschinenname: n1-standard-8 mit einer GPU |
BASIC_TPU
|
Eine Master-VM und eine Cloud TPU mit acht TPU v2-Kernen. Weitere Informationen finden Sie unter TPUs zum Trainieren eines Modells verwenden. Verwenden Sie diese Skalierungsstufe nur, wenn Sie mit TensorFlow trainieren oder benutzerdefinierte Container verwenden. Compute Engine-Maschinenname, Master: n1-standard-4, Worker: Cloud TPU (8 TPU v2-Kerne) |
CUSTOM
|
Die Skalierungsstufe CUSTOM ist keine vordefinierte Stufe, sondern ermöglicht Ihnen vielmehr, Ihre eigene Clusterspezifikation zu verwenden. Orientieren Sie sich bei Verwendung dieser Stufe an den folgenden Richtlinien, um Werte zur Konfiguration des Verarbeitungsclusters festzulegen:
|
Maschinentypen für die Skalierungsstufe "Custom"
Verwenden Sie zur gezielteren Steuerung des für das Modelltraining genutzten Verarbeitungsclusters eine benutzerdefinierte Skalierungsstufe. Geben Sie die Konfiguration im Objekt TrainingInput
in der Jobkonfiguration an. Wenn Sie mit dem gcloud ai-platform jobs submit training
-Befehl den Trainingsjob senden, können Sie die gleichen Kennzeichnungen verwenden.
Setzen Sie die Skalierungsstufe (
scaleTier
) aufCUSTOM
.Legen Sie Werte für die Anzahl der benötigten Worker (
workerCount
), Parameterserver (parameterServerCount
) und Evaluators (evaluatorCount
) fest.AI Platform Training unterstützt nur verteiltes Training, wenn Sie mit TensorFlow trainieren oder einen benutzerdefinierten Container verwenden. Wenn Ihr Trainingsjob scikit-learn- oder XGBoost-Code ausführt, geben Sie keine Worker, Parameterserver oder Evaluators an.
Legen Sie den Maschinentyp für den Master-Worker (
masterType
) fest. Wenn Sie Worker, Parameterserver oder Evaluators verwenden möchten, legen Sie die Maschinentypen für diese in den FeldernworkerType
,parameterServerType
bzw.evaluatorType
fest.Sie können für
masterType
,workerType
,parameterServerType
undevaluatorType
unterschiedliche Maschinentypen angeben, allerdings nicht für einzelne Instanzen. Sie haben beispielsweise die Möglichkeit, für die Parameterserver den Maschinentypn1-highmem-8
festzulegen. Sie können jedoch nicht für einige Parameterservern1-highmem-8
und für anderen1-highcpu-16
verwenden.Wenn Sie nur einen Worker mit Standardeinstellung brauchen und keinen vollen Cluster, sollten Sie die Standardskalierungsstufe mit einem Maschinentypen nur für den Master angeben. Somit erhalten Sie nur einen Worker. Hier sehen Sie eine Beispieldatei für
config.yaml
:trainingInput: scaleTier: CUSTOM masterType: n1-highcpu-16
Compute Engine-Maschinentypen
Sie können die Namen bestimmter vordefinierter Compute Engine-Maschinentypen für masterType
, workerType
, parameterServerType
und evaluatorType
Ihrer Jobs verwenden. Wenn Sie mit TensorFlow trainieren oder benutzerdefinierte Container verwenden, können Sie wahlweise auch verschiedene Arten von GPUs mit diesen Maschinentypen einsetzen.
Die folgende Liste enthält die Kennzeichnungen für die Compute Engine-Maschinentypen, die Sie für Ihren Trainingsjob verwenden können:
e2-standard-4
e2-standard-8
e2-standard-16
e2-standard-32
e2-highmem-2
e2-highmem-4
e2-highmem-8
e2-highmem-16
e2-highcpu-16
e2-highcpu-32
n2-standard-4
n2-standard-8
n2-standard-16
n2-standard-32
n2-standard-48
n2-standard-64
n2-standard-80
n2-highmem-2
n2-highmem-4
n2-highmem-8
n2-highmem-16
n2-highmem-32
n2-highmem-48
n2-highmem-64
n2-highmem-80
n2-highcpu-16
n2-highcpu-32
n2-highcpu-48
n2-highcpu-64
n2-highcpu-80
n1-standard-4
n1-standard-8
n1-standard-16
n1-standard-32
n1-standard-64
n1-standard-96
n1-highmem-2
n1-highmem-4
n1-highmem-8
n1-highmem-16
n1-highmem-32
n1-highmem-64
n1-highmem-96
n1-highcpu-16
n1-highcpu-32
n1-highcpu-64
n1-highcpu-96
c2-standard-4
c2-standard-8
c2-standard-16
c2-standard-30
c2-standard-60
m1-ultramem-40
m1-ultramem-80
m1-ultramem-160
m1-megamem-96
a2-highgpu-1g
* (Vorschau)a2-highgpu-2g
* (Vorschau)a2-highgpu-4g
* (Vorschau)a2-highgpu-8g
* (Vorschau)a2-megagpu-16g
* (Vorschau)
Weitere Informationen zu den technischen Spezifikationen jedes Maschinentyps finden Sie in der Compute Engine-Dokumentation zu Maschinentypen.
Legacy-Maschinentypen
Sie können ältere Maschinentypnamen angeben, statt Compute Engine-Legacy-Maschinentypen zu verwenden. Diese Maschinentypen bieten dieselben vCPU- und Speicherressourcen wie die entsprechenden Compute Engine-Maschinentypen, haben jedoch zusätzliche Konfigurationseinschränkungen:
Sie können die GPU-Nutzung nicht mit
acceleratorConfig
anpassen. Einige ältere Maschinentypen enthalten jedoch GPUs. Die folgende Tabelle verdeutlicht dies.Wenn Ihre Trainingsjobkonfiguration mehrere Computer verwendet, können Sie Compute Engine-Maschinentypen nicht mit Legacy-Maschinentypen kombinieren. Der Master-Worker, die Worker, die Parameterserver und die Evaluators müssen alle Maschinentypen aus der einen oder der anderen Gruppe verwenden.
Wenn Sie beispielsweise
masterType
aufn1-highcpu-32
(Compute Engine-Maschinentyp) festlegen, können SieworkerType
nicht aufcomplex_model_m
(Legacy-Maschinentyp) festlegen, jedoch aufn1-highcpu-16
(anderer Compute Engine-Maschinentyp).
In der folgenden Tabelle werden die Legacy-Maschinentypen beschrieben:
Legacy-Maschinentypen | |
---|---|
standard
|
Grundlegende Maschinenkonfiguration; eignet sich zum Trainieren einfacher Modelle mit kleinen bis mittleren Datasets. Compute Engine-Maschinenname: n1-standard-4 |
large_model
|
Maschine mit viel Speicher, die sich besonders für Parameterserver in großen Modellen mit vielen verborgenen Ebenen oder Ebenen mit einer sehr großen Anzahl von Knoten eignet. Compute Engine-Maschinenname: n1-highmem-8 |
complex_model_s
|
Maschine, die sich für den Master und die Worker des Clusters eignet, wenn das Modell mehr Rechenvorgänge erfordert, als die Standardmaschine zufriedenstellend verarbeiten kann. Compute Engine-Maschinenname: n1-highcpu-8 |
complex_model_m
|
Maschine mit etwa doppelt so vielen Kernen und etwa doppelt so viel Speicher wie "complex_model_s". Compute Engine-Maschinenname: n1-highcpu-16 |
complex_model_l
|
Maschine mit etwa doppelt so vielen Kernen und etwa doppelt so viel Speicher wie "complex_model_m". Compute Engine-Maschinenname: n1-highcpu-32 |
standard_gpu
|
Maschine, die dem Standardtyp entspricht, aber zusätzlich eine einzelne GPU enthält. Verwenden Sie diesen Maschinentyp nur, wenn Sie oder benutzerdefinierte Container verwenden. Compute Engine-Maschinenname:n1-standard-8 mit einer GPU |
complex_model_m_gpu
|
Maschine, die „complex_model_m“ entspricht, aber zusätzlich vier GPUs enthält. Verwenden Sie diesen Maschinentyp nur, wenn Sie mit TensorFlow trainieren oder benutzerdefinierte Container verwenden. Compute Engine-Maschinenname: n1-standard-16 mit 4 GPUs |
complex_model_l_gpu
|
Maschine, die „complex_model_l“ entspricht, aber auch umfasst acht GPUs. Verwenden Sie diesen Maschinentyp nur, wenn Sie mit TensorFlow trainieren oder benutzerdefinierte Container verwenden. Compute Engine-Maschinenname: n1-standard-32 mit 8 GPUs |
standard_p100
|
Maschine, die dem Standard entspricht, aber zusätzlich eine einzelne NVIDIA Tesla P100-GPU enthält. Verwenden Sie diesen Maschinentyp nur, wenn Sie mit TensorFlow trainieren oder benutzerdefinierte Container verwenden. Compute Engine-Maschinenname: n1-standard-8-p100x1 |
complex_model_m_p100
|
Maschine, die "complex_model_m" entspricht, aber zusätzlich vier NVIDIA Tesla P100-GPUs enthält. Verwenden Sie diesen Maschinentyp nur, wenn Sie mit TensorFlow trainieren oder benutzerdefinierte Container verwenden. Compute Engine-Maschinenname: n1-standard-16-p100x4 |
standard_v100
|
Maschine, die dem Standard entspricht, aber zusätzlich eine einzelne NVIDIA Tesla V100-GPU enthält. Verwenden Sie diesen Maschinentyp nur, wenn Sie mit TensorFlow trainieren oder benutzerdefinierte Container verwenden. Compute Engine-Maschinenname: n1-standard-8-v100x1 |
large_model_v100
|
Maschine, die "large_model" entspricht, aber zusätzlich eine einzelne NVIDIA Tesla V100-GPU enthält. Verwenden Sie diesen Maschinentyp nur, wenn Sie mit TensorFlow trainieren oder benutzerdefinierte Container verwenden. Compute Engine-Maschinenname: n1-highmem-8-v100x1 |
complex_model_m_v100
|
Maschine, die "complex_model_m" entspricht, aber zusätzlich vier NVIDIA Tesla V100-GPUs enthält. Verwenden Sie diesen Maschinentyp nur, wenn Sie mit TensorFlow trainieren oder benutzerdefinierte Container verwenden. Compute Engine-Maschinenname: n1-standard-16-v100x4 |
complex_model_l_v100
|
Maschine, die "complex_model_l" entspricht, aber zusätzlich acht NVIDIA Tesla V100-GPUs enthält. Verwenden Sie diesen Maschinentyp nur, wenn Sie mit TensorFlow trainieren oder benutzerdefinierte Container verwenden. Compute Engine-Maschinenname: n1-standard-32-v100x8 |
Training mit GPUs und TPUs
Einige Skalierungsstufen und alte Maschinentypen umfassen Grafikprozessoren (GPUs). Sie können auch mehrere GPUs Ihrer Wahl hinzufügen, wenn Sie einen Compute Engine-Maschinentyp verwenden. Weitere Informationen finden Sie unter Training mit GPUs.
Sie müssen die Skalierungsstufe BASIC_TPU
oder den Maschinentyp cloud_tpu
verwenden, um ein Training mit Tensor Processing Units (TPUs) durchzuführen. Der Maschinentyp cloud_tpu
verfügt über spezielle Konfigurationsoptionen: Sie können ihn entweder mit Compute Engine-Maschinentypen oder mit älteren Maschinentypen verwenden. Auch eine Konfiguration für die Verwendung von 8 TPU v2-Kernen oder 8 TPU v3-Kernen ist möglich. Weitere Informationen finden Sie unter Verwenden von TPUs für Trainingsjobs