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

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

指定您的設定

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

gcloud

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

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

trainingInput:
  scaleTier: CUSTOM
  masterType: complex_model_m
  workerType: complex_model_m
  parameterServerType: large_model
  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 beta 元件,就可以利用指令列標記指定叢集設定詳細資料,而不是在設定檔進行。進一步瞭解如何使用這些標記。如要安裝或更新 gcloud beta 元件,請執行 gcloud components install beta

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

gcloud beta 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 complex_model_m \
        --worker-machine-type complex_model_m \
        --parameter-server-machine-type large_model \
        --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': 'complex_model_m',
    'workerType': 'complex_model_m',
    'parameterServerType': 'large_model',
    '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.13',
    'pythonVersion': '3.5'}

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

請注意,training_inputsjob_spec 是任意 ID:您可以隨意命名這些字典,但字典索引鍵的名稱必須與顯示名稱完全相同,以符合 JobTrainingInput 資源中的名稱。

資源調度層級

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

以下是資源調度層級 ID:

AI Platform 資源調度層級
BASIC

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

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

STANDARD_1

一個主要執行個體,加上四個工作站和三個參數伺服器。

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

PREMIUM_1

一個主要執行個體,加上 19 個工作站和 11 個參數伺服器。

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

BASIC_GPU

搭配單一 NVIDIA Tesla K80 GPU 的單一工作站執行個體。 如要進一步瞭解圖形處理器 (GPU),請參閱使用 GPU 訓練一節。

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

BASIC_TPU

一個主要 VM 和一個 Cloud TPU。請參閱如何使用 TPU 執行訓練工作

Compute Engine 機器名稱,主要:n1-standard-4,工作站:Cloud TPU

CUSTOM

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

  • 您必須設定 TrainingInput.masterType 來指定要用於主要節點的機器類型。這是唯一必填的設定。請參閱下方說明的機器類型
  • 您可設定 TrainingInput.workerCount 以指定要使用的工作站數量。如果指定一個或多個工作站,您也必須設定 TrainingInput.workerType 來指定要用於工作站節點的機器類型。
  • 您可設定 TrainingInput.parameterServerCount 以指定要使用的參數伺服器數量。如果指定一個或多個參數伺服器,您也必須設定 TrainingInput.parameterServerType 來指定要用於參數伺服器的機器類型。

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

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

  • 將資源調度層級 (scaleTier) 設為 CUSTOM
  • 根據您需要的參數伺服器 (parameterServerCount) 和工作站 (workerCount) 數量設定值。
  • 為主要工作站 (masterType)、參數伺服器 (parameterServerType) 和工作站 (workerType) 設定機器類型。 您可為 masterTypeparameterServerTypeworkerType 指定不同的機器類型,但是不能為個別執行個體使用不同的機器類型。例如,您可在參數伺服器使用 large_model 機器類型,但是不能將參數伺服器設定為有些使用 large_model,有些使用 complex_model_m
  • 如果您只需要一個具備自訂設定的工作站 (而不是整個叢集都需要自訂設定),應針對主要執行個體的機器類型指定自訂資源調度層級。這樣就只會設定單一工作站。以下是範例 config.yaml 檔案:

    trainingInput:
      scaleTier: CUSTOM
      masterType: complex_model_m
    

以下是機器類型 ID:

AI Platform 機器名稱
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 的標準機器。

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

complex_model_m_gpu

相當於也包含四個 NVIDIA Tesla K80 GPU 的 complex_model_m 機器。

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

complex_model_l_gpu

相當於也包含八個 NVIDIA Tesla K80 GPU 的 complex_model_l 機器。

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

standard_p100

相當於也包含一個 NVIDIA Tesla P100 GPU 的標準機器。

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

complex_model_m_p100

相當於也包含四個 NVIDIA Tesla P100 GPU 的 complex_model_m 機器。

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

standard_v100

相當於也包含一個 NVIDIA Tesla V100 GPU 的標準機器。

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

large_model_v100

相當於也包含一個 NVIDIA Tesla V100 GPU 的 large_model 機器。

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

complex_model_m_v100

相當於也包含四個 NVIDIA Tesla V100 GPU 的 complex_model_m 機器。

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

complex_model_l_v100

相當於也包含八個 NVIDIA Tesla V100 GPU 的 complex_model_l 機器。

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

cloud_tpu

包含一個 Cloud TPU 的 TPU VM。

Compute Engine 機器類型

您也可以使用 Compute Engine 預先定義的某些機器類型名稱,而非以上所列的 AI Platform 機器類型。為訓練工作分配運算資源時,這樣可以提供更大的彈性。也可以讓您自訂工作使用 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 機器類型提供的資源

如果您的訓練工作設定使用多個機器,您將無法混合 AI Platform 機器類型及 Compute Engine 機器類型。 您的主要工作站、參數伺服器及工作站,都必須使用其中一種群組的機器類型。

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

以 GPU 及 TPU 進行訓練

部分資源調度層級及 AI Platform 機器類型包含圖形處理器 (GPU)。若您使用 Compute Engine 機器類型,也可以連結自己選擇的多種 GPU。詳情請參閱以 GPU 進行訓練

如要進一步瞭解 Tensor Processing Unit (TPU),請參閱如何使用 TPU 執行訓練工作

比較機器類型

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

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

AI Platform 機器類型

機器類型 加速器 虛擬 CPU 記憶體 (GB)
標準 - 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
cloud_tpu 8 (TPU 核心)

Compute Engine 機器類型

Compute Engine 機器類型依據預設不使用加速器,不過您可在訓練設定中將 GPU 連結至這些虛擬機器。

機器類型 虛擬 CPU 記憶體 (GB)
n1-standard-4 4 15
n1-standard-8 8 30
n1-standard-16 16 60
n1-standard-32 32 120
n1-standard-64 64 240
n1-standard-96 96 360
n1-highmem-2 2 13
n1-highmem-4 4 26
n1-highmem-8 8 52
n1-highmem-16 16 104
n1-highmem-32 32 208
n1-highmem-64 64 416
n1-highmem-96 96 624
n1-highcpu-16 16 14.4
n1-highcpu-32 32 28.8
n1-highcpu-64 64 57.6
n1-highcpu-96 96 86.4

後續步驟

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

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

這個網頁
TensorFlow 適用的 AI Platform