開始使用

在本教學課程中使用 AI Platform 之前,請先熟悉機器學習和 TensorFlow。如要進一步瞭解相關資訊,請參閱使用 TensorFlow API 的機器學習密集課程。如需更多有關機器學習的其他教育資源,請參閱 Learn with Google AI

總覽

本文件提供有關 AI Platform 訓練與預測功能的完整的逐步操作入門說明。您可以透過使用人口普查資料集的範例逐步瞭解下列內容:

  • 建立 TensorFlow 訓練應用程式,並在本機驗證。
  • 在雲端的單一工作站執行個體上執行訓練工作。
  • 在雲端中以分散式訓練工作的方式執行訓練工作。
  • 使用超參數調整功能將超參數最佳化。
  • 部署模型以支援預測。
  • 要求線上預測結果與查看回應。
  • 要求批次預測。

建構目標

這個範例會建構一個寬深模型,並根據美國人口普查收入資料集預測收入類別。兩種收入類別 (也稱為標籤) 分別為:

  • >50K:高於 50,000 美元
  • <=50K:低於或等於 50,000 美元

寬深模型使用深層類神經網路 (DNN) 學習有關複雜特徵或這類特徵之間如何互動的高階抽象層級。接著,這些模型會將 DNN 的輸出資料和針對較簡單的特徵所執行的線性迴歸互相結合。如此一來,便能在效能和速度之間取得平衡點,有效解決許多結構化資料的問題。

如要進一步瞭解寬深模型,請參閱 Google Research 網誌文章:寬深學習技術:搭配 TensorFlow 可發揮更強大的功效

這個範例會使用 TensorFlow 預先建立的 DNNCombinedLinearClassifier 類別來定義模型,並針對人口普查資料集定義資料轉換作業,然後將這些 (可能) 已轉換的特徵指派給 DNN 或模型的線性部分。

成本

本逐步操作說明中使用的 Google Cloud Platform 元件會產生費用,包括:

  • AI Platform 用於:
    • 訓練
    • 預測
  • Cloud Storage 用於:
    • 儲存用於訓練的輸入資料
    • 暫存訓練應用程式套件
    • 寫入訓練成果
    • 儲存用於批次預測的輸入資料檔案

使用 Pricing Calculator 可根據您的預測使用量來產生預估費用。

設定與測試 Cloud 環境

完成下列步驟以設定 GCP 帳戶、啟動 AI Platform API,以及安裝並啟動 Cloud SDK。

設定 GCP 專案

  1. 登入您的 Google 帳戶。

    如果您沒有帳戶,請申請新帳戶

  2. Select or create a Google Cloud Platform project.

    Go to the Manage resources page

  3. 請確認您已為專案啟用計費功能。

    瞭解如何啟用計費功能

  4. 啟用AI Platform and Compute Engine API。

    啟用 API

  5. Install and initialize the Cloud SDK.

設定環境

請選擇下列其中一個選項,在 macOS 的本機或 Cloud Shell 的遠端環境中設定環境。

如果您是 macOS 使用者,建議使用下列「MACOS」分頁設定環境;「CLOUD SHELL」分頁中顯示的 Cloud Shell 適用於 macOS、Linux 及 Windows。Cloud Shell 讓您能快速試用 AI Platform,但這項做法不適用於後續的開發工作。

macOS

  1. 檢查 Python 的安裝狀態
    確認已安裝 Python。如果沒有,請先進行安裝。

    python -V
  2. 檢查 pip 的安裝狀態
    pip 是 Python 的套件管理員,隨附於目前的 Python 版本中。執行 pip --version,檢查是否已安裝 pip。如果尚未安裝,請參閱 pip 的安裝說明

    您可以使用下列指令升級 pip

    pip install -U pip

    詳情請參閱 pip 說明文件

  3. 安裝 virtualenv
    virtualenv 是用於建立獨立 Python 環境的工具。執行 virtualenv --version,檢查是否已安裝 virtualenv。如果尚未安裝,請先安裝 virtualenv

    pip install --user --upgrade virtualenv

    如要建立本指南使用的獨立開發環境,請在 virtualenv 中建立新的虛擬環境。例如,下列指令會啟動名稱為 cmle-env 的環境:

    virtualenv cmle-env
    source cmle-env/bin/activate
  4. 為達到本教學課程的目的,請在虛擬環境中執行其餘指令。

    請參閱使用 virtualenv 的詳細資訊。如要結束 virtualenv,請執行 deactivate

