本頁說明如何在 Dataflow 上使用 TPU 執行 Apache Beam 管道。使用 TPU 的工作會產生費用,詳情請參閱 Dataflow 定價頁面。
如要進一步瞭解如何搭配使用 TPU 和 Dataflow,請參閱「Dataflow 支援 TPU」。
選用:預留特定加速器
雖然您可以隨選使用 TPU,但我們強烈建議您搭配專門指定的 Google Cloud預訂使用 Dataflow TPU。 這有助於確保您能存取可用的加速器,並縮短工作人員啟動時間。使用 TPU 預留項目的管道不需要額外的 TPU 配額。
如果您未預訂,而是選擇隨選使用 TPU,請在執行管道前佈建 TPU 配額。
選用:佈建 TPU 配額
您可以透過預留項目或隨選容量使用 TPU。如要隨選使用 TPU,必須先佈建 TPU 配額。如果使用特定目標預訂,則可略過本節。
如要隨需使用 TPU,而不需預訂,請按照下列步驟檢查 Compute Engine API 的 TPU 配額限制和目前用量:
主控台
前往 Google Cloud 控制台的「配額」頁面:
在「篩選器」
方塊中,執行下列操作:請參閱下表,根據 TPU 版本和機器類型選取並複製配額的屬性。舉例來說,如果您打算建立機器類型開頭為
ct5lp-
的隨選 TPU v5e 節點,請輸入Name: TPU v5 Lite PodSlice chips
。TPU 版本,機器類型開頭為 隨選執行個體配額的屬性和名稱 TPU v5e、
ct5lp-
Name:
TPU v5 Lite PodSlice chipsTPU v5p、
ct5p-
Name:
TPU v5p chipsTPU v6e、
ct6e-
Dimensions (e.g. location):
tpu_family:CT6E選取「Dimensions (e.g. location)」(維度,例如位置) 屬性,然後輸入
region:
,並在後面加上您打算啟動管道的區域名稱。舉例來說,如果您打算使用us-west4-a
區域,請輸入region:us-west4
。TPU 配額是區域配額,因此同一區域內的所有可用區都會共用相同的 TPU 配額。
設定自訂容器映像檔
如要在 Dataflow 管道中與 TPU 互動,您必須在管道執行階段環境中提供可在 XLA 裝置上運作的軟體。您必須根據管道需求安裝 TPU 程式庫,並根據使用的 TPU 裝置設定環境變數。
如要自訂容器映像檔,請將 Apache Beam 安裝到具有必要 TPU 程式庫的現成基本映像檔中。或者,您也可以將 TPU 軟體安裝到發布的映像檔,並搭配 Apache Beam SDK 版本使用。
如要提供自訂容器映像檔,請使用 sdk_container_image
管道選項。詳情請參閱「在 Dataflow 中使用自訂容器」。
使用 TPU 加速器時,您需要在容器映像檔中設定下列環境變數。
ENV TPU_SKIP_MDS_QUERY=1 # Don't query metadata
ENV TPU_HOST_BOUNDS=1,1,1 # There's only one host
ENV TPU_WORKER_HOSTNAMES=localhost
ENV TPU_WORKER_ID=0 # Always 0 for single-host TPUs
視您使用的加速器而定,下表中的變數也必須設定。
類型 | 拓撲 | 必要 Dataflow worker_machine_type |
其他環境變數 |
---|---|---|---|
tpu-v5-lite-podslice | 1x1 | ct5lp-hightpu-1t | TPU_ACCELERATOR_TYPE=v5litepod-1 |
tpu-v5-lite-podslice | 2x2 | ct5lp-hightpu-4t | TPU_ACCELERATOR_TYPE=v5litepod-4 |
tpu-v5-lite-podslice | 2x4 | ct5lp-hightpu-8t | TPU_ACCELERATOR_TYPE=v5litepod-8 |
tpu-v6e-slice | 1x1 | ct6e-standard-1t | TPU_ACCELERATOR_TYPE=v6e-1 |
tpu-v6e-slice | 2x2 | ct6e-standard-4t | TPU_ACCELERATOR_TYPE=v6e-4 |
tpu-v6e-slice | 2x4 | ct6e-standard-8t | TPU_ACCELERATOR_TYPE=v6e-8 |
tpu-v5p-slice | 2x2x1 | ct5p-hightpu-4t | TPU_ACCELERATOR_TYPE=v5p-8 |
自訂容器映像檔的 Dockerfile 範例如下:
FROM python:3.11-slim
COPY --from=apache/beam_python3.11_sdk:2.66.0 /opt/apache/beam /opt/apache/beam
# Configure the environment to access TPU device
ENV TPU_SKIP_MDS_QUERY=1
ENV TPU_HOST_BOUNDS=1,1,1
ENV TPU_WORKER_HOSTNAMES=localhost
ENV TPU_WORKER_ID=0
# Configure the environment for the chosen accelerator.
# Adjust according to the accelerator you use.
ENV TPU_ACCELERATOR_TYPE=v5litepod-1
ENV TPU_CHIPS_PER_HOST_BOUNDS=1,1,1
# Install TPU software stack.
RUN pip install jax[tpu] apache-beam[gcp]==2.66.0 -f https://storage.googleapis.com/jax-releases/libtpu_releases.html
ENTRYPOINT ["/opt/apache/beam/boot"]
使用 TPU 執行工作
使用 TPU 執行 Dataflow 工作時,請注意下列事項:
- 由於 TPU 容器可能很大,為避免磁碟空間不足,請使用
--disk_size_gb
管道選項,將預設開機磁碟大小增加至 50 GB,或容器映像檔所需的適當大小。 - 限制工作站內平行處理。
TPU 和工作站平行處理
在預設設定中,Dataflow Python 管道會為每個 VM 核心啟動一個 Apache Beam SDK 程序。TPU 機器類型具有大量 vCPU 核心,但只有一個程序可以在 TPU 裝置上執行運算。此外,程序可能會在整個生命週期內預留 TPU 裝置。因此,執行 Dataflow TPU 管道時,您必須限制工作站內的平行處理量。如要限制工作站的平行處理量,請按照下列指引操作:
- 如果您的用途是針對模型執行推論,請使用 Beam
RunInference
API。詳情請參閱「Beam 中的大型語言模型推論」。 - 如果無法使用 Beam
RunInference
API,請使用 Beam 的多程序共用物件,將特定作業限制為單一程序。 - 如果無法使用上述建議,且偏好每個工作站只啟動一個 Python 程序,請設定
--experiments=no_use_multiple_sdk_containers
管道選項。 - 如果工作站的 vCPU 數量超過 100 個,請使用
--number_of_worker_harness_threads
管道選項減少執行緒數量。請參閱下表,確認您的 TPU 類型是否使用超過 100 個 vCPU。
下表列出每種 TPU 設定的每個工作站總運算資源。
TPU 類型 | 拓撲 | 機器類型 | TPU 晶片 | vCPU | RAM (GB) |
---|---|---|---|---|---|
tpu-v5-lite-podslice | 1x1 | ct5lp-hightpu-1t | 1 | 24 | 48 |
tpu-v5-lite-podslice | 2x2 | ct5lp-hightpu-4t | 4 | 112 | 192 |
tpu-v5-lite-podslice | 2x4 | ct5lp-hightpu-8t | 8 | 224 | 384 |
tpu-v6e-slice | 1x1 | ct6e-standard-1t | 1 | 44 | 176 |
tpu-v6e-slice | 2x2 | ct6e-standard-4t | 4 | 180 | 720 |
tpu-v6e-slice | 2x4 | ct6e-standard-8t | 8 | 360 | 1440 |
tpu-v5p-slice | 2x2x1 | ct5p-hightpu-4t | 4 | 208 | 448 |
使用 TPU 執行管道
如要使用 TPU 執行 Dataflow 工作,請使用下列指令。
python PIPELINE \
--runner "DataflowRunner" \
--project "PROJECT" \
--temp_location "gs://BUCKET/tmp" \
--region "REGION" \
--dataflow_service_options "worker_accelerator=type:TPU_TYPE;topology:TPU_TOPOLOGY" \
--worker_machine_type "MACHINE_TYPE" \
--disk_size_gb "DISK_SIZE_GB" \
--sdk_container_image "IMAGE" \
--number_of_worker_harness_threads NUMBER_OF_THREADS
更改下列內容:
- PIPELINE:管道的原始碼檔案。
- PROJECT: Google Cloud 專案名稱。
- BUCKET:Cloud Storage bucket。
- :Dataflow 區域,例如
us-central1
。REGION - TPU_TYPE:支援的 TPU 類型,例如
tpu-v5-lite-podslice
。如需完整清單,請參閱「支援的 TPU 加速器」。 - TPU_TOPOLOGY:TPU 拓撲,例如
1x1
。 - MACHINE_TYPE:對應的機器類型,例如
ct5lp-hightpu-1t
。 - DISK_SIZE_GB:每個工作站 VM 的開機磁碟大小,例如
100
。 - IMAGE:Docker 映像檔的 Artifact Registry 路徑。
- NUMBER_OF_THREADS:選用。工作站輔助執行緒的數量。
驗證 Dataflow 工作
如要確認工作是否使用搭載 TPU 的工作站 VM,請按照下列步驟操作:
在 Google Cloud 控制台中,依序前往「Dataflow」>「Jobs」(工作) 頁面。
選取職務。
按一下「工作指標」分頁標籤。
在「Autoscaling」(自動調度資源) 區段中,確認至少有一個「Current workers」(目前的工作人員) VM。
在側邊的「Job info」(工作資訊) 窗格中,確認
machine_type
以ct
開頭。例如:ct6e-standard-1t
。這表示 TPU 用量。
排解 Dataflow 工作問題
如果使用 TPU 執行 Dataflow 工作時發生問題,請參閱排解 Dataflow TPU 工作問題。
後續步驟
- 進一步瞭解 Dataflow 的 TPU 支援。
- 瞭解 Beam 中的大型模型推論。