- 訓練資料會串流至訓練工作,而非下載至副本,因此工作開始執行時,資料載入和設定工作會更快。
- 訓練工作可以大規模處理輸入和輸出內容,不必進行 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 進行無伺服器訓練,請按照下列步驟操作:
- 建立 Cloud Storage bucket。請注意,無伺服器訓練不支援雙區域和多區域 bucket。
將訓練資料上傳至 bucket。詳情請參閱「上傳」。
如要瞭解將資料轉移至 Cloud Storage 的其他選項,請參閱資料轉移選項。
後續步驟
- 請參閱 Cloud Storage FUSE 說明文件。
- 瞭解 Cloud Storage FUSE 定價。
- 準備訓練應用程式,以便在 Vertex AI 上使用。