iT邦幫忙

DAY 10
0

Google machine learning 學習筆記系列 第 10

【Day 10】 Google ML - Lab 1 - Rent-a-VM to process earthquake data - 在google雲端上分析地震資料與製圖,並儲存在雲端

0. 前言

今天的內容一開始的幾個part會跟昨天重複(步驟上的相同),
原因是今天整理完之後,覺得把昨天的步驟整理到今天放在一起會比較像一個完整的lab。

而昨天的lab內容我也會把這次lab 1的內容拿掉,
剩下的內容改成lab 0,代表運行lab前的準備,
這樣也有個好處,之後每個的lab開始前,
都會有跟lab 0差不多的步驟,這樣之後也就不用再贅述這部分了。
所以在今天的lab開始前,還是一樣需要先做lab 0的部分才能開始哦~
(雖然下面步驟也會貼心的再提醒就是了XD/images/emoticon/emoticon37.gif/images/emoticon/emoticon37.gif/images/emoticon/emoticon37.gif)

我們就繼續 How Google does Machine Learning 的第五章節~

這次鐵人賽的30天中,我目前所寫文章的所有課程目錄如下:

Course - How Google does Machine Learning

第五章節的課程地圖:(紅字標記為本篇文章中會介紹到的章節)

  • Python notebooks in the cloud
    • Module Introduction
    • Cloud Datalab
      • Cloud Datalab
      • Demo: Cloud Datalab
      • Development process
      • Demo of rehosting Cloud Datalab
    • Working with managed services
    • Computation and storage
    • Lab: Rent-a-VM
      • Intro to Qwiklabs <-- (昨天到這邊)
      • Intro to Renting-VM Lab
      • Lab: Rent-a-VM to process earthquake data
      • Lab debrief
    • Cloud Shell
    • Third wave of cloud
      • Third Wave of Cloud: Fully-Managed Services
      • Third Wave of Cloud: Serverless Data Analysis
      • Third Wave of Cloud: BigQuery and Cloud Datalab
    • Datalab and BigQuery
      • Lab Intro: Analyzing data using Datalab and BigQuery
      • Lab: Analyzing data using Datalab and BigQuery
      • Lab Debrief: Analyzing Data using Datalab and BigQuery
    • Machine Learning with Sara Robinson
      • ML, not rules
    • Pre-trained ML APIs
      • Vision API in action
      • Video intelligence API
      • Cloud Speech API
      • Translation and NL
    • Lab: Machine Learning APIs
      • Lab: Pretrained ML APIs Intro
      • Lab: Invoking Machine Learning APIs
      • Lab Solution

Lab: Rent-a-VM to process earthquake data

課程地圖

  • Python notebooks in the cloud
    • Lab: Rent-a-VM
      • Lab: Rent-a-VM to process earthquake data
      • Lab debrief

在這裡,我們將建立一個 Compute Engine,並使用一些位於Cloud Storage的data,
並完成一個簡單的任務:使我們的網頁顯示現在的地震資料圖,並把這些資料儲存下來。


part 0 : (事前準備) 開啟 GCP console

請先參考 【Day 9】- 每次在google雲端上開始lab前都要的事前準備與注意事項 的內容,完成到運行中階段

part 1 : (準備機器) 在 GCP console 中建立一台VM,並執行 SSH

Step 1 : 在GCP console中,我們找到 MENU -> Compute Engine -> VM instances

https://ithelp.ithome.com.tw/upload/images/20190910/20120424bpGRFtaEof.png

Step 2 : 按下Create新的VM後,

  1. 設定名字
  2. 設定zone(可選擇靠近自己的地區的,或任意也沒關係,影片中示範:US Central 1-b)
  3. 設定CPU(影片中示範:1 vCPU,已經很足夠使用)
  4. 下方選擇"Allow full access to all the Cloud APIs"
  5. 按下最下方的Create

https://ithelp.ithome.com.tw/upload/images/20190910/20120424siuQaGcG3i.png

