Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
這次的 Lab,主要都會是在 Jupyter 上實作,主要的課程也都在筆記本中。
內容目錄
git clone https://github.com/GoogleCloudPlatform/training-data-analyst
指令。training-data-analyst/self-paced-labs/ai-platform-qwikstart
中的 ai_platform_qwik_start.ipynb
,並逐一完成裡面的任務。import os
指令。執行筆記中的指令碼,下載樣本資料。
mkdir data gsutil -m cp gs://cloud-samples-data/ml-engine/census/data/* data/ # 定義環境變數 export TRAIN_DATA=$(pwd)/data/adult.data.csv export EVAL_DATA=$(pwd)/data/adult.test.csv # 檢查資料是否有效 head data/adult.data.csv
接下來要在本地執行訓練程式,首先建立 trainer
路徑與 __init__.py
空白檔案。
mkdir -p trainer touch trainer/__init__.py
接著執行筆記本中的三段指令,建立 Python 檔案。
建立完 Python 檔案後,執行訓練,並將輸出檔存到指定的路徑中。這裡利用 MODEL_DIR
這個環境變數,指定輸出路徑到 output
中。
MODEL_DIR=output gcloud ai-platform 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 # 檢查是否有輸出結果 ls output/keras_export/
接著執行筆記中的 Python 程式碼片段,抽樣 adult.test.csv
中的 5 筆資料進行學習。
from trainer import util _, _, eval_x, eval_y = util.load_data() prediction_input = eval_x.sample(5) prediction_targets = eval_y[prediction_input.index] print(prediction_input)
會得出以下結果,其中類別資料會轉換為整數,將用於對照表中,而連續資料則轉換為 Z-Score:
age workclass education_num marital_status occupation \ 6314 -0.411607 3 -0.419365 2 6 12336 0.317732 1 1.525903 0 9 126 0.682402 0 2.304010 2 9 10073 1.120006 0 1.136850 2 3 13916 -0.630409 3 -0.419365 4 10 relationship race capital_gain capital_loss hours_per_week \ 6314 0 4 -0.144807 -0.217119 -0.034043 12336 1 4 -0.144807 -0.217119 1.983701 126 5 4 -0.144807 -0.217119 -0.034043 10073 0 4 -0.144807 -0.217119 -0.034043 13916 1 4 -0.144807 -0.217119 -0.034043 native_country 6314 38 12336 38 126 38 10073 38 13916 38
執行下列程式,將輸入的資料轉為 JSON 格式。
import json with open('test.json', 'w') as json_file: for row in prediction_input.values.tolist(): json.dump(row, json_file) json_file.write('\n')
檢查 JSON 檔的內容是否正確:
cat test.json
將該資料匯入已訓練的模型中,進行預測。
gcloud ai-platform local predict \ --model-dir output/keras_export/ \ --json-instances ./test.json
此時,回傳的數值會如下,0-0.5 代表預測收入小於等於 5 萬美元,0.5-1 則代表大於 5 萬美元。
[0.20451265573501587] [0.37865954637527466] [0.7607640027999878] [0.7124574184417725] [0.02481493353843689]
定義環境變數,供之後使用
export PROJECT=$(gcloud config list project --format "value(core.project)") echo "Your current GCP Project Name is: "${PROJECT}
在進行 Lab 的時候,記得將專案名稱複製,取代下一個指令
PROJECT = "{{剛才的 PROJECT 名稱}}" # Replace with your project name BUCKET_NAME=PROJECT+"-aiplatform" REGION="us-central1"
將資訊存入最早定義的 os
物件中。
os.environ["PROJECT"] = PROJECT os.environ["BUCKET_NAME"] = BUCKET_NAME os.environ["REGION"] = REGION os.environ["TFVERSION"] = "2.1" os.environ["PYTHONVERSION"] = "3.7"
建立一個 Cloud Storage 貯體,並將貯體名稱複製取代下列的指令。
if ! gsutil ls | grep -q gs://train-like-a-boss; then gsutil mb -l us gs://train-like-a-boss fi gsutil cp -r data gs://train-like-a-boss/data # 重新設定環境變數 export TRAIN_DATA=gs://train-like-a-boss/data/adult.data.csv export EVAL_DATA=gs://train-like-a-boss/data/adult.test.csv # 複製剛才的 test.json gsutil cp test.json gs://train-like-a-boss/data/test.json export TEST_JSON=gs://train-like-a-boss/data/test.json
執行訓練
JOB_ID=census_$(date -u +%y%m%d_%H%M%S) OUTPUT_PATH=gs://train-like-a-boss/$JOB_ID gcloud ai-platform jobs submit training $JOB_ID \ --job-dir $OUTPUT_PATH \ --runtime-version $TFVERSION \ --python-version $PYTHONVERSION \ --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
將系統回傳的 jobId 存入 os
物件中
os.environ["JOB_ID"] = "census_210615_103802"
此時可以回到 [AI 平台] 的 [Jobs] 頁面中,檢視訓練的進度。或是在終端機中用指令查詢:
gcloud ai-platform jobs stream-logs $JOB_ID
先定義 os
的模型名稱。
os.environ["MODEL_NAME"] = "census" # 在 AI Platform 建立模型 gcloud ai-platform models create $MODEL_NAME --regions=$REGION
用 gcloud ai-platform versions create v1
發布第一個版本 v1
。
OUTPUT_PATH=gs://{{貯體名稱}}/$JOB_ID MODEL_BINARIES=$OUTPUT_PATH/keras_export/ gcloud ai-platform versions create v1 \ --model $MODEL_NAME \ --origin $MODEL_BINARIES \ --runtime-version $TFVERSION \ --python-version $PYTHONVERSION \ --region=global
檢視模型列表。
gcloud ai-platform models list
執行雲端預測。
gcloud ai-platform predict \ --model $MODEL_NAME \ --version v1 \ --json-instances ./test.json \ --region global
AI Platform 同時支援批次預測,但是並不在本次 Lab 涵蓋的範圍中。