監控訓練工作

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

檢查工作狀態

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

主控台

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

    在 GCP 主控台中開啟「Jobs」(工作)

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

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

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

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 和記憶體使用率匯總圖表:

  1. 前往 GCP 主控台的 AI Platform「Jobs」(工作) 頁面。

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

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

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

  4. 向下捲動即可看到資源利用率圖表。

    AI Platform「Job details」(工作詳細資料) 頁面上的 CPU 和記憶體用量圖表

您可以使用 Stackdriver Monitoring,取得訓練工作所使用的線上資源的更詳細資訊。AI Platform 會將兩個指標匯出至 Stackdriver:

  • ml/training/memory/utilization 會以分數顯示目前正在使用的已分配記憶體。

  • ml/training/cpu/utilization 會以小數顯示目前的已分配 CPU 使用率。

您可以使用這些指標查看工作中每個項目 (工作站、參數伺服器和主要執行個體) 的 CPU 和記憶體使用率。

.

使用 TensorBoard 監控

您可以將訓練應用程式設定為儲存彙總資料,並可使用 TensorBoard 檢查及繪製圖表。

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

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

後續步驟

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

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

這個網頁
TensorFlow 適用的 AI Platform