Cloud Shell

  1. 開啟 Google Cloud Platform 主控台。

    Google Cloud Platform 主控台

  2. 按一下主控台視窗頂端的 [Activate Google Cloud Shell] (啟用 Google Cloud Shell) 按鈕。

    啟用 Google Cloud Shell

    系統會在主控台底部的新頁框開啟 Cloud Shell 工作階段,並顯示指令列提示。殼層工作階段可能需要幾秒鐘的時間才能完成初始化。

    Cloud Shell 工作階段

    Cloud Shell 工作階段已準備就緒。

  3. 設定 gcloud 指令列工具,以使用選取的專案。

    gcloud config set project [selected-project-id]

    其中 [selected-project-id] 是您的專案 ID (請省略括號)。

驗證 Google Cloud SDK 元件

如何驗證 Google Cloud SDK 元件的安裝狀態:

  1. 列出您的模型:

    gcloud ml-engine models list
  2. 如果您尚未建立任何模型,指令會傳回空白的清單:

    Listed 0 items.

    開始建立模型後,即可使用這個指令查看模型清單。

  3. 如果您先前已安裝 gcloud,請更新 gcloud

    gcloud components update

安裝 TensorFlow

若要安裝 TensorFlow,請執行以下指令:

pip install --user --upgrade tensorflow

驗證安裝:

python -c "import tensorflow as tf; print('TensorFlow version {} is installed.'.format(tf.VERSION))"

您可以忽略「TensorFlow 程式庫未經過編譯,無法使用某些指示」的警告訊息。

如要進一步瞭解安裝 TensorFlow 的相關資訊,包括其他安裝選項與疑難排解資訊,請參閱 TensorFlow 說明文件

Python 版本支援

根據預設,AI Platform 會執行 Python 2.7,本教學課程的範例也使用 Python 2.7。

如果您使用的是執行階段 1.4 以上版本,可使用 Python 3.5 進行訓練。無論使用 Python 2 或 Python 3 訓練模型,線上預測和批次預測都可使用經過訓練的模型。

查看如何使用 Python 3.5 提交訓練工作

下載本教學課程使用的程式碼

  1. 從 GitHub 存放區下載範例。

macOS

  1. 下載並解壓縮 AI Platform ZIP 範例檔案。

    下載 ZIP 檔案

  2. 開啟終端機視窗,前往解壓縮的 cloudml-samples-master 目錄的上層目錄。

  3. 前往 cloudml-samples-master > census > estimator 目錄。本逐步操作說明中的指令必須從 estimator 目錄執行。

    cd cloudml-samples-master/census/estimator
    

Cloud Shell

  1. 輸入下列指令即可下載 AI Platform ZIP 範例檔案:

    wget https://github.com/GoogleCloudPlatform/cloudml-samples/archive/master.zip
    
  2. 解壓縮檔案以擷取 cloudml-samples-master 目錄。

    unzip master.zip
    
  3. 前往 cloudml-samples-master > census > estimator 目錄。本逐步操作說明中的指令必須從 estimator 目錄執行。

    cd cloudml-samples-master/census/estimator
    

在本機開發及驗證訓練應用程式

在雲端環境執行您的訓練應用程式之前,請先在本機執行。本機環境提供有效率的開發和驗證工作流程,以便您快速疊代。在本機對應用程式進行偵錯時,系統也不會向您收取雲端資源費用。

取得訓練資料

adult.dataadult.test 等相關資料檔案會託管在公開的 Cloud Storage 值區中。以這個範例來說,您可以使用 Cloud Storage 上的版本,這些版本已清除一些繁瑣的內容,並非原始來源資料。如要進一步瞭解關於資料的詳細資訊,請參閱下文。

