手把手教你開始用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 部落格的最新消息!

連絡我們