訓練總覽

透過 AI Platform,您可以在雲端執行 TensorFlow 訓練應用程式。此外,您可以使用自訂容器,以其他機器學習架構執行訓練工作。本頁面說明充分利用模型訓練效果所需的重要概念。如果您想直接進入訓練程序,請參閱啟動訓練工作

訓練的運作方式

AI Platform 會藉由雲端的運算資源執行訓練工作。您不需要編寫訓練應用程式,就能使用資料集訓練內建演算法 (Beta 版)。如果內建演算法不適合您的使用案例,您可以建立要在 AI Platform 上執行的訓練應用程式。

以下是使用訓練應用程式的流程概述:

  1. 您可以建立一個 TensorFlow 應用程式來訓練您的模型,並以在本機開發環境中的相同執行方式來建構應用程式。
  2. 將訓練和驗證資料放入 AI Platform 可以存取的來源中。通常您可以將這些資料放在與您用於 AI Platform 的 GCP 專案相關聯的 Cloud Storage、Cloud BigTable 或其他 Google Cloud Platform 儲存服務中。
  3. 當應用程式已準備好可以執行時,您必須封裝應用程式,並將其轉移到專案可存取的 Cloud Storage 值區。如果您使用 gcloud 指令列工具執行訓練工作,系統會自動為您完成上述工作。
  4. AI Platform 訓練服務會為您的工作設定資源。這項服務會根據您的工作設定分配一或多個虛擬機器 (稱為「訓練執行個體」)。您可藉由下列方式設定各個訓練執行個體:
    • 依照工作使用的 AI Platform 版本套用標準機器映像檔。
    • 載入應用程式套件並使用 pip 進行安裝。
    • 安裝您指定為依附元件的任何其他套件。
  5. 訓練服務會執行您的應用程式,傳遞您在建立訓練工作時指定的任何指令列引數。
  6. 您可以透過下列方式取得執行工作的相關資訊:
    • 前往 Stackdriver Logging。
    • 使用 gcloud 指令列工具,要求工作詳細資料或執行記錄串流。
    • 使用程式,向訓練服務發出狀態要求。
  7. 訓練工作成功完成或發生無法復原的錯誤時,AI Platform 會停止所有工作程序並清除資源。

分散式訓練架構

如果您透過 AI Platform 執行分散式 TensorFlow 工作,則需要在「訓練叢集」中指定多個機器 (節點)。訓練服務會為您指定的機器類型分配資源,並對各機器類型執行上方的步驟 4。您在特定節點上執行的工作稱為「備用資源」。系統會依據分散式 TensorFlow 模型,在分散式訓練中將一個角色或工作分配給訓練叢集中的每個備用資源:

  • 主要執行個體:只有一個備用資源可指派為「主要執行個體」。此工作會管理其他工作,並回報整體工作的狀態。訓練服務會持續執行,直到工作成功完成或發生無法復原的錯誤。在分散式訓練中,主要執行個體的狀態即為整體工作狀態。

    如果您執行的是單一程序工作,其中唯一的備用資源就是工作的主要備用資源。

  • 工作站:您可以指派一或多個備用資源做為「工作站」。這些備用資源會按照您在工作設定中的設定執行自己分內的任務。

  • 參數伺服器:您可以指派一或多個備用資源做為「參數伺服器」。這些備份資源會協調工作站之間的共用模型狀態。

典型的機器學習應用程式

AI Platform 訓練服務是要儘量減少對應用程式的影響,這表示您可專注於透過 TensorFlow 程式碼來定義自己想要的模型,而不受限於固有的結構。

大部分機器學習應用程式都具備以下特點:

  • 可取得訓練資料和評估資料。
  • 以批次方式處理資料樣本。
  • 使用評估資料測試模型的準確率 (模型預測到正確值的頻率)。
  • 可在程序中每隔一段時間輸出查核點,以取得模型進度的快照。
  • 可於應用程式完成時匯出訓練模型。

封裝應用程式

在使用 AI Platform 執行訓練應用程式之前,您必須先封裝應用程式及任何必要的依附元件,並將套件上傳至 Google Cloud Platform 專案可存取的 Cloud Storage 值區。

gcloud 指令列工具可自動執行大部分的程序。具體來說,您可以使用 gcloud ai-platform jobs submit training 來上傳應用程式套件及提交訓練工作。

如需詳細的操作說明,請參閱封裝訓練應用程式

提交訓練工作

AI Platform 會以非同步 (批次) 服務的方式提供模型訓練。如要提交訓練工作,您可以從指令列執行 gcloud ai-platform jobs submit training 或在 projects.jobs.create 傳送要求給 API。

如需詳細的操作說明,請參閱啟動訓練工作

工作 ID

您必須為訓練工作提供符合下列規則的名稱:

  • 在 Google Cloud Platform 專案中不得重複。
  • 僅能包含大小寫混用字母、數字和底線。
  • 開頭必須是英文字母。
  • 長度不得超過 128 個字元。

