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 涵蓋的範圍中。