Storage

如要使用 Gemini Enterprise Agent Platform 訓練叢集,請洽詢業務代表。

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

  • Filestore:必要的代管檔案服務,為叢集中的所有節點提供共用 /home 目錄。
  • Google Cloud Managed Lustre:選用的平行檔案系統,專為極致 I/O 效能設計,適合用於訓練大型資料集。請將其視為高效能的工作儲存空間,而非記錄系統,並將 Cloud Storage 做為可靠資料來源。詳情請參閱「將 Managed Lustre 資料備份至 Cloud Storage」。

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

訓練叢集的儲存空間整合

Gemini Enterprise Agent Platform 訓練叢集仰賴特定的網路儲存解決方案運作。Filestore 必須為叢集提供共用 /home 目錄,而 Managed Lustre 是選用的高效能檔案系統,適用於嚴苛的工作負載。

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

Filestore 做為主目錄

這項服務會使用 Filestore 執行個體,為叢集提供共用的 /home 目錄。為確保連線能力正常,請務必按照下列順序建立雲端資源:

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

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

如果工作負載需要最高 I/O 效能,可以連結 Managed Lustre 檔案系統。這項服務會透過私人服務存取權連線至虛擬私有雲。

Managed Lustre 經過最佳化,可提高處理量,而非耐用性。執行個體屬於可用區,沒有快照、備份或取消刪除功能。將無法重新產生的內容備份到 Cloud Storage。詳情請參閱「將 Managed Lustre 資料備份至 Cloud Storage」。

將 Managed Lustre 資料備份至 Cloud Storage

將 Cloud Storage 做為 Managed Lustre 的可靠資料來源。這樣可以保護檢查點,並在執行個體失敗或刪除時快速復原。

Managed Lustre 內建高處理量傳輸功能,可直接匯出至 Cloud Storage。轉移作業會逐步進行:每次執行時,只會複製目的地中不存在的檔案,或上次轉移後有變更的檔案。

兩個身分需要權限。啟動匯出作業的使用者或服務帳戶需要 lustre.instances.exportData,這項權限包含在 roles/lustre.admin 角色中,您也可以透過自訂角色授予。Managed Lustre 服務代理則需要目的地 bucket 的寫入權限。

  1. 授予 Managed Lustre 服務代理目的地 bucket 的寫入權限。每個 bucket 只要執行一次這項操作:

    gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
      --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-lustre.iam.gserviceaccount.com \
      --role=roles/storage.objectUser
    

    其中:

  2. 將檔案系統匯出至 bucket:

    gcloud lustre instances export-data INSTANCE_ID \
      --location=ZONE \
      --lustre-path="/" \
      --gcs-path-uri="gs://BUCKET_NAME/INSTANCE_ID/"
    

    其中:

    • INSTANCE_ID 是要備份的 Managed Lustre 執行個體名稱。
    • ZONE 是執行個體的可用區,例如 us-central1-a。

    --gcs-path-uri 值可以是 bucket 本身,也可以是 bucket 內的路徑。如果包含路徑,結尾必須是正斜線。將每個執行個體匯出至以其命名的路徑,可讓執行個體保持獨立:如果您將多個 Managed Lustre 執行個體附加至叢集,請為每個執行個體指定專屬路徑,因為匯出至相同路徑的兩個執行個體會覆寫彼此的檔案。

如要讓備份資料保持最新狀態,請排定匯出作業。舉例來說,您可以在登入節點上執行每日 Cron 工作,而不是只在訓練執行結束時執行。由於轉移作業是累加制,因此首次執行後,每次執行都只會複製變更內容。

規劃備份時,請考量下列事項:

  • 每個執行個體一次只能執行一項轉移作業。如果一項轉移作業仍在執行中,就啟動另一項轉移作業,則會失敗並顯示 ABORTED: unable to queue the operation。
  • 匯出作業不會從目的地刪除物件,因此您在 Managed Lustre 中刪除的檔案仍會保留在 bucket 中。在目的地 bucket 啟用物件版本管理功能,這樣一來,您也可以復原遭不當內容覆寫的檔案。
  • 系統不會保留符號連結、空白目錄和以 lfs setstripe 設定的條帶化版面配置,硬連結則會匯出為獨立物件,因此硬連結檔案在 bucket 中會依連結數量占用空間。POSIX UID、GID、模式和 mtime 會保留為自訂物件中繼資料。
  • 以不可分割的方式寫入檢查點:先寫入暫存路徑,然後將檔案重新命名至適當位置,這樣在寫入期間執行的匯出作業就會擷取先前的檔案或完整的新檔案,而不會擷取部分檔案。

如要還原,請建立新的 Managed Lustre 執行個體,並使用 gcloud lustre instances import-data 將資料載回。詳情請參閱「將資料移轉至 Cloud Storage 或從中移轉資料」。

重大網路限制:不支援遞移對接

Filestore 和 Google Cloud Managed Lustre 的一項重大限制,是不支援轉移對接。也就是說,只有直接連結的虛擬私有雲中的資源,才能存取儲存空間服務。舉例來說,如果叢集的虛擬私有雲 (N1) 與儲存空間服務對接,則與 N1 對接的其他虛擬私有雲 (N2) 將無法存取。

訓練叢集的儲存空間整合

Gemini Enterprise Agent Platform 訓練叢集必須仰賴特定的網路儲存解決方案才能運作。Filestore 必須為叢集提供共用 /home 目錄,而 Google Cloud Managed Lustre 則是選用的高效能檔案系統,適用於嚴苛的工作負載。部署叢集前,請務必正確設定這些儲存空間服務的網路。

Filestore

Filestore 與訓練叢集的主要用途

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

Filestore 需求

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

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

設定 Filestore 儲存空間

在要建立叢集的可用區中,建立可用區或區域 Filestore 執行個體。Agent Platform API 必須將 Filestore 附加至叢集,才能做為 /home 目錄。這個 Filestore 必須與所有運算節點和登入節點位於相同的可用區或區域,以及相同的網路。在以下範例中,Filestore 部署作業使用 172.16.10.0/24。

    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-a、us-central1-b、us-central1-c 和 us-central1-f 等可用區。詳情請參閱「地理位置與區域」。

為降低網路延遲,建議您在靠近預定使用位置的區域和可用區,建立 Managed Lustre 執行個體。

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

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

Managed Lustre 提供 4 個效能級別,每個級別的每 TiB 最大處理量速度都不同。效能級別也會影響執行個體大小的上下限,以及可接受容量值之間的步距。執行個體建立後,即無法變更效能級別。

部署 Managed Lustre 時,必須使用私人服務存取權,透過專屬的 /20 子網路,在訓練叢集的虛擬私有雲和託管 Managed Lustre 的虛擬私有雲之間,建立虛擬私有雲對接。

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

如要使用 Model Development Service 中的 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 物件使用者角色。

預設掛接

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

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 bucket 就會在啟動時自動掛接至所有節點,不必手動設定。

如需更多針對 AI/機器學習工作負載的設定建議,請參閱效能調整最佳做法指南。並提供具體指引,協助您最佳化 Cloud Storage FUSE,以便進行訓練、推論和檢查點設定。

後續步驟

後續步驟著重於如何有效運用叢集,進行大規模訓練。

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