您可以採用任何偏好的工作命名慣例。如果您執行的工作並不多,那麼名稱可能不那麼重要。但您如果執行很多工作,您可能需要在大型清單中尋找工作 ID,因此我們建議您採用容易區分工作的工作 ID。

常見的做法是為所有與某個模型有關的工作定義一個基礎名稱,再附加日期/時間字串。這種命名慣例可依名稱排序工作清單,因為某個模型中的所有工作都會依遞增順序分成同一組。

資源調度層級

在 AI Platform 上執行訓練工作時,您必須指定所需的機器數量和類型。為使程序更為簡單,您可以從一組預先定義的叢集規格 (稱為「資源調度層級」) 中進行挑選。您也可以選擇「自訂」層級並自行指定機器類型。

如要指定資源調度層級,請將其新增至工作設定中的 TrainingInput 物件。如果您使用 gcloud 指令提交訓練工作,則可使用相同的 ID。

請參閱資源調度層級和機器類型的詳細定義。

超參數調整

如果您要使用超參數調整,則必須於建立訓練工作時加入設定詳細資料。請參閱超參數調整的概念指南以及如何使用超參數調整

地區與區域

GCP 利用地區,再細分為區域,來定義實體運算資源的地理位置。在 AI Platform 上執行訓練工作時,您必須指定執行該工作的地區。

如果您將訓練資料集儲存在 Cloud Storage 中,則執行訓練工作的地區應該與儲存訓練資料的 Cloud Storage 值區所在地區相同。如果執行工作的地區與資料值區所在地區不同,可能會耗費更多時間才能完成工作。

如要查看 AI Platform 服務 (包括模型訓練以及線上/批次預測) 的可用地區,請參閱地區指南

使用 job-dir 做為通用輸出目錄

您可以在設定工作時設定工作目錄,以指定工作的輸出目錄。提交工作時,AI Platform 會執行下列作業:

  • 驗證目錄,讓您可以在工作執行前先解決任何問題。
  • 將路徑以名為 --job-dir 的指令列引數傳送至應用程式。

您必須在應用程式中使用 --job-dir 引數。因此您要在剖析其他參數時擷取引數值,並於儲存應用程式輸出時使用。請參閱啟動訓練工作指南。

執行階段版本

您應該為訓練工作指定支援的 AI Platform 執行階段版本。執行階段版本會決定分配的訓練執行個體上安裝的 TensorFlow 版本和其他 Python 套件的版本,因此請指定可提供您所需功能的版本。如果您會在本機和雲端執行訓練工作,請確認本機和雲端工作採用相同的執行階段版本。

輸入資料

用於訓練工作的資料必須符合下列規則,才能在 AI Platform 上執行:

  • 資料必須採用您可讀取及寫入 TensorFlow 程式碼的格式。
  • 資料必須位於程式碼可存取的位置。這通常表示資料應儲存於某個 GCP 儲存空間或大數據服務中。

輸出資料

應用程式輸出資料十分常見,輸出的資料包括訓練期間的查核點,以及完成訓練時儲存的模型。您可視應用程式的需要輸出其他資料。最簡單的方式是將輸出檔案儲存至訓練工作的 GCP 專案 Cloud Storage 值區中。

建構不受 VM 重新啟動影響的訓練工作

GCP VM 偶爾可能會重新啟動。您應該定期儲存模型查核點,並將工作設定為還原至最新查核點,以確保訓練工作不受重新啟動的影響。

通常你會將模型查核點儲存於您在 gcloud ai-platform jobs submit training 指令中使用 --job-dir 引數指定的 Cloud Storage 路徑。

使用 GPU 訓練

您可以透過圖形處理器 (GPU) 在 AI Platform 上執行訓練工作。GPU 可高速執行密集數學運算。在張量資料上執行特定操作時,與新增另一部具有一或多個 CPU 核心的機器相比,使用 GPU 更有效率。

AI Platform 訓練服務無須透過任何特殊介面即可和 GPU 搭配使用。您可以指定支援 GPU 的機器來執行工作,服務就會為您分配這些機器。如果您為某個工作類型指定可存取 GPU 的機器類型,則指派給該工作類型的每個執行個體都會一如既往地採用相同的設定:服務會在每部機器上執行程式碼的單一備用資源。

在 GPU 上執行某些模型不會比較好。我們建議您將 GPU 用在需要進行許多數學運算的大型複雜模型上。但即使這樣,您仍應透過訓練執行一小部分資料範例,以測試 GPU 支援的優勢。

請參閱如何將 GPU 用於訓練工作

使用 TPU 訓練

您可以在搭配 Cloud TPU 的 AI Platform 上執行訓練工作。

請參閱如何使用 TPU 執行訓練工作

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
TensorFlow 適用的 AI Platform