手把手教你開始用GCP機器學習服務

google-cloud-platform-empowers-tensorflow-and-machine-learning

Cloud Machine Learning (beta)是 Google Cloud Platform 對於深度學習提供的管理服務。它可以讓您建立作用於任何大小、任何資料的學習模型,並藉由TensorFlow框架打造您的服務。您立即可以將訓練模型放置於全球的prediction平台,能支持成千上萬的使用者與TB等級的資料。除此之外,此項服務同時整合了Cloud Dataflow, Cloud Storage 甚至 BigQuery。現在我們就來使用看看如何簡單的進行手把手Cloud Machine Learning:

  • 部署環境
  • 起始設定
  • 訓練資料
  • 建立模型
  • 實施預測與檢驗成果

這一次我們進行的是MNIST專案。MNIST是影像識別的經典手寫辨識庫,每張圖片都是28*28pixel,對應到每一個阿拉伯數字。如果學習程式語言第一堂課是”Hello World”,MNIST就是學習機器學習時的第一堂課。以下是它在GCP上的範例

https://github.com/GoogleCloudPlatform/cloudml-samples/tree/master//mnist

mnist

每個數字都可以轉換成一個矩陣,示意圖如下。

mnist-matrix詳細也可以參考TensorFlow的官網教學: https://www.tensorflow.org/versions/r0.11/tutorials/mnist/beginners/

部署限制

https://cloud.google.com/ml/docs/concepts/environment-overview

部署區域與價格

https://cloud.google.com/ml/pricing

現在僅有美國與歐洲可使用,而美國比較便宜!

起始設定

SETUP: cloudml-samples

https://cloud.google.com/ml/docs/how-tos/getting-set-up

step1: 安裝Cloud ML運作的必要工具

curl https://raw.githubusercontent.com/GoogleCloudPlatform/cloudml-samples/master/tools/setup_cloud_shell.sh | bash

實際畫面為:
setup setup-env

看到Success!即為成功。

step2: 匯出路徑的環境變數

export PATH=${HOME}/.local/bin:${PATH}

step3: 確認(check)環境設定完成

curl https://raw.githubusercontent.com/GoogleCloudPlatform/cloudml-samples/master/tools/check_environment.py | python

setup-check-env

step4: 啟動專案

gcloud beta ml init-project

init-project

step5: 開啟 Cloud Storage bucket

無論在模型的訓練或者預測時,都需要讀寫批次檔案。我們在這邊指定專案名稱後連動一個Cloud Storage。這邊需要注意的是,Bucket的region僅能選擇和工作(Job)處理的相同區域,因此這裡我們選擇了us-central1

建立您專案的環境變數

PROJECT_ID=$(gcloud config list project –format “value(core.project)”)

建立Bucket名稱

BUCKET_NAME=${PROJECT_ID}-ml

或者也可以這樣建立Bucket名稱:

BUCKET_NAME=”your_bucket_name”

連動Cloud Storage

gsutil mb -l us-central1 gs://$BUCKET_NAME

連動完成後,您就可以從Console上面找到您的Bucket

storage-bucket

設定準備完畢!

訓練資料

以下是訓練資料檔案,現在我們要把這些資料丟GCP雲端計算。

https://cloud.google.com/ml/docs/quickstarts/training#train_on_the_cloud_single_worker

step1: 路徑切至您的training data

cd ~/google-cloud-ml/samples/mnist/trainable/

step2: 設定training工作名稱

JOB_NAME=mnist_${USER}_$(date +%Y%m%d_%H%M%S)

取得專案名稱

PROJECT_ID=`gcloud config list project –format “value(core.project)”`

設定Training資料放置的Bucket名稱

TRAIN_BUCKET=gs://${PROJECT_ID}-ml

輸出訓練資料的路徑

TRAIN_PATH=${TRAIN_BUCKET}/${JOB_NAME}

刪除清理過去的訓練資料

gsutil rm -rf ${TRAIN_PATH}

傳送(submit)訓練資料至雲端

gcloud beta ml jobs submit training ${JOB_NAME} \

 —package-path=trainer \

 —module-name=trainer.task \

 –staging-bucket=“${TRAIN_BUCKET}” \

 –region=us-central1 \

 — \

 –train_dir=“${TRAIN_PATH}/train”

cloud-training

step3: 檢查是否成功執行

gcloud beta ml jobs describe –project ${PROJECT_ID} ${JOB_NAME}

如出現 state: SUCCEED 即為成功。

cloud-training-2

同時也發現Bucket內出現了您的training資料夾

cloud-training-3

除了可以在Google Cloud Platform運算外,您還可以將小型的資料進行本地訓練

https://cloud.google.com/ml/docs/quickstarts/training

或者在雲端做分散式運算

https://cloud.google.com/ml/docs/quickstarts/training#train_on_the_cloud_distributed

甚至可以用TensorBoard,觀察視覺化後的資料

tensorboard –logdir=data/ –port=8080

建立模型

請留意建立模型的步驟皆需要在以下路徑上:

cd ~/google-cloud-ml/samples/mnist/deployable/

step1: 設定模型名稱

MODEL_NAME=mnist_${USER}_$(date +%Y%m%d_%H%M%S)

step2: 建立模型版本

gcloud beta ml models create ${MODEL_NAME}

gcloud beta ml versions create \

–origin=${TRAIN_PATH}/model/ \

–model=${MODEL_NAME} \

v1

您也可以在Console的Cloud Machine Learning上面操作建立

model-2 model-3

實施預測與檢驗成果

step1: 我們檢視一下要進行預測的檔案內容

head -n2 data/predict_sample.tensor.json

prediction-sample

step2: 針對模型(V1)做預測

gcloud beta ml predict –model=${MODEL_NAME} \

–json-instances=data/predict_sample.tensor.json

prediction-1

step3: 得出預測結果

result

我們可以觀察到預測準確度高達九成。

結語

這次實作的部分是最基礎的應用,Cloud Machine Learning 完美的和 TensorFlow 搭配,必定還有夠多樣的殺手級應用等您挖掘。請繼續關注GCP專家 – LIVEhouse.in 部落格的最新消息!

連絡我們