Step 3 : 稍微等一下VM被建立,按下SSH,(這邊可能需要允許pop-ups)
https://ithelp.ithome.com.tw/upload/images/20190910/20120424Nl1h8CnfPg.png

Step 4 : 我們可以看到SSH的畫面顯示如下。
https://ithelp.ithome.com.tw/upload/images/20190910/20120424QE5bhZsAm7.png


part 2 : (準備資料) 在 SSH 中 下載必要資料

Step 1 : 在SSH中,我們會需要使用git,如果還沒有安裝,
我們輸入以下指令即可安裝git,

sudo apt-get install git

如果是安裝完成的,我們直接輸入git,會看到他的使用說明(如何下參數)。
https://ithelp.ithome.com.tw/upload/images/20190910/20120424Wm7KYBN11C.png

Step 2 : 再來我們要使用git來下載我們想要的資料,
我們輸入

git clone https://github.com/GoogleCloudPlatform/training-data-analyst

下載完我們輸入ls顯示當前資料夾,
如果有看到顯示training-data-analyst,那表示下載成功了。

我們接下來要來取用來自USGS的地震資料,
而這段script,google在剛剛clone的資料夾內已經幫我們寫好了。

Step 3 : 首先我們需要先切換資料夾

cd training-data-analyst/courses/machine_learning/deepdive/01_googleml/earthquakes

小技巧:使用tab,可以自動完成,不用完整的輸入資料夾名稱(如果資料夾存在)。

Step 4 : 接下來我們輸入這段程式碼,less可以幫助我們預覽這份script檔案。

less ingest.sh

使用方式為:
space:往下捲動
b:備份這個page
q:離開(quit)

https://ithelp.ithome.com.tw/upload/images/20190910/20120424JxzYNkeoxl.png

讓我們稍微解析一下這份scripts:
rm行:強制移除現有的"earthquakes.csv"檔案(如果存在的話)
wget行:從USGS下載最近的資料,並命名為"earthquakes.csv"

Step 5 : 執行這份script檔案,將我們要的檔案下載下來。

bash ingest.sh

Step 6 : 我們可以用head偷看一下這個下載檔案的前幾行。

head earthquakes.csv

我們可以看到有顯示時間、經緯度,與所有這幾週發生的地震資料。


part 3 : (跑程式) 轉換資料部分

Step 0 : 我們可以先在以下網址看結果與code的解釋:

基本上是取得地震資料,然後使用matplotlib製圖而成。

https://github.com/GoogleCloudPlatform/datalab-samples/blob/master/basemap/earthquakes.ipynb

Step 1 : 換我們自己動動手,首先先把我們所缺的python package都安裝起來:

basemap:可以畫製地理位置地圖
numpy:數字處理library
matplotlib:基礎圖形繪製library

bash install_missing.sh

Step 2 : 執行transform.py,這份code會執行與剛剛Step 0相同的內容:

python transform.py

Step 3 : 執行ls -lrt,這會照時間順序顯示我們最近所建立的新東西

ls -lrt

Step 4 : 我們會發現有個earthquakes.png被建立,到這邊這階段就完成了。


part 4 : (儲存結果) 建立bucket(雲端儲存資料的地方),並儲存資料。

現在我們想將這個生成的結果存在GCP的雲端上。

Step 1 : 我們先按一下Menu,選擇storage,並按下Create bucket。
https://ithelp.ithome.com.tw/upload/images/20190911/201204249YpTRICksH.png

Step 2 : 這是關於bucket的設定介面,我們一共需要設定的東西如下,
準備好就可以按Create了!

  • 名字:注意這名字一定要全球唯一!!!

我們可以直接使用之前的part 0階段產生的 Projcet ID,我們能確保這是全球唯一的,
除非真的是極度的不幸,不然這名字基本上不太可能被其他人使用過XD

  • storage class:可選multi-regional或regional

看想不想要跨地區儲存(全球化的應用會需要),這邊我們先選regional

  • location:選地區

基本上建議跟當初part 1所建立的 Compute Engine(VM) 在同一個位置,會比較快(減少資料取得時間)。
所以這邊我們一樣選 us-central1

