Storage

如要使用 Vertex AI 訓練叢集,請與業務代表聯絡以取得存取權。

選擇合適的儲存空間設定,對訓練叢集的效能和穩定性至關重要。這項服務整合了兩種不同的高效能儲存空間解決方案:

  • Filestore:這項代管檔案服務是必要服務,可為叢集中的所有節點提供共用目錄。/home
  • Google Cloud Managed Lustre:選用的平行檔案系統,專為極致 I/O 效能而設計,非常適合用來訓練龐大資料集。

本頁面將概略說明這些功能的主要用途,並列出與叢集成功整合時的特定網路和部署需求。

訓練叢集的儲存空間整合

Vertex AI 訓練叢集需要特定的網路儲存空間解決方案才能運作。叢集需要 Filestore 提供共用 /home 目錄,而 Managed Lustre 則是選用的高效能檔案系統,適用於高需求工作負載。

部署叢集前,請務必正確設定這些儲存服務的網路。

主目錄的 Filestore

這項服務會使用 Filestore 執行個體,為叢集提供共用 /home 目錄。為確保連線正常運作,您必須依下列特定順序建立雲端資源:

  1. 建立虛擬私有雲網路:首先,部署設定建議 MTU (例如 8896) 的虛擬私有雲網路。
  2. 建立 Filestore 執行個體:接著,將 Filestore 執行個體部署到您剛建立的虛擬私有雲
  3. 建立訓練叢集: 最後,部署叢集,即可連線至同一網路中的 Filestore 執行個體。

Google Cloud Managed Lustre,適用於高效能工作負載

如要處理需要最高 I/O 效能的工作負載,可以附加 Managed Lustre 檔案系統。這項服務會使用 Private Service Access 連線至您的虛擬私有雲。

重要的網路限制:不支援遞移性對等互連

Filestore 和 Google Cloud Managed Lustre 的重大限制是,兩者都不支援遞移對等互連。也就是說,只有直接連線的虛擬私有雲中的資源,才能存取儲存空間服務。舉例來說,如果叢集的虛擬私有雲 (N1) 與儲存空間服務對等互連,則與 N1 對等互連的另一個虛擬私有雲 (N2) 就無法存取。

訓練叢集的儲存空間整合

Vertex AI 訓練叢集運作時,需要特定的網路儲存解決方案。Filestore 必須為叢集提供共用的 /home 目錄,而 Google Cloud Managed Lustre 則是選用的高效能檔案系統,適用於高需求工作負載。部署叢集前,請務必正確設定這些儲存服務的網路。

Filestore

搭配訓練叢集使用 Filestore 的主要用途

除了做為必要的主目錄,Filestore 還提供彈性的方式,可與叢集共用資料。
額外共用儲存空間:您可以將一或多個額外 Filestore 執行個體附加至任何節點集區。這項功能可讓訓練作業使用共用資料集、應用程式二進位檔或其他常見檔案。在節點集區設定中指定這些執行個體後,訓練叢集就會自動將這些執行個體掛接至每個節點的 /mnt/filestore 目錄。

Filestore 需求

如要成功將 Filestore 與訓練叢集整合,必須進行下列設定:

  • 啟用 API:您必須先在 Google Cloud 專案中啟用 Filestore API,才能建立叢集。
  • 必要 /home 目錄:每個訓練叢集都需要專屬的 Filestore 執行個體,做為共用 /home 目錄。這個執行個體有特定的設定需求:
    • 網路:必須與叢集的運算和登入節點位於相同的 VPC 網路。
    • 位置:必須與叢集位於相同區域或可用區。
    • 設定:透過 API 建立叢集時,您必須在 orchestrator_spec.slurm_spec.home_directory_storage 欄位中指定這個執行個體的完整資源名稱。

設定 Filestore 儲存空間

在要建立叢集的區域中,建立區域或地區 Filestore 執行個體。Vertex AI API 需要將 Filestore 附加至叢集,做為 /home 目錄。這個 Filestore 必須與所有運算節點和登入節點位於同一個區域或地區,且位於同一個網路。在下列範例中,172.16.10.0/24 用於 Filestore 部署作業。

    SERVICE_TIER=ZONAL # Can use BASIC_SSD

    # Create reserved IP address range
    gcloud compute addresses create CLUSTER_IDfs-ip-range \
        --project=PROJECT_ID \
        --global \
        --purpose=VPC_PEERING \
        --addresses=172.16.10.0 \
        --prefix-length=24 \
        --description="Filestore instance reserved IP range" \
        --network=NETWORK

    # Get the CIDR range
    FS_IP_RANGE=$(
      gcloud compute addresses describe CLUSTER_IDfs-ip-range \
        --global  \
        --format="value[separator=/](address, prefixLength)"
    )

    # Create the Filestore instance
    gcloud filestore instances create FS_INSTANCE_ID \
        --project=PROJECT_ID \
        --location=ZONE \
        --tier=ZONAL \
        --file-share=name="nfsshare",capacity=1024 \
    --network=name=NETWORK,connect-mode=DIRECT_PEERING,reserved-ip-range="${FS_IP_RANGE}"
  

Lustre

