指定機器類型或資源調度層級

在 AI Platform 中執行訓練工作時,您必須指定所需的機器類型與數量。為使程序更為簡單,您可以從一組預先定義的叢集規格 (稱為「資源調度層級」) 中進行挑選。您也可以選擇「自訂」層級,自行指定機器類型。

指定您的設定

指定叢集設定的方式,取決於您要如何執行訓練工作:

gcloud

請建立一個代表 TrainingInput 物件的 YAML 設定檔,並在這個設定檔中指定資源調度層級 ID 和機器類型。您可以隨意命名這個檔案。按照慣例,名稱會是 config.yaml

下列範例顯示的設定檔 (config.yaml) 內容適用於使用「自訂」處理叢集的工作。

trainingInput:
  scaleTier: CUSTOM
  masterType: n1-highcpu-16
  workerType: n1-highcpu-16
  parameterServerType: n1-highmem-8
  workerCount: 9
  parameterServerCount: 3

執行 gcloud ai-platform jobs submit training 指令時,請在 --config 旗標中提供 YAML 檔案的路徑:

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

或者,您可以利用指令列旗標指定叢集設定詳細資料,而不是在設定檔指定。進一步瞭解如何使用這些旗標

以下範例顯示如何在不使用設定檔的情況下,提交與前一個範例採用相同設定的訓練工作:

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

進一步瞭解如何執行訓練工作

Python

在工作設定的 TrainingInput 物件中,指定資源調度層級 ID 和機器類型。

下列範例顯示如何為使用「自訂」處理叢集的工作建立工作表示法。

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}

請注意,training_inputsjob_spec 為任意 ID。您可以隨意為這些字典命名,不過字典索引鍵的名稱必須與顯示的完全相同,這樣才能與 JobTrainingInput 資源中的名稱保持一致。

資源調度層級

根據客戶的意見回饋及雲端資源的供應情形,Google 可能會隨時間經過,對不同工作的資源調度層級設定進行最佳化調整。各資源調度層級是根據該層級適合哪些特定工作類型進行定義。一般來說,層級越高,分配給叢集的機器就越多,每個虛擬機器的規格會更強大。增加資源調度層級的複雜度時,訓練工作的每小時費用 (以「訓練單位」計算),也會隨著上漲。若要計算工作費用,請參閱定價頁面

針對 scikit-learn 或 XGBoost 程式碼,AI Platform Training 不支援分散式訓練或使用加速器的訓練作業。如果訓練工作會執行 scikit-learn 或 XGBoost 程式碼,您必須將資源調度層級設為 BASICCUSTOM

資源調度層級 ID 如下:

AI Platform 資源調度層級
BASIC

單一工作站執行個體。這個層級適合學習如何使用 AI Platform,也適合使用小型資料集實驗新的模型。

Compute Engine 機器名稱:n1-standard-4

STANDARD_1

一個主要執行個體,加上四個工作站和三個參數伺服器。只有在使用 TensorFlow 或自訂容器進行訓練的情況下,才能使用這個資源調度層級。

Compute Engine 機器名稱,主要執行個體:n1-highcpu-8,工作站:n1-highcpu-8,參數伺服器:n1-standard-4

PREMIUM_1

一個主要執行個體,加上 19 個工作站和 11 個參數伺服器。請僅在使用 TensorFlow 或自訂容器進行訓練的情況下,再使用這個資源調度層級。

Compute Engine 機器名稱,主要執行個體:n1-highcpu-16,工作站:n1-highcpu-16,參數伺服器:n1-highmem-8

BASIC_GPU

使用一個 NVIDIA Tesla K80 GPU 的單一工作站執行個體。如要進一步瞭解圖形處理器 (GPU),請參閱使用 GPU 進行訓練一節。請僅在使用 TensorFlow 或自訂容器進行訓練的情況下,再使用這個資源調度層級。

Compute Engine 機器名稱:n1-standard-8,搭載一個 k80 GPU

BASIC_TPU

一個主要 VM 和一個具有八個 TPU v2 核心的 Cloud TPU。請參閱如何使用 TPU 執行訓練工作的相關說明。請僅在使用 TensorFlow 或自訂容器進行訓練的情況下,再使用這個資源調度層級。

Compute Engine 機器名稱,主要執行個體:n1-standard-4,工作站:Cloud TPU (8 個 TPU v2 核心)

CUSTOM

CUSTOM 層級不是固定層級,而是能讓您使用自己的叢集規格。使用此層級時,請依據下列規定來設定值,以設定您的處理叢集:

  • 您必須設定 TrainingInput.masterType 來指定要用於主要節點的機器類型。這是唯一必要的設定。請參閱下方說明的機器類型
  • 您可以設定 TrainingInput.workerCount 來指定要使用的工作站數量。如果您指定了一或多個工作站,則須一併設定 TrainingInput.workerType 來指定要用於工作站節點的機器類型。只有在使用 TensorFlow 或自動容器進行訓練的情況下,您才需要指定工作站。
  • 您可以設定 TrainingInput.parameterServerCount 來指定要使用的參數伺服器數量。如果您指定了一或多個參數伺服器,則須一併設定 TrainingInput.parameterServerType 來指定要用於參數伺服器的機器類型。只有在使用 TensorFlow 或自訂容器進行訓練的情況下,您才需要指定參數伺服器。

