- 訓練資料會串流至訓練工作,而非下載至副本,這樣一來,工作開始執行時,資料載入和設定工作就能更快完成。
- 訓練工作可處理大量輸入和輸出,而不需要發出 API 呼叫、處理回應或與用戶端程式庫整合。
- Cloud Storage FUSE 可在分散式訓練情境中,為大型檔案的順序讀取提供高處理量。
用途
在下列情況下,建議您使用 Cloud Storage 儲存訓練資料:
- 訓練資料是圖片、文字和影片等非結構化資料。
- 訓練資料是結構化資料,格式為 TFRecord 等。
- 訓練資料包含大型檔案,例如原始影片。
- 您使用分散式訓練。
運作方式
自訂訓練工作可透過根目錄 /gcs
的子目錄存取 Cloud Storage 值區。舉例來說,如果訓練資料位於 gs://example-bucket/data.csv
,您可以透過 Python 訓練應用程式讀取及寫入儲存桶,如下所示:
讀取至儲存桶
with open('/gcs/example-bucket/data.csv', 'r') as f:
lines = f.readlines()
寫入值區
with open('/gcs/example-bucket/epoch3.log', 'a') as f:
f.write('success!\n')
值區存取權限
根據預設,自訂訓練工作可使用 Vertex AI 自訂程式碼服務代理,存取同一個 Google Cloud 專案中的任何 Cloud Storage 值區。如要控管存取資料夾的權限,您可以為工作指派自訂服務帳戶。在這種情況下,系統會根據與自訂服務帳戶 Cloud Storage 角色相關聯的權限,授予 Cloud Storage 值區的存取權。
舉例來說,如果您想讓自訂訓練工作擁有 Bucket-A 的讀取和寫入權限,但只擁有 Bucket-B 的讀取權限,您可以為工作指派具備下列角色的自訂服務帳戶:
roles/storage.objectAdmin
(適用於值區 A)roles/storage.objectViewer
(值區 B)
如果訓練工作嘗試寫入 Bucket-B,系統會傳回「permission denied」(權限遭拒) 錯誤。
如要進一步瞭解 Cloud Storage 角色,請參閱「Cloud Storage 的 IAM 角色」。
最佳做法
- 請勿重新命名目錄。在 Cloud Storage FUSE 中,重新命名作業並非不可分割的作業。如果作業中斷,部分檔案會保留在舊目錄中。
- 請避免不必要地關閉 (
close()
) 或清除檔案 (flush()
)。關閉或清除檔案會將檔案推送至 Cloud Storage,因此會產生費用。
效能最佳化指南
如要使用 Cloud Storage 做為檔案系統,以便取得最佳讀取吞吐量,建議您實作下列規範:
- 如要減少查詢及開啟桶中物件所造成的延遲時間,請將資料儲存在較大的檔案中,並減少檔案數量。
- 使用分散式訓練,盡可能提高頻寬使用率。
- 快取經常存取的檔案,以提高讀取效能。詳情請參閱「Cloud Storage FUSE 中的快取功能總覽」。
- 使用本機儲存空間來進行檢查點和記錄,而不要使用 Cloud Storage。
限制
如要瞭解 Cloud Storage FUSE 的限制,包括 Cloud Storage FUSE 與 POSIX 檔案系統的差異,請參閱「限制和與 POSIX 檔案系統的差異」。
使用 Cloud Storage FUSE
如要使用 Cloud Storage FUSE 進行自訂訓練,請按照下列步驟操作:
- 建立 Cloud Storage 值區。請注意,自訂訓練不支援雙區域和多區域區塊。
將訓練資料上傳至值區。詳情請參閱「上傳」。
如要瞭解將資料轉移至 Cloud Storage 的其他選項,請參閱「資料移轉選項」。
後續步驟
- 參閱 Cloud Storage FUSE 說明文件。
- 瞭解 Cloud Storage FUSE 定價。
- 準備訓練應用程式,以便在 Vertex AI 上使用。