將 Cloud Storage 做為掛接的檔案系統使用

Cloud Storage FUSE 可讓您將訓練資料載入 Cloud Storage 值區,並從 Vertex AI 無伺服器訓練工作存取該資料,就像已掛接的檔案系統一樣。使用 Cloud Storage FUSE 的優點如下:

  • 訓練資料會串流至訓練工作,而非下載至副本,因此工作開始執行時,資料載入和設定工作會更快。
  • 訓練工作可以大規模處理輸入和輸出內容,不必進行 API 呼叫、處理回應或與用戶端程式庫整合。
  • Cloud Storage FUSE 可為大型檔案循序讀取作業和分散式訓練情境提供高處理量。

用途

建議在下列情況下使用 Cloud Storage 儲存訓練資料:

  • 訓練資料為非結構化資料,例如圖片、文字和影片。
  • 訓練資料是結構化資料,格式為 TFRecord 等。
  • 訓練資料包含大型檔案,例如原始影片。
  • 您使用分散式訓練。

運作方式

無伺服器訓練工作可以存取 Cloud Storage 值區,做為根 /gcs 目錄的子目錄。舉例來說,如果訓練資料位於 gs://example-bucket/data.csv,您可以從 Python 訓練應用程式讀取及寫入該 bucket,如下所示:

讀取至 bucket

with open('/gcs/example-bucket/data.csv', 'r') as f:
  lines = f.readlines()

寫入 bucket

with open('/gcs/example-bucket/epoch3.log', 'a') as f:
  f.write('success!\n')

值區存取權限

根據預設,無伺服器訓練工作可使用 Vertex AI 自訂程式碼服務代理,存取同一 Google Cloud 專案中的任何 Cloud Storage 值區。如要控管對 Bucket 的存取權,您可以將自訂服務帳戶指派給工作。在這種情況下,系統會根據自訂服務帳戶的 Cloud Storage 角色相關聯權限,授予 Cloud Storage 值區的存取權。

舉例來說,如要授予無伺服器訓練工作 Bucket-A 的讀取和寫入權限,但只授予 Bucket-B 的讀取權限,您可以將具有下列角色的自訂服務帳戶指派給該工作:

  • roles/storage.objectAdmin (適用於 Bucket-A)
  • roles/storage.objectViewer (適用於 Bucket-B)

如果訓練工作嘗試寫入 Bucket-B,系統會傳回「權限遭拒」錯誤。

如要進一步瞭解 Cloud Storage 角色,請參閱 Cloud Storage 的 IAM 角色

最佳做法

  • 請勿重新命名目錄。在 Cloud Storage FUSE 中,重新命名作業並非不可分割。如果作業中斷,部分檔案會留在舊目錄中。
  • 避免不必要地關閉 (close()) 或排清檔案 (flush())。關閉或排清檔案會將檔案推送至 Cloud Storage,產生費用。

成效最佳化指南

如要將 Cloud Storage 當做檔案系統使用,並獲得最佳讀取輸送量,建議您實作下列指南:

  • 如要減少在 bucket 中尋找及開啟物件時造成的延遲,請將資料儲存在較大且較少的檔案中。
  • 使用分散式訓練,盡量提高頻寬使用率。
  • 快取經常存取的檔案,提高讀取效能。詳情請參閱「Cloud Storage FUSE 快取總覽」。
  • 請改用本機儲存空間來儲存檢查點和記錄檔,而非 Cloud Storage。

限制

如要瞭解 Cloud Storage FUSE 的限制,包括 Cloud Storage FUSE 與 POSIX 檔案系統之間的差異,請參閱「限制和與 POSIX 檔案系統的差異」。

使用 Cloud Storage FUSE

如要使用 Cloud Storage FUSE 進行無伺服器訓練,請按照下列步驟操作:

  1. 建立 Cloud Storage bucket。請注意,無伺服器訓練不支援雙區域和多區域 bucket。
  2. 將訓練資料上傳至 bucket。詳情請參閱「上傳」。

    如要瞭解將資料轉移至 Cloud Storage 的其他選項,請參閱資料轉移選項

  3. 安裝 Cloud Storage FUSE

  4. 使用 Cloud Storage 檔案系統

後續步驟