前言
今天的內容一開始的幾個part會跟昨天重複(步驟上的相同),
原因是今天整理完之後,覺得把昨天的步驟整理到今天放在一起會比較像一個完整的lab。
而昨天的lab內容我也會把這次lab 1的內容拿掉,
剩下的內容改成lab 0,代表運行lab前的準備,
這樣也有個好處,之後每個的lab開始前,
都會有跟lab 0差不多的步驟,這樣之後也就不用再贅述這部分了。
所以在今天的lab開始前,還是一樣需要先做lab 0的部分才能開始哦~
(雖然下面步驟也會貼心的再提醒就是了XD)
我們就繼續 How Google does Machine Learning 的第五章節~
這次鐵人賽的30天中,我目前所寫文章的所有課程目錄如下:
- 【Day 1】準備日 – 註冊coursera與訂閱課程
- Course – How Google does Machine Learning
- 【Day 2】 Chapter 1 – 讓你的ML在Google雲端平台運行的五大階段
- 【Day 3】 Chapter 2(上) – 什麼是ML? 為什麼ML最近才紅起來?
- 【Day 4】 Chapter 2(中) – 我們要怎麼樣設計一個ML問題? 與google提供的好用工具
- 【Day 5】 Chapter 2(下) – ML要成功的秘訣與策略
- 【Day 6】 Chapter 3(上) – ML會失敗的最常見十大陷阱
- 【Day 7】 Chapter 3(下) – ML在企業運行的五大階段與注意事項
- 【Day 8】 Chapter 5(上) – 先來初步認識一下google雲端上執行 python notebook (Cloud Datalab) 的環境
- 【Day 9】 Lab 0 – 每次在google雲端上開始lab前都要的事前準備與注意事項
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
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
Step 3 : 稍微等一下VM被建立,按下SSH,(這邊可能需要允許pop-ups)
Step 4 : 我們可以看到SSH的畫面顯示如下。
part 2 : (準備資料) 在 SSH 中 下載必要資料
Step 1 : 在SSH中,我們會需要使用git,如果還沒有安裝,
我們輸入以下指令即可安裝git,
sudo apt-get install git
如果是安裝完成的,我們直接輸入git
,會看到他的使用說明(如何下參數)。
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)
讓我們稍微解析一下這份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。
Step 2 : 這是關於bucket的設定介面,我們一共需要設定的東西如下,
準備好就可以按Create了!
名字
:注意這名字一定要全球唯一!!!我們可以直接使用之前的part 0階段產生的 Projcet ID,我們能確保這是全球唯一的,
除非真的是極度的不幸,不然這名字基本上不太可能被其他人使用過XDstorage class
:可選multi-regional或regional看想不想要跨地區儲存(全球化的應用會需要),這邊我們先選regional
location
:選地區基本上建議跟當初part 1所建立的 Compute Engine(VM) 在同一個位置,會比較快(減少資料取得時間)。
所以這邊我們一樣選 us-central1
Step 3 : 現在我們該來把我們結果的圖片存進去剛剛建的bucket了,
我們回到我們的 SSH 中,我們直接使用GCP的gsutil
工具來儲存資料。
gsutil cp earthquakes.* gs://<這邊填上你bucket的名字>/earthquakes/
稍微解析一下這段:
gsutil
:GCP提供的指令工具
cp
:copy
earthquakes.*
:任何符合earthquakes.*
格式的資料,*
代表任意值
gs://<這邊填上你bucket的名字>/earthquakes/
:目標路徑
part 5 : (顯示結果) 找到剛剛儲存的資料,並顯示結果。
Step 1 : 我們回到我們剛剛的bucket,重新整理後,應該會看到檔案已經被儲存了。
會看到三個檔案earthquakes.htm
, earthquakes.png
, earthquakes.cs
。
這表示這三個檔案已經透過剛剛的指令被複製進我們的bucket了。
Step 2 : 再來我們要將我們在雲端所儲存的東西,製作成一個連結分享出去。
先在左方紅框處的地方打勾,然後再打勾右方紅框處(才會看到顯示Public link)。
※新版的介面UI改了,我們改在 SSH 中執行以下指令,以達到一樣的效果:
gsutil acl ch -u AllUsers:R gs://<這邊填上你bucket的名字>/earthquakes/*
Step 3 : 點一下Public link,就會顯示剛剛結果圖了,我們也可將這結果分享給別人(公開的情況下)。
可以稍微注意網址:
storage.googleapis.com/<我們bucket的名稱>/earthquake/earthquake.htm
這就像是一般我們常見的資料夾結構
到這邊我們就算完成我們這次的lab了,
這次的lab我們主要學習的目標有:
1. Compute Engine (VM) 的租用,並在上面運作程式碼
2. 使用 Cloud Storage 儲存資料
不過在之後的lab中,就不會再使用這個VM了。
這個lab主要的目的是在建立所有GCP上內容的基礎以及知識。
之後自己想做 Side Project 也必須用到這些觀念。
在之後大部分的課程中,我們將改使用 Managed Services。
Managed Services 允許我們直接在上面跑程式,而不需要再自己配置VM、安裝軟體了。
Managed Services 是一種更高階的方式運用 Cloud Services。
本文同步發佈在: 第 11 屆 iT 邦幫忙鐵人賽
【Day 10】 Google ML – Lab 1 – Rent-a-VM to process earthquake data – 在google雲端上分析地震資料與製圖,並儲存在雲端
參考資料
- coursera – How Google does Machine Learning 課程
若圖片有版權問題請告知我,我會將圖撤掉