自訂資源調度層級適用的機器類型

您可以使用自訂資源調度層級,以更精細的方式控管用來訓練模型的處理叢集。請在工作設定的 TrainingInput 物件中指定所需設定值。如果您使用 gcloud ai-platform jobs submit training 指令提交訓練工作,則可使用相同的 ID:

  • 將資源調度層級 (scaleTier) 設為 CUSTOM

  • 設定所需的參數伺服器 (parameterServerCount) 和工作站 (workerCount) 數量值。

    只有在您是使用 TensorFlow 或自訂容器進行訓練的情況下,AI Platform Training 才能支援分散式訓練。如果訓練工作會執行 scikit-learn 或 XGBoost 程式碼,請勿指定工作站或參數伺服器。

  • 為主要工作站 (masterType) 設定機器類型。如果您已選擇使用參數伺服器或工作站,請在 parameterServerTypeworkerType 欄位中設定機器類型。

    您可以為 masterTypeparameterServerTypeworkerType 指定不同的機器類型,但不得為個別執行個體使用不同的機器類型。舉例來說,您可以為所有參數伺服器使用 n1-highmem-8 機器類型,但不得將部分參數伺服器設為使用 n1-highmem-8,並將其他的設為使用 n1-highcpu-16

  • 如果您只需要一個具備自訂設定的工作站 (而不是整個叢集都需要自訂設定),應僅針對主要執行個體的機器類型指定自訂資源調度層級。這樣就只會設定單一工作站。以下是範例 config.yaml 檔案:

    trainingInput:
      scaleTier: CUSTOM
      masterType: n1-highcpu-16
    

Compute Engine 機器類型

您可以將某些 Compute Engine 預先定義機器類型的名稱用於工作的 masterTypeworkerTypeparameterServerType。如果您是使用 TensorFlow 或自訂容器進行訓練,則可視需要針對這些機器類型使用各種類型的 GPU

下列清單包含可用於訓練工作的 Compute Engine 機器類型 ID:

  • 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

如要瞭解詳情,請參閱 Compute Engine 機器類型提供的虛擬 CPU (vCPU) 和記憶體資源,或參閱本頁結尾處的比較表

舊版機器類型

您可以為工作指定舊版機器類型名稱,而不使用 Compute Engine 機器類型。這些機器類型提供與同等 Compute Engine 機器類型相同的 vCPU 和記憶體資源,但具有其他設定限制:

  • 您無法使用 acceleratorConfig 自訂 GPU 的使用方式。不過,某些舊版機器類型包含 GPU。請參閱下表。

  • 如果您的訓練工作設定採用多個機器,您就無法混合使用 Compute Engine 機器類型和舊版機器類型。您的主要工作站、參數伺服器與一般工作站都必須使用同一個群組的機器類型。

    舉例來說,如果您將 masterType 設為 n1-highcpu-32 (Compute Engine 機器類型),就無法將 workerTypeparameterServerType 設為 complex_model_m (舊版機器類型),但可以將它們設為 n1-highcpu-16 (另一種 Compute Engine 機器類型)。

下表說明舊版機器類型:

舊版機器類型
standard

基本的機器設定,適合使用小型到中型資料集訓練簡單的模型時使用。

Compute Engine 機器名稱:n1-standard-4

large_model

具有大量記憶體的機器類型,特別適合在有大型模型 (有許多隱藏層級或層級的節點數量非常龐大) 時,用於參數伺服器。

Compute Engine 機器名稱:n1-highmem-8

complex_model_s

此機器類型適合在模型需要的運算能力超出標準機器所能處理的範圍時,用於叢集的主要執行個體和工作站。

Compute Engine 機器名稱:n1-highcpu-8

complex_model_m

此機器類型的核心數量和記憶體容量約為 complex_model_s 的兩倍。

Compute Engine 機器名稱:n1-highcpu-16

complex_model_l

此機器類型的核心數量和記憶體容量約為 complex_model_m 的兩倍。

Compute Engine 機器名稱:n1-highcpu-32

standard_gpu

此機器類型相當於搭載單一 NVIDIA Tesla K80 GPU 的 standard。請僅在使用 TensorFlow 或自訂容器進行訓練的情況下,再使用這個機器類型。

Compute Engine 機器名稱:n1-standard-8,搭載一個 k80 GPU

complex_model_m_gpu

此機器類型相當於搭載四個 NVIDIA Tesla K80 GPU 的 complex_model_m。只有在使用 TensorFlow 或自訂容器進行訓練的情況下,才能使用這個機器類型。

Compute Engine 機器名稱:n1-standard-16-k80x4

complex_model_l_gpu

此機器類型相當於搭載八個 NVIDIA Tesla K80 GPU 的 complex_model_l。只有在使用 TensorFlow 或自訂容器進行訓練的情況下,才能使用這個機器類型。

Compute Engine 機器名稱:n1-standard-32-k80x8