您可以直接從 Cloud Storage 讀取資料檔案,或是將這些檔案複製到本機環境中。以這個範例來說,您會下載範例以進行本機訓練,之後再上傳到自己的 Cloud Storage 值區進行雲端訓練。

  1. 將資料下載到本機檔案目錄,並設定指向下載資料檔案的變數。

    mkdir data
    gsutil -m cp gs://cloud-samples-data/ml-engine/census/data/* data/
    
  2. TRAIN_DATAEVAL_DATA 變數設定為本機檔案路徑。例如,下列指令會將變數設定為本機路徑。

    TRAIN_DATA=$(pwd)/data/adult.data.csv
    EVAL_DATA=$(pwd)/data/adult.test.csv
    

資料會以逗號分隔值的格式儲存,如下列 adult.data 檔案預覽所示:

39, State-gov, 77516, Bachelors, 13, Never-married, Adm-clerical, Not-in-family, White, Male, 2174, 0, 40, United-States, <=50K
50, Self-emp-not-inc, 83311, Bachelors, 13, Married-civ-spouse, Exec-managerial, Husband, White, Male, 0, 0, 13, United-States, <=50K
38, Private, 215646, HS-grad, 9, Divorced, Handlers-cleaners, Not-in-family, White, Male, 0, 0, 40, United-States, <=50K
53, Private, 234721, 11th, 7, Married-civ-spouse, Handlers-cleaners, Husband, Black, Male, 0, 0, 40, United-States, <=50K
...

安裝依附元件

macOS

如要在本機安裝 TensorFlow,我們建議您使用虛擬環境。請參閱下列操作說明:

如果您已經熟悉 Docker,您可以在 TensorFlow 容器中完成本教學課程。瞭解如何使用 Docker 安裝 TensorFlow

您可以使用範例提供的 requirements.txt 檔案來安裝專案所需的依附元件。在您的虛擬環境中輸入以下指令:

  pip install --user -r ../requirements.txt

執行這個指令將會安裝本教學課程中使用的 TensorFlow 1.10。

Cloud Shell

雖然 TensorFlow 安裝在 Cloud Shell 上,但您必須執行範例的 requirements.txt 檔案以確保您使用的 TensorFlow 版本與範例所需的版本相同。

  pip install --user -r ../requirements.txt

執行這個指令將會安裝本教學課程中使用的 TensorFlow 1.10。

執行本機訓練工作

