監控訓練工作

視您的資料集大小和模型複雜程度而定,訓練作業可能會相當費時。以實際資料進行的訓練可能會持續數小時。在訓練工作執行期間,您可以監控工作的多個層面。

檢查工作狀態

如要瞭解工作的整體狀態,最簡單的方法是在 GCP 主控台上的 AI Platform「Jobs」(工作) 頁面上查看。您可以使用 gcloud 指令列工具,以程式設計的方式取得相同的詳細資料。

主控台

  1. 在 GCP Console 中開啟 AI Platform 「Jobs」(工作)頁面。

    在 GCP Console 中開啟「Jobs」(工作)

  2. 在清單中按一下工作名稱,即可開啟「Job Details」(工作詳細資料) 頁面。

  3. 在報表頂端找到工作狀態。系統會透過圖示和文字說明工作目前的狀態。

    「Job details」(工作詳細資料) 頁面頂端的工作狀態資訊。

篩選工作

在「Jobs」(工作) 頁面中,您可以依據多個不同參數篩選工作,其中包括 Type、JobID、State 和工作建立時間。

  1. 按一下依前置字元篩選欄位內部,該欄位位於工作清單上方。選取您要用於篩選的前置字串,例如選取 [Type] (類型)
  2. 如要完成篩選,請按一下您要使用的篩選器後置字串。例如,適用於「Type」(類型) 前置字串的後置字串選項為:

    • 自訂程式碼訓練
    • 內建演算法訓練
    • 預測
  3. 系統會將篩選器套用至您的「Jobs」(工作) 清單,且篩選器的名稱會顯示在篩選器欄位中。例如,如果您已選取 [Custom code training] (自訂程式碼訓練),篩選器「Type:Custom code training」(類型:自訂程式碼訓練) 會顯示在頂部,並篩選您的工作清單。您可以視需要新增多個篩選器。

查看超參數試驗

您可以在「Job Details」(工作詳細資料) 頁面的 HyperTune 試驗表格中查看每次試驗的指標。系統只會針對使用超參數調整的工作顯示這個表格。您可以將指標切換為依據最高或最低 rmseTraining stepslearning_rate 顯示試驗結果。

如要檢視特定試用版的記錄,請按一下:more_vert圖示,然後按一下 [View logs] (檢視記錄)

gcloud

在指令列中使用 gcloud ai-platform jobs describe 來取得工作目前狀態的詳細資料:

gcloud ai-platform jobs describe job_name

您可以使用 gcloud ai-platform jobs list 取得與專案相關聯的工作清單,以便查看工作狀態和建立時間。請注意,這個指令會以最簡單的方式列出您曾為專案建立的所有工作。您必須界定要求的範圍,才能限制回報的工作數量。以下範例可協助您快速上手:

使用 --limit 引數限制工作數量。以下範例會列出 5 個最新的工作:

gcloud ai-platform jobs list --limit=5

使用 --filter 參數將工作清單限制為具有給定屬性值的工作。您可以篩選工作物件的一或多個屬性。除了核心工作屬性之外,您也可以篩選工作中的物件,例如 TrainingInput 物件。

篩選清單範例:

  • 列出特定時間之後啟動的所有工作。以下範例是 2017 年 1 月 15 日晚上 7 點:

    gcloud ai-platform jobs list --filter='createTime>2017-01-15T19:00'
    
  • 列出工作名稱開頭為指定字串的最近三個工作。例如,字串可能代表您用於特定模型中所有訓練工作的名稱。在以下範例使用的模型中,工作 ID 為「census」,至於 ID 之後則是依每個工作遞增的索引:

    gcloud ai-platform jobs list --filter='jobId:census*' --limit=3
    
  • 列出所有名稱以「rnn」開頭的失敗工作:

    gcloud ai-platform jobs list --filter='jobId:rnn* AND state:FAILED'
    

如要進一步瞭解篩選器選項支援的運算式,請參閱 gcloud 指令的說明文件

Python

  1. 採用 'projects/your_project_name/jobs/your_job_name' 格式合併專案名稱和工作名稱,以組合成工作 ID 字串:

    projectName = 'your_project_name'
    projectId = 'projects/{}'.format(projectName)
    jobName = 'your_job_name'
    jobId = '{}/jobs/{}'.format(projectId, jobName)
    
  2. 以 projects.jobs.get 格式編寫要求:

    request = ml.projects().jobs().get(name=jobId)
    
  3. 執行要求 (以下範例會將 execute 呼叫放入 try):

    response = None
    
    try:
        response = request.execute()
    except errors.HttpError, err:
        # Something went wrong. Handle the exception in an appropriate
        #  way for your application.
    
  4. 無論是否有 HTTP 錯誤,都要檢查回應以確保服務呼叫已傳回資料。

    if response == None:
        # Treat this condition as an error as best suits your
        # application.
    
  5. 取得狀態資料。回應物件是含有 Job 資源中所有適用元素的字典,包括完整的 TrainingInput 資源和 TrainingOutput 資源的適用元素。以下範例會輸出工作狀態和工作使用的機器學習單位數量。

    print('Job status for {}.{}:'.format(projectName, jobName))
    print('    state : {}'.format(response['state']))
    print('    consumedMLUnits : {}'.format(
        response['trainingOutput']['consumedMLUnits']))
    

如果訓練應用程式或 AI Platform 基礎架構發生問題,工作可能會失敗。您可以使用 Stackdriver Logging 開始偵錯。

監控資源用量

您可以前往「Job Details」(工作詳細資料) 頁面,找到訓練工作的下列資源利用率圖表:

  • 工作的匯總 CPU 或 GPU 使用率和記憶體使用率。這些內容會依主要執行個體、工作站和參數伺服器加以細分。
  • 以每秒位元組數為單位測量的工作網路用量。傳送的位元組和接收的位元組有不同的圖表。
  1. 前往 GCP Console 的 AI Platform「Jobs」(工作)頁面。

    前往 AI Platform「Jobs」(工作) 頁面

  2. 在清單中找出您的工作。

  3. 在清單中按一下工作名稱,即可開啟「Job Details」(工作詳細資料) 頁面。

  4. 選取加上「CPU」、「GPU」或「Network」(網路) 標籤的分頁,查看關聯的資源利用率圖表。

您也可以使用 Stackdriver Monitoring,取得訓練工作所使用的線上資源相關資訊。AI Platform 會將指標匯出至 Stackdriver。

每個 AI Platform 訓練指標類型的名稱中都包含「training」,例如 ml.googleapis.com/training/cpu/utilizationml.googleapis.com/training/accelerator/memory/utilization

使用 TensorBoard 監控

您可以將訓練應用程式設為儲存匯總資料,以便使用 TensorBoard 檢查及視覺化。

將您的匯總資料儲存至 Cloud Storage 位置,並將 TensorBoard 指向該位置來檢查資料。您也可以將 TensorBoard 指向包含子目錄的目錄,子目錄包含多個工作的輸出。

如要進一步瞭解 TensorBoard 和 AI Platform,請參閱入門指南

後續步驟

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

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

這個網頁
Google Cloud Machine Learning 說明文件