standard_p100

此機器類型相當於搭載單一 NVIDIA Tesla P100 GPU 的 standard。請僅在使用 TensorFlow 或自訂容器進行訓練的情況下,再使用這個機器類型。

Compute Engine 機器名稱:n1-standard-8-p100x1

complex_model_m_p100

此機器類型相當於搭載四個 NVIDIA Tesla P100 GPU 的 complex_model_m。只有在使用 TensorFlow 或自訂容器進行訓練的情況下,才能使用這個機器類型。

Compute Engine 機器名稱:n1-standard-16-p100x4

standard_v100

此機器類型相當於搭載單一 NVIDIA Tesla V100 GPU 的 standard。請僅在使用 TensorFlow 或自訂容器進行訓練的情況下,再使用這個機器類型。

Compute Engine 機器名稱:n1-standard-8-v100x1

large_model_v100

此機器類型相當於搭載單一 NVIDIA Tesla V100 GPU 的 large_model。請僅在使用 TensorFlow 或自訂容器進行訓練的情況下,再使用這個機器類型。

Compute Engine 機器名稱:n1-highmem-8-v100x1

complex_model_m_v100

此機器類型相當於搭載四個 NVIDIA Tesla V100 GPU 的 complex_model_m。只有在使用 TensorFlow 或自訂容器進行訓練的情況下,才能使用這個機器類型。

Compute Engine 機器名稱:n1-standard-16-v100x4

complex_model_l_v100

此機器類型相當於搭載八個 NVIDIA Tesla V100 GPU 的 complex_model_l。只有在使用 TensorFlow 或自訂容器進行訓練的情況下,才能使用這個機器類型。

Compute Engine 機器名稱:n1-standard-32-v100x8

使用 GPU 和 TPU 進行訓練

部分資源調度層級和舊版機器類型包含圖形處理器 (GPU)。若您使用 Compute Engine 機器類型,也可以連結自己選擇的數個 GPU。詳情請參閱使用 GPU 進行訓練的相關說明。

如要使用 Tensor Processing Unit (TPU) 進行訓練,您必須使用 BASIC_TPU 資源調度層級或 cloud_tpu 機器類型。cloud_tpu 機器類型具有特別設定選項:您可以將其搭配 Compute Engine 機器類型或舊版機器類型使用,也可以設定為使用 8 個 TPU v2 核心或 8 個 TPU v3 核心。瞭解如何在訓練工作中使用 TPU

比較機器類型

下表提供各項資訊,可讓您在將資源調度層級設定為 CUSTOM 時,比較可供訓練使用的 Compute Engine 機器類型及舊版機器類型。

機器類型的實際規格可能隨時變更。

如果您的訓練工作是使用 TensorFlow 或自訂容器,您可以使用具有加速器的機器類型,否則請勿使用具有加速器的機器類型。

機器類型名稱 機器類型類別 加速器 虛擬 CPU 記憶體 (GB)
n1-standard-4 Compute Engine 可靈活自訂 4 15
n1-standard-8 Compute Engine 可靈活自訂 8 30
n1-standard-16 Compute Engine 可靈活自訂 16 60
n1-standard-32 Compute Engine 可靈活自訂 32 120
n1-standard-64 Compute Engine 可靈活自訂 64 240
n1-standard-96 Compute Engine 可靈活自訂 96 360
n1-highmem-2 Compute Engine 可靈活自訂 2 13
n1-highmem-4 Compute Engine 可靈活自訂 4 26
n1-highmem-8 Compute Engine 可靈活自訂 8 52
n1-highmem-16 Compute Engine 可靈活自訂 16 104
n1-highmem-32 Compute Engine 可靈活自訂 32 208
n1-highmem-64 Compute Engine 可靈活自訂 64 416
n1-highmem-96 Compute Engine 可靈活自訂 96 624
n1-highcpu-16 Compute Engine 可靈活自訂 16 14.4
n1-highcpu-32 Compute Engine 可靈活自訂 32 28.8
n1-highcpu-64 Compute Engine 可靈活自訂 64 57.6
n1-highcpu-96 Compute Engine 可靈活自訂 96 86.4
cloud_tpu TPU 8 (TPU v2 或 TPU v3 核心)
標準 舊版 - 4 15
large_model 舊版 - 8 52
complex_model_s 舊版 - 8 7.2
complex_model_m 舊版 - 16 14.4
complex_model_l 舊版 - 32 28.8
standard_gpu 舊版 1 (K80 GPU) 8 30
complex_model_m_gpu 舊版 4 (K80 GPU) 16 60
complex_model_l_gpu 舊版 8 (K80 GPU) 32 120
standard_p100 舊版 1 (P100 GPU) 8 30
complex_model_m_p100 舊版 4 (P100 GPU) 16 60
standard_v100 舊版 1 (V100 GPU) 8 30
large_model_v100 舊版 1 (V100 GPU) 16 52
complex_model_m_v100 舊版 4 (V100 GPU) 16 60
complex_model_l_v100 舊版 8 (V100 GPU) 32 120

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Google Cloud Machine Learning 說明文件