Google Cloud Managed Lustre 提供高效能的全代管平行檔案系統,專為 AI 和 HPC 應用程式最佳化。Managed Lustre 的容量可達數 PB,處理量最高可達 1 TBps,有助於將需要大量資源的工作負載遷移至雲端。

Managed Lustre 執行個體位於區域內的可用區。地區是您可以執行資源的所在特定地理位置。每個地區都會分成數個區域。舉例來說,美國中部的 us-central1 地區有 us-central1-aus-central1-bus-central1-cus-central1-f 等可用區。詳情請參閱地理位置與區域一文。

如要降低網路延遲時間,建議在距離您打算使用 Managed Lustre 執行個體的位置較近的地區與區域建立 Managed Lustre 執行個體。

建立 Managed Lustre 執行個體時,您必須定義下列屬性:

  • Google Cloud 使用的執行個體名稱。
  • 用戶端工具使用的檔案系統名稱,例如 lfs
  • 儲存空間容量 (GiB)。容量範圍為 9,000 GiB 至約 8 PiB (7,632,000 GiB)。執行個體大小上限取決於效能層級。
  • Managed Lustre 提供效能層級,範圍從每 TiB 125 MBps 到每 TiB 1000 MBps。
  • 如要獲得最佳效能,請在與訓練叢集相同的區域中建立執行個體。
  • 這個執行個體的 VPC 網路必須與訓練叢集使用的網路相同。

Managed Lustre 提供 4 個效能層級,每個層級的每 TiB 最高輸送量速度不同。效能層級也會影響執行個體大小下限和上限,以及可接受容量值之間的步階大小。執行個體建立後,就無法變更效能層級。

部署 Managed Lustre 時需要私人服務存取權,這會在訓練叢集的虛擬私有雲與代管 Managed Lustre 的虛擬私有雲之間,使用專屬的 /20 子網路建立虛擬私有雲對等互連。

設定 Managed Lustre 執行個體 (選用)

只有在想於模型開發服務中使用 Managed Lustre 時,才使用 Google Cloud Managed Lustre。

Google Cloud Managed Lustre 是 Google Cloud 上的全代管高效能平行檔案系統服務。專為加速 AI/機器學習和高效能運算 (HPC) 中要求嚴苛的工作負載而設計。

如要使用訓練叢集達到最佳效能,請使用虛擬私有雲對等互連服務網路,從與訓練叢集相同的虛擬私有雲和可用區部署 Google Cloud Managed Lustre。

建立 Lustre 執行個體

    gcloud lustre instances create LUSTRE_INSTANCE_ID \
    --project=PROJECT_ID \
    --location=ZONE \
    --filesystem=lustrefs \
    --per-unit-storage-throughput=500 \
    --capacity-gib=36000 \
    --network=NETWORK_NAME

  

掛接 Cloud Storage

請先確認 VM 服務帳戶具備 Storage 物件使用者角色。

預設掛接

Vertex AI 訓練叢集會使用 Cloud Storage FUSE,在所有登入和運算節點上動態掛接 Cloud Storage bucket,讓這些 bucket 可在 /gcs 目錄下存取。無法從根掛接點 /gcs 列出動態掛接的值區。您可以將動態掛接的值區當做子目錄存取:

user@testcluster:$ ls /gcs/your-bucket-name
user@testcluster:$ cd /gcs/your-bucket-name

客製標本支架

如要使用自訂選項將特定 Cloud Storage bucket 掛接至本機目錄,請使用下列指令結構,方法是在建立叢集時將指令傳遞為啟動指令碼的一部分,或在建立叢集後直接在節點上執行指令。

sudo mkdir -p $MOUNT_DIR
echo "$GCS_BUCKET $MOUNT_DIR gcsfuse $OPTION_1,$OPTION_2,..." | sudo tee -a /etc/fstab
sudo mount -a

舉例來說,如要將 bucket mtdata 掛接到 /data 目錄,請使用下列指令:

sudo mkdir -p /data
echo "mtdata /data gcsfuse defaults,_netdev,implicit_dirs,allow_other,dir_mode=777,file-mode=777,metadata_cache_negative_ttl_secs=0,metadata_cache_ttl_secs=-1,stat_cache_max_size_mb=-1,type_cache_max_size_mb=-1,enable_streaming_writes=true" | sudo tee -a /etc/fstab
sudo mount -a

如要完全自動化且一致地完成設定,請在叢集的開機指令碼中加入自訂掛接指令碼。這麼做可確保 Cloud Storage 值區在啟動時自動掛接至所有節點,不必手動設定。

如需針對 AI/機器學習工作負載量身打造的額外設定建議,請參閱「效能調整最佳做法指南」。並提供具體指引,說明如何針對訓練、推論和檢查點作業,最佳化 Cloud Storage FUSE。

後續步驟

接下來的步驟著重於如何有效運用叢集進行大規模訓練。

  • 調整程式碼以進行分散式訓練:如要充分運用多節點叢集和高效能儲存空間,請調整訓練程式碼以適應分散式環境。
  • 使用 Vertex AI Pipelines 調度管理工作:對於正式環境工作流程,請使用 Vertex AI Pipelines 自動執行資料準備、工作提交和模型註冊程序。
  • 監控及偵錯訓練工作:追蹤分散式訓練工作的進度和資源用量,找出並解決問題。