Maschinentypen oder Skalierungsstufen angeben

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:

  • Sie müssen TrainingInput.masterType festlegen, um den Maschinentyp anzugeben, der für den Masterknoten zu verwenden ist. Dies ist die einzige erforderliche Einstellung. Weitere Informationen finden Sie nachfolgend unter Maschinentypen.
  • Sie können TrainingInput.workerCount festlegen, um die Anzahl der zu verwendenden Worker anzugeben. Bei Angabe von einem oder mehreren Workern müssen Sie auch TrainingInput.workerType festlegen, um den Maschinentyp anzugeben, der für die Worker-Knoten verwendet werden soll. Geben Sie Worker nur an, wenn Sie mit TensorFlow trainieren oder benutzerdefinierte Container verwenden.
  • Sie können TrainingInput.parameterServerCount festlegen, um die Anzahl der zu verwendenden Parameterserver anzugeben. Bei Angabe von einem oder mehreren Parameterservern müssen Sie auch TrainingInput.parameterServerType festlegen, um den Maschinentyp anzugeben, der für die Parameterserver verwendet werden soll. Geben Sie Parameterserver nur an, wenn Sie mit TensorFlow trainieren oder benutzerdefinierte Container verwenden.
  • Sie können TrainingInput.evaluatorCount festlegen, um die Anzahl der zu verwendenden Evaluators anzugeben. Wenn Sie einen oder mehrere Evaluators angeben, müssen Sie auch TrainingInput.evaluatorType festlegen, um den für die Evaluators zu verwendenden Maschinentyp anzugeben. Geben Sie nur dann Evaluators an, wenn Sie mit TensorFlow trainieren oder benutzerdefinierte Container verwenden.

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) auf CUSTOM.

  • 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 Feldern workerType, parameterServerType bzw. evaluatorType fest.

    Sie können für masterType, workerType, parameterServerType und evaluatorType unterschiedliche Maschinentypen angeben, allerdings nicht für einzelne Instanzen. Sie haben beispielsweise die Möglichkeit, für die Parameterserver den Maschinentyp n1-highmem-8 festzulegen. Sie können jedoch nicht für einige Parameterserver n1-highmem-8 und für andere n1-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 auf n1-highcpu-32 (Compute Engine-Maschinentyp) festlegen, können Sie workerType nicht auf complex_model_m (Legacy-Maschinentyp) festlegen, jedoch auf n1-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

Nächste Schritte