本機訓練工作會載入您的 Python 訓練程式,並在與實際 AI Platform 雲端訓練工作中類似的環境中啟動訓練程序。

  1. 指定輸出目錄,然後設定 MODEL_DIR 變數。下列指令會將 MODEL_DIR 設定為 output 的值。

    MODEL_DIR=output
    
  2. 如果系統保留了先前訓練回合的資料,建議您可以刪除輸出目錄中的內容。下列指令會刪除 output 目錄中的所有資料。

    rm -rf $MODEL_DIR/*
    
  3. 如要在本機進行訓練,請執行下列指令:

    gcloud ml-engine local train \
        --module-name trainer.task \
        --package-path trainer/ \
        --job-dir $MODEL_DIR \
        -- \
        --train-files $TRAIN_DATA \
        --eval-files $EVAL_DATA \
        --train-steps 1000 \
        --eval-steps 100
    

詳細資訊記錄功能預設為關閉。如要開啟這項功能,請將 --verbosity 標記設為 DEBUG。後續範例會說明啟用方法。

使用 TensorBoard 檢查彙總記錄

如要查看評估結果,可以使用名為 TensorBoard 的視覺化工具。TensorBoard 可用來視覺化 TensorFlow 圖形、繪製圖形執行的量化指標,以及顯示各種其他資料 (例如通過圖形的圖片)。TensorBoard 是 TensorFlow 安裝程序的一部分。

請依照下列步驟啟動 TensorBoard,並將其指向訓練期間產生的彙總記錄,包括執行期間和執行後的記錄。

macOS

  1. 啟動 TensorBoard:

    tensorboard --logdir=$MODEL_DIR
    
  2. 開始執行 TensorBoard 之後,只要在瀏覽器的網址列中輸入 http://localhost:6006,就可以開啟這個工具。

Cloud Shell

  1. 啟動 TensorBoard:

    tensorboard --logdir=$MODEL_DIR --port=8080
    
  2. 在指令列頂端的網頁預覽選單中,選取 [Preview on port 8080] (透過以下通訊埠預覽:8080)。

按一下 [Accuracy] (準確率) 即可查看隨著工作進度變化的準確率圖表。

TensorBoard 準確率圖表

隨時在指令列上鍵入 ctrl+c 就能關閉 TensorBoard。

以分散式模式執行本機訓練工作

您可以測試模型是否適用於 AI Platform 的分散式執行環境,方法是使用 --distributed 標記執行本機訓練工作。

  1. 指定輸出目錄,然後再次設定 MODEL_DIR 變數。下列指令會將 MODEL_DIR 設定為 output-dist 的值。

    MODEL_DIR=output-dist
    
  2. 如果系統保留了先前執行的訓練資料,請刪除 output 目錄中的內容。

    rm -rf $MODEL_DIR/*
    
  3. 使用 --distributed 選項執行 local train 指令。請務必將標記放在分隔使用者引數與指令列引數的 -- 上方。

    gcloud ml-engine local train \
        --module-name trainer.task \
        --package-path trainer/ \
        --job-dir $MODEL_DIR \
        --distributed \
        -- \
        --train-files $TRAIN_DATA \
        --eval-files $EVAL_DATA \
        --train-steps 1000 \
        --eval-steps 100
    

檢查輸出

輸出檔案會寫入 --job-dir 指定的目錄,該目錄設為 output-dist

ls -R output-dist/

畫面會顯示類似以下的輸出:

checkpoint
eval
events.out.tfevents.1488577094.<host-name>
export
graph.pbtxt
model.ckpt-1000.data-00000-of-00001
model.ckpt-1000.index
model.ckpt-1000.meta
model.ckpt-2.data-00000-of-00001
model.ckpt-2.index
model.ckpt-2.meta

output-dist//eval:
events.out.tfevents.<timestamp>.<host-name>
events.out.tfevents.<timestamp><host-name>
events.out.tfevents.<timestamp>.<host-name>

output-dist//export:
census

output-dist//export/census:
<timestamp>

output-dist//export/census/<timestamp>:
saved_model.pb
variables
...

檢查記錄

使用 TensorBoard 檢查彙總記錄的方式與檢查單一執行個體訓練工作的方式相同,但您必須變更 --logdir 值,使其符合分散式模式中使用的輸出目錄名稱。

macOS

  1. 啟動 TensorBoard:

    tensorboard --logdir=$MODEL_DIR
    
  2. 開始執行 TensorBoard 之後,只要在瀏覽器的網址列中輸入 http://localhost:6006,就可以開啟這個工具。

Cloud Shell

  1. 啟動 TensorBoard:

    tensorboard --logdir=$MODEL_DIR --port=8080
    
  2. 在指令列頂端的網頁預覽選單中,選取 [Preview on port 8080] (透過以下通訊埠預覽:8080)。

設定 Cloud Storage 值區

本節說明如何建立新值區。您可以使用現有值區,但如果該值區並不屬於用來執行 AI Platform 的專案,就必須明確將值區的存取權授予這些 AI Platform 服務帳戶

  1. 指定新值區的名稱。Cloud Storage 中所有值區的名稱皆不得重複。

    BUCKET_NAME="your_bucket_name"

    例如,使用您的專案名稱,並在後面附加 -mlengine

    PROJECT_ID=$(gcloud config list project --format "value(core.project)")
    BUCKET_NAME=${PROJECT_ID}-mlengine
  2. 檢查您建立的值區名稱。

    echo $BUCKET_NAME
  3. 選取值區的地區,然後設定 REGION 環境變數。

    例如,下列程式碼會建立 REGION 並設為 us-central1

    REGION=us-central1
  4. 建立新值區:

    gsutil mb -l $REGION gs://$BUCKET_NAME

    附註:使用的地區必須與您預計要執行 AI Platform 工作的地區相同。本範例使用 us-central1,因為這是入門指南操作說明中所使用的地區。

將資料檔案上傳到 Cloud Storage 值區。

  1. 使用 gsutil 將兩個檔案複製到 Cloud Storage 值區。

    gsutil cp -r data gs://$BUCKET_NAME/data
    
  2. TRAIN_DATAEVAL_DATA 變數設定為指向檔案。

    TRAIN_DATA=gs://$BUCKET_NAME/data/adult.data.csv
    EVAL_DATA=gs://$BUCKET_NAME/data/adult.test.csv
    
  3. 再次使用 gsutil 將 JSON 測試檔案 test.json 複製到 Cloud Storage 值區。

    gsutil cp ../test.json gs://$BUCKET_NAME/data/test.json
    
  4. TEST_JSON 變數設定為指向這個檔案。

    TEST_JSON=gs://$BUCKET_NAME/data/test.json
    

在雲端中執行單一執行個體訓練工作

有了經過驗證的訓練工作 (已在單一執行個體中和分散式模式下執行),您現在可以在雲端環境執行訓練工作。請先從要求單一執行個體訓練工作開始。

請使用預設的 BASIC 資源調度層級執行單一執行個體的訓練工作。初始工作要求可能需要幾分鐘的時間才會開始執行,但執行後續工作的速度會較快。如此一來,您在開發及驗證訓練工作時可以快速疊代。

  1. 選取初始訓練回合的名稱,這個名稱必須與任何後續訓練回合分隔開來。例如,您可以附加一個數字來表示疊代。

    JOB_NAME=census_single_1
    
  2. 要求訓練和預測工作時,設定包含 OUTPUT_PATH 變數,以指定 AI Platform 產生輸出的目錄。OUTPUT_PATH 代表 Cloud Storage 位置的完整名稱,用於模型查核點、彙總資料和匯出作業。您可以使用在前一個步驟中定義的 BUCKET_NAME 變數。

    您可以考慮使用工作名稱做為輸出目錄。例如,以下 OUTPUT_PATH 會指向名為 census_single_1 的目錄。

    OUTPUT_PATH=gs://$BUCKET_NAME/$JOB_NAME
    
  3. 執行下列指令以在雲端中提交使用單一程序的訓練工作。此時,請將 --verbosity 標記設為 DEBUG,這樣您可以檢查完整的記錄輸出、擷取準確率、損失和其他指標。輸出資料中也會包含許多其他警告訊息,以本範例來說,您可以予以忽略。

    gcloud ml-engine jobs submit training $JOB_NAME \
        --job-dir $OUTPUT_PATH \
        --runtime-version 1.10 \
        --module-name trainer.task \
        --package-path trainer/ \
        --region $REGION \
        -- \
        --train-files $TRAIN_DATA \
        --eval-files $EVAL_DATA \
        --train-steps 1000 \
        --eval-steps 100 \
        --verbosity DEBUG
    

如要監控訓練工作進度,您可以查看指令列輸出,或是前往 Google Cloud Platform 主控台,依序點選 [AI Platform] > [Jobs] (工作)

檢查輸出

在雲端訓練中,產生的輸出會儲存至 Cloud Storage。在本範例中,輸出會儲存至 OUTPUT_PATH;如要列表,請執行下列指令:

gsutil ls -r $OUTPUT_PATH

輸出會類似於本機訓練的輸出 (如上所述)

檢查 Stackdriver 記錄

如要瞭解訓練程式碼在雲端上的行為,透過記錄是個實用方法。當 AI Platform 在執行訓練工作時,會擷取所有的 stdoutstderr 串流與記錄陳述式。這些記錄會儲存到 Stackdriver Logging,在執行期間和執行後都能看到。

找出工作記錄最簡單的方法就是前往 GCP 主控台,依序選取 [AI Platform] > [Jobs] (工作),找到所需工作後按一下 [View logs] (查看記錄)。

如果您選取 [All logs] (所有記錄),系統會顯示所有工作站的所有記錄。您也可以選取特定工作;master-replica-0 可讓您從主要執行個體的角度查看工作執行狀態總覽。

由於您已選取詳細資訊記錄,因此可以檢查完整的記錄輸出。在記錄中尋找 accuracy 字詞:

AI Platform 工作適用的 Stackdriver Logging 主控台螢幕擷圖

如要在終端機中查看這些記錄,請在指令列中加入下列程式碼:

gcloud ml-engine jobs stream-logs $JOB_NAME

查看 gcloud ml-engine jobs stream-logs 的所有選項。

使用 TensorBoard 檢查彙總記錄

如要檢查訓練工作的行為,您可以啟動 TensorBoard,並將其指向訓練期間產生的彙總記錄,包括執行期間和執行後的記錄。

由於訓練程式會直接將彙總記錄寫入 Cloud Storage 位置,因此 TensorBoard 可自動讀取,您不需要手動複製事件檔案。

macOS

  1. 啟動 TensorBoard:

    tensorboard --logdir=$OUTPUT_PATH
    
  2. 開始執行 TensorBoard 之後,只要在瀏覽器的網址列中輸入 http://localhost:6006,就可以開啟這個工具。

Cloud Shell

  1. 啟動 TensorBoard:

    tensorboard --logdir=$OUTPUT_PATH --port=8080
    
  2. 在指令列頂端的網頁預覽選單中,選取 [Preview on port 8080] (透過以下通訊埠預覽:8080)。

按一下 [Accuracy] (準確率) 即可查看隨著工作進度變化的準確率圖表。

隨時在指令列上鍵入 ctrl+c 就能關閉 TensorBoard。

在雲端中執行分散式訓練

如要在執行訓練工作時運用 Google 的可擴充基礎架構,請將訓練工作的執行方式設定為分散式模式。

不需要變更程式碼就可以在 AI Platform 中將此模型做為分散式程序執行。

如要執行分散式工作,請將 --scale-tier 設定為基本級以上的任何層級。如要進一步瞭解資源調度層級,請參閱資源調度層級說明文件

  1. 選取分散式訓練工作的名稱,這個名稱必須與其他訓練工作分隔開來。例如,您可以使用 dist 表示分散式,並使用數字表示疊代。

    JOB_NAME=census_dist_1
    
  2. OUTPUT_PATH 指定為包含工作名稱,這樣可避免您不小心重複使用工作之間的查核點。如果您在上次定義 BUCKET_NAME 後啟動了新的指令列工作階段,您可能必須重新定義。舉例來說,以下的 OUTPUT_PATH 會指向名為 census-dist-1 的目錄。

    OUTPUT_PATH=gs://$BUCKET_NAME/$JOB_NAME
    
  3. 執行下列指令以在雲端中提交使用多個工作站的訓練工作。請注意,工作可能需要幾分鐘的時間才會啟動。

    --scale-tier 放在分隔使用者引數與指令列引數的 -- 上方。舉例來說,下列指令使用 STANDARD_1 的資源調度層級:

    gcloud ml-engine jobs submit training $JOB_NAME \
        --job-dir $OUTPUT_PATH \
        --runtime-version 1.10 \
        --module-name trainer.task \
        --package-path trainer/ \
        --region $REGION \
        --scale-tier STANDARD_1 \
        -- \
        --train-files $TRAIN_DATA \
        --eval-files $EVAL_DATA \
        --train-steps 1000 \
        --verbosity DEBUG  \
        --eval-steps 100
    

如要監控工作進度,您可以查看指令列輸出,或是前往 Google Cloud Platform 主控台,依序選取 [AI Platform] > [Jobs] (工作)

檢查記錄

檢查 Stackdriver 記錄和彙總記錄的方式與檢查單一執行個體訓練工作的方式相同。

Stackdriver 記錄:可前往 GCP 主控台,依序選取 [AI Platform] > [Jobs] (工作),找到所需工作後按一下 [View logs] (查看記錄);或是透過終端機使用下列指令:

gcloud ml-engine jobs stream-logs $JOB_NAME

TensorBoard:

macOS

  1. 啟動 TensorBoard:

    tensorboard --logdir=$OUTPUT_PATH
    
  2. 開始執行 TensorBoard 之後,只要在瀏覽器的網址列中輸入 http://localhost:6006,就可以開啟這個工具。

Cloud Shell

  1. 啟動 TensorBoard:

    tensorboard --logdir=$OUTPUT_PATH --port=8080
    
  2. 在指令列頂端的網頁預覽選單中,選取 [Preview on port 8080] (透過以下通訊埠預覽:8080)。

超參數調整

AI Platform 提供超參數調整功能,協助您儘可能提高模型的預測準確率。人口普查範例會將超參數配置設定儲存在名稱為 hptuning_config.yaml 的 YAML 檔案中,並使用 --config 變數在訓練要求中加入檔案。

  1. 選取新的工作名稱,並建立參照設定檔的變數。

    HPTUNING_CONFIG=../hptuning_config.yaml
    JOB_NAME=census_core_hptune_1
    TRAIN_DATA=gs://$BUCKET_NAME/data/adult.data.csv
    EVAL_DATA=gs://$BUCKET_NAME/data/adult.test.csv
    
  2. OUTPUT_PATH 指定為包含工作名稱,這樣可避免您不小心重複使用工作之間的查核點。如果您在上次定義 BUCKET_NAME 後啟動了新的指令列工作階段,您可能必須重新定義。舉例來說,以下的 OUTPUT_PATH 會指向名為 census_core_hptune_1 的目錄。

    OUTPUT_PATH=gs://$BUCKET_NAME/$JOB_NAME
    
  3. 執行下列指令提交訓練工作,這個訓練工作不僅使用多個工作站,還使用了超參數調整。

    gcloud ml-engine jobs submit training $JOB_NAME \
        --stream-logs \
        --job-dir $OUTPUT_PATH \
        --runtime-version 1.10 \
        --config $HPTUNING_CONFIG \
        --module-name trainer.task \
        --package-path trainer/ \
        --region $REGION \
        --scale-tier STANDARD_1 \
        -- \
        --train-files $TRAIN_DATA \
        --eval-files $EVAL_DATA \
        --train-steps 1000 \
        --verbosity DEBUG  \
        --eval-steps 100
    

如要進一步瞭解超參數調整,請參閱超參數調整總覽

部署模型以支援預測

  1. 選擇模型的名稱,其開頭必須為字母,且只能包含字母、數字和底線。例如:

    MODEL_NAME=census
    
  2. 建立 AI Platform 模型:

    gcloud ml-engine models create $MODEL_NAME --regions=$REGION
    
  3. 選取要使用的工作輸出。下列範例使用名為 census_dist_1 的工作。

    OUTPUT_PATH=gs://$BUCKET_NAME/census_dist_1
    
  4. 查看匯出訓練過的模型二進位檔的完整路徑:

    gsutil ls -r $OUTPUT_PATH/export
    
  5. 找到名為 $OUTPUT_PATH/export/census/<timestamp> 的目錄,複製這個目錄路徑 (不包含結尾的 : 符號),然後將環境變數 MODEL_BINARIES 設為該值。例如:

    MODEL_BINARIES=gs://$BUCKET_NAME/census_dist_1/export/census/1487877383942/

    其中,$BUCKET_NAME 是 Cloud Storage 值區名稱,而 census_dist_1 是輸出目錄。

  6. 執行下列指令以建立版本 v1

    gcloud ml-engine versions create v1 \
        --model $MODEL_NAME \
        --origin $MODEL_BINARIES \
        --runtime-version 1.10
    

您可以使用 models list 指令取得模型清單。

gcloud ml-engine models list

傳送線上預測要求給已部署的模型

您現在可以傳送預測要求給您的模型。下方提供範例指令,顯示如何使用您下載為範例 GitHub 存放區的 test.json 檔案傳送線上預測要求。

gcloud ml-engine predict \
    --model $MODEL_NAME \
    --version v1 \
    --json-instances ../test.json

系統會根據 test.json 中的資料項目,在回應中提供每個標籤 (>50K<=50K) 的機率,進而指出預測收入是否高於或低於 50,000 美元。

回應的形式如下所示:

CLASSES       PROBABILITIES
[u'0', u'1']  [0.9969545602798462, 0.0030454816296696663]

提交批次預測工作

如果您有大量資料,並且沒有接收預測結果的延遲時間要求,則批次預測服務非常實用。這項服務使用的格式與線上預測使用的格式相同,但必須將資料儲存在 Cloud Storage 中。

  1. 設定工作名稱。

    JOB_NAME=census_prediction_1
    
  2. 設定輸出路徑。

    OUTPUT_PATH=gs://$BUCKET_NAME/$JOB_NAME
    
  3. 提交預測工作。

    gcloud ml-engine jobs submit prediction $JOB_NAME \
        --model $MODEL_NAME \
        --version v1 \
        --data-format text \
        --region $REGION \
        --input-paths $TEST_JSON \
        --output-path $OUTPUT_PATH/predictions
    

與先前的指令不同,這個指令會立即傳回內容。查看工作進度,並等候工作完成:

gcloud ml-engine jobs describe $JOB_NAME

工作完成後會隨即顯示 state: SUCCEEDED;這可能需要數分鐘的時間。您也可以使用下列程式碼,在終端機查看工作記錄:

gcloud ml-engine jobs stream-logs $JOB_NAME

您也可以前往 GCP 主控台,依序選取 [AI Platform] > [Jobs] (工作) 來查看進度。

工作成功完成後,您可以執行下列作業:

  • 讀取輸出摘要。

    gsutil cat $OUTPUT_PATH/predictions/prediction.results-00000-of-00001
    

    畫面會顯示類似以下的輸出內容。

    {"probabilities": [0.9962924122810364, 0.003707568161189556], "logits": [-5.593664646148682], "classes": 0, "logistic": [0.003707568161189556]}
    
  • 使用 gsutil ls 指令,列出工作產生的其他檔案。

    gsutil ls -r $OUTPUT_PATH
    

與線上預測相比,批次預測具有以下特性:

  • 執行這種少量樣本的速度較慢,比較適合執行大量樣本。
  • 傳回的輸出順序可能會與輸入順序不同,但您可以使用數字索引比對每個輸出與其對應的輸入樣本。如果是線上預測則不需要這麼做,因為系統會依照原始的輸入樣本順序傳回輸出。

取得預測資料後,下一步通常會將這些預測資料擷取至資料庫或資料處理管線。

在本範例中,您先部署模型才執行批次預測,但是在提交批次預測工作時,您可能略過了指定模型二進位檔 URI 的步驟。在部署模型之前就從中產生預測資料的其中一個優點在於,您可以評估模型在不同評估資料集上的效能,協助您判斷該模型是否符合您的部署條件。

清理

如果您已完成分析來自訓練和預測回合的輸出,可避免系統向您的 GCP 帳戶收取您在本指南中使用 Cloud Storage 目錄的額外相關費用:

  1. 開啟終端機視窗 (如果尚未開啟)。

  2. 使用具有 -r 標記的 gsutil rm 指令來刪除含有您最近工作的目錄:

    gsutil rm -r gs://$BUCKET_NAME/$JOB_NAME
    

如果成功,指令會傳回類似以下的訊息:

Removing gs://my-awesome-bucket/just-a-folder/cloud-storage.logo.png#1456530077282000...
Removing gs://my-awesome-bucket/...

針對您為此範例所建的任何其他目錄,重複使用這個指令。

或者,如果您在值區中沒有儲存其他資料,也可以對值區本身執行 gsutil rm -r 指令。

關於資料

本範例中用於訓練的人口普查收入資料集UC Irvine Machine Learning Repository 託管。

人口普查資料來源:Lichman, M. (2013)。UCI Machine Learning Repository (http://archive.ics.uci.edu/ml)。Irvine, CA, USA:加利福尼亞大學,資訊與電腦科學學系。所有人都可以公開使用這個資料集,但必須遵守資料集來源的條款 (http://archive.ics.uci.edu/ml)。該資料集係以「現狀」提供,Google 不提供任何明示或默示擔保。對於因使用資料集而導致的任何直接或間接損害,Google 都不負任何責任。

後續步驟

您現在已完成 AI Platform 範例的逐步操作說明,此範例使用人口普查資料進行訓練和預測。您已在本機驗證訓練工作、在雲端中以單一執行個體和分散式模式執行訓練工作、使用超參數調整來改善模型,並使用模型取得線上預測和批次預測。

下列資源可協助您繼續瞭解 AI Platform。

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

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

這個網頁
TensorFlow 的 AI Platform