Maschinentypen oder Skalierungsstufen angeben

Vor dem Ausführen eines Trainingsjobs auf AI Platform geben Sie die Anzahl und den Typ der erforderlichen Maschinen an. 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
  workerCount: 9
  parameterServerCount: 3

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 der gleichen Konfiguration wie im vorherigen Beispiel senden, ohne jedoch eine Konfigurationsdatei zu verwenden:

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-server-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',
    'workerCount': 9,
    'parameterServerCount': 3,
    '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': '1.14',
    'pythonVersion': '3.5'}

job_spec = {'jobId': my_job_name, 'trainingInput': training_inputs}

Beachten Sie, dass training_inputs und job_spec willkürliche Kennzeichnungen sind. Sie können diesen Wörterbüchern beliebige Namen geben. Allerdings müssen die Wörterbuchschlüssel genauso wie oben gezeigt benannt werden, da diese 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-Skalierungsstufe
BASIC

Eine einzelne Worker-Instanz. Diese Stufe eignet sich zum Kennenlernen der Funktionsweise von AI Platform und 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 einzelnen NVIDIA Tesla K80-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 k80-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.

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 erforderliche Anzahl der Parameterserver (parameterServerCount) und Worker (workerCount) fest.

    AI Platform Training unterstützt nur verteiltes Training, wenn Sie mit TensorFlow trainieren oder einen benutzerdefinierten Container verwenden. Wenn im Trainingsjob scikit-learn- oder XGBoost-Code ausgeführt wird, geben Sie weder Worker noch Parameterserver an.

  • Legen Sie den Maschinentyp für den Master-Worker (masterType) fest. Wenn Sie Parameterserver oder Worker verwenden, legen Sie in den Feldern parameterServerType und workerType entsprechende Maschinentypen fest.

    Sie können für masterType, parameterServerType und workerType 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. Nicht möglich ist jedoch, für einen Teil der Parameterserver n1-highmem-8 und für andere n1-highcpu-16 zu 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 und parameterServerType Ihrer Jobs verwenden. Wenn Sie mit TensorFlow trainieren oder benutzerdefinierte Container verwenden, können Sie wahlweise auch verschiedene Arten von GPUs mit diesen Maschinentypen verwenden.

Die folgende Liste enthält die Kennzeichnungen für die Compute Engine-Maschinentypen, die Sie für Ihren Trainingsjob verwenden können:

  • 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

Weitere Informationen finden Sie unter Von Compute Engine-Maschinentypen bereitgestellte virtuelle CPU (vCPU) und Speicherressourcen oder lesen Sie die Vergleichstabelle am Ende dieser Seite.

Alte Maschinentypen

Sie können ältere Maschinentypnamen angeben, statt alte Compute Engine-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 Ihr Trainingsjobkonfiguration mehrere Computer verwendet, können Sie Compute Engine-Maschinentypen nicht mit alten Maschinentypen kombinieren. Der Master-Worker, die Parameterserver und die Worker müssen alle Maschinentypen jeweils aus der einen oder der anderen Gruppe verwenden.

    Wenn Sie zum Beispiel den masterType als n1-highcpu-32 (Compute Engine-Maschinentyp) konfigurieren, können Sie workerType oder parameterServerType nicht als complex_model_m (alter Maschinentyp) festlegen, die Einstellung auf n1-highcpu-16 (anderer Compute Engine-Maschinentyp) hingegen ist möglich.

In der folgenden Tabelle werden die alten Maschinentypen beschrieben:

Alte 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 Standard entspricht, aber zusätzlich eine einzelne NVIDIA Tesla K80-GPU enthält. Verwenden Sie diesen Maschinentyp nur, wenn Sie mit TensorFlow trainieren oder benutzerdefinierte Container verwenden.

Compute Engine-Maschinenname: n1-standard-8 mit einer k80-GPU

complex_model_m_gpu

Maschine, die "complex_model_m" entspricht, aber zusätzlich vier NVIDIA Tesla K80-GPUs enthält. Verwenden Sie diesen Maschinentyp nur, wenn Sie mit TensorFlow trainieren oder benutzerdefinierte Container verwenden.

Compute Engine-Maschinenname: n1-standard-16-k80x4

complex_model_l_gpu

Maschine, die "complex_model_l" entspricht, aber zusätzlich acht NVIDIA Tesla K80-GPUs enthält Verwenden Sie diesen Maschinentyp nur, wenn Sie mit TensorFlow trainieren oder benutzerdefinierte Container verwenden.

Compute Engine-Maschinenname: n1-standard-32-k80x8

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

Maschinentypen im Vergleich

Mit den Informationen in den folgenden Tabellen können Sie die für das Training verfügbaren älteren Maschinentypen mit Compute Engine-Maschinentypen vergleichen, wenn Sie die Skalierungsstufe auf CUSTOM festlegen.

Die genauen Spezifikationen der Maschinentypen können sich jederzeit ändern.

Wenn der Trainingsjob TensorFlow oder benutzerdefinierte Container verwendet, können Sie Maschinentypen mit Beschleunigern verwenden. Verwenden Sie ansonsten keine Maschinentypen mit Beschleunigern.

Name des Maschinentyps Kategorie des Maschinentyps Beschleuniger Virtuelle CPUs Arbeitsspeicher (GB)
n1-standard-4 Compute Engine Anpassbar 4 15
n1-standard-8 Compute Engine Anpassbar 8 30
n1-standard-16 Compute Engine Anpassbar 16 60
n1-standard-32 Compute Engine Anpassbar 32 120
n1-standard-64 Compute Engine Anpassbar 64 240
n1-standard-96 Compute Engine Anpassbar 96 360
n1-highmem-2 Compute Engine Anpassbar 2 13
n1-highmem-4 Compute Engine Anpassbar 4 26
n1-highmem-8 Compute Engine Anpassbar 8 52
n1-highmem-16 Compute Engine Anpassbar 16 104
n1-highmem-32 Compute Engine Anpassbar 32 208
n1-highmem-64 Compute Engine Anpassbar 64 416
n1-highmem-96 Compute Engine Anpassbar 96 624
n1-highcpu-16 Compute Engine Anpassbar 16 14,4
n1-highcpu-32 Compute Engine Anpassbar 32 28,8
n1-highcpu-64 Compute Engine Anpassbar 64 57,6
n1-highcpu-96 Compute Engine Anpassbar 96 86,4
cloud_tpu TPU 8 (TPU v2- oder TPU v3-Kerne)
standard legacy - 4 15
large_model legacy - 8 52
complex_model_s legacy - 8 7,2
complex_model_m legacy - 16 14,4
complex_model_l legacy - 32 28,8
standard_gpu legacy 1 (K80 GPU) 8 30
complex_model_m_gpu legacy 4 (K80 GPU) 16 60
complex_model_l_gpu legacy 8 (K80 GPU) 32 120
standard_p100 legacy 1 (P100 GPU) 8 30
complex_model_m_p100 legacy 4 (P100 GPU) 16 60
standard_v100 legacy 1 (V100 GPU) 8 30
large_model_v100 legacy 1 (V100 GPU) 16 52
complex_model_m_v100 legacy 4 (V100 GPU) 16 60
complex_model_l_v100 legacy 8 (V100 GPU) 32 120

Weitere Informationen

Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...