https://ithelp.ithome.com.tw/upload/images/20190911/20120424Xk4UPv6y7i.png

Step 3 : 現在我們該來把我們結果的圖片存進去剛剛建的bucket了,
我們回到我們的 SSH 中,我們直接使用GCP的gsutil工具來儲存資料。

gsutil cp earthquakes.* gs://<這邊填上你bucket的名字>/earthquakes/

稍微解析一下這段:
gsutil:GCP提供的指令工具
cp:copy
earthquakes.*:任何符合earthquakes.*格式的資料,*代表任意值
gs://<這邊填上你bucket的名字>/earthquakes/:目標路徑

https://ithelp.ithome.com.tw/upload/images/20190911/201204243X1zM5CSFS.png


part 5 : (顯示結果) 找到剛剛儲存的資料,並顯示結果。

Step 1 : 我們回到我們剛剛的bucket,重新整理後,應該會看到檔案已經被儲存了。
會看到三個檔案earthquakes.htm, earthquakes.png, earthquakes.cs
這表示這三個檔案已經透過剛剛的指令被複製進我們的bucket了。

https://ithelp.ithome.com.tw/upload/images/20190911/20120424jykRyauTXy.png

Step 2 : 再來我們要將我們在雲端所儲存的東西,製作成一個連結分享出去。
先在左方紅框處的地方打勾,然後再打勾右方紅框處(才會看到顯示Public link)。

https://ithelp.ithome.com.tw/upload/images/20190911/20120424H4AlbvDwKi.png

※新版的介面UI改了,我們改在 SSH 中執行以下指令,以達到一樣的效果:

gsutil acl ch -u AllUsers:R gs://<這邊填上你bucket的名字>/earthquakes/*

Step 3 : 點一下Public link,就會顯示剛剛結果圖了,我們也可將這結果分享給別人(公開的情況下)。

可以稍微注意網址:storage.googleapis.com/<我們bucket的名稱>/earthquake/earthquake.htm
這就像是一般我們常見的資料夾結構

https://ithelp.ithome.com.tw/upload/images/20190911/20120424ifjuteUV4H.png

到這邊我們就算完成我們這次的lab了,
這次的lab我們主要學習的目標有:

  1. Compute Engine (VM) 的租用,並在上面運作程式碼
  2. 使用 Cloud Storage 儲存資料

不過在之後的lab中,就不會再使用這個VM了。

這個lab主要的目的是在建立所有GCP上內容的基礎以及知識。
之後自己想做 Side Project 也必須用到這些觀念。

在之後大部分的課程中,我們將改使用 Managed Services
Managed Services 允許我們直接在上面跑程式,而不需要再自己配置VM、安裝軟體了。

Managed Services 是一種更高階的方式運用 Cloud Services。


結語與一些小廢話

今天把lab 1的內容整個補完了,
打完lab 1的內容後覺得可能有些昨天的內容放在一起比較好,
就順便拿過來整理在一起了,
這樣這整個lab的架構會比較完整。
(前一篇文就變lab 0,當作每次lab前都要的事前準備與注意事項。)
.
目前第五章還有兩個lab與剩下的介紹內容(預計1~2篇可以介紹完)!
每天整理這些雖然滿累的(每天大概都要花3~8小時左右整理啊),
但也收穫非常多,整理的過程中會學到非常多細節的地方,
很累但是也滿值得的!/images/emoticon/emoticon37.gif/images/emoticon/emoticon37.gif/images/emoticon/emoticon37.gif
.
(題外話:今日戰績 9244 字,活動規定每日字數需 > 300 字)


參考資料


上一篇
【Day 9】 Google ML - Lab 0 - Intro to Qwiklabs - 每次在google雲端上開始lab前都要的事前準備與注意事項
下一篇
【Day 11】 Google ML - Lesson 8 - Cloud Shell 的介紹與 google雲的三代變化, 使用ML與一般演算法的比較與優勢
系列文
Google machine learning 學習筆記20

尚未有邦友留言

立即登入留言