iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 8
0
Google Developers Machine Learning

Google machine learning 學習筆記系列 第 8

【Day 8】 Google ML - Lesson 7 - 先來初步認識一下google雲端上執行 python notebook (Cloud Datalab) 的環境

前言

今天我們先進入 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

1. Module Introduction

課程地圖

  • Python notebooks in the cloud
    • Module Introduction

這章基本的用文字介紹了一下雲端的環境,
我們會用python notebook做機器學習的開發,
而notebook的服務在google雲端上。

Cloud Datalab基本上是本章節使用的開發環境,
而此服務在VM上運行,包含python notebook,
我們同時也會教學Compute Engine的原理Cloud Storage的知識
既然是VM就必須提調VM的兩個特性:

  1. 可以實際控制與更改notebook的機器內容,且無須重寫

例如:添加GPU或增加更多memory

  1. VM是短暫的,如果想保存內容須保存在VM外

而這點最方便的方法就是使用Cloud Storage。
我們將notebook的內容保存在Cloud Storage中,
同時還能達到版本控制的效果。

而這個章節的學習目標,我們可以參考如下:

Module Learning Objectives(這個module的學習目標)

  • Carry out data science tasks in notebooks

練習使用notebooks完成資料科學的任務

  • Rehost notebooks on the cloud

在雲上使用notebooks,並更改硬體規格

  • Execute ad-hoc queries at scale

我們將將Cloud Datalab與BigQuery一起使用,BigQuery是雲上的數據分析服務,可以讓超越傳統數據庫的執行速度與規模進行queries的查詢

  • Invoke pre-trained ML models from Datalab

能使用一些pre-trained ML models(前面的章節有介紹到),並在Cloud Datalab中運行。

https://ithelp.ithome.com.tw/upload/images/20190909/20120424IZmz7tT6sZ.png


2. Cloud Datalab

課程地圖

  • Python notebooks in the cloud
    • Cloud Datalab
      • Cloud Datalab
      • Demo: Cloud Datalab
      • Development process

這章稍微介紹了一下Datalab的環境,以jupyter作為基礎的open source平台。
下面為Datalab的介面展示:

https://ithelp.ithome.com.tw/upload/images/20190909/20120424VHrZ0Uq5Lp.png

可以看到主要有三個部分:code, output, markup sections彼此交錯
也因為這樣的交錯才能使notebook如此實用,

code:

在此打你的python code
執行code的方式: 按 shift+enter 或 按上方的 Run botton

output:

注意output可以為圖形,不像command line一樣。

markup:

可以寫一些markup(markdown語法),可以解釋你這個部分在做什麼。

最後是綠色部分:

有可以將notebook匯出的按鈕,可以將此notebook下載下來。
可以commit code至Google Cloud Platform至code repository的按鈕。
Clear all: 清除所有output
Run all Cells: 執行所有Cells

所以整個Datalab的使用流程大概可以表示成下圖:
https://ithelp.ithome.com.tw/upload/images/20190909/20120424vyVPouZKR2.png

另外要特別強調的是,Datalab的一大特色是可以線上協同合作
傳統的notebook要線上合作有個基本的問題,誰當host?
一但host只要關機,任何人都無法繼續工作。
而Datalab解決了這個問題,而我們只要給一個URL就可以了。

另外一種Share的方式可以利用版本控制系統,例如Git,
而且只要我們想改動硬體的規格,任何人都可以直接改好後,
重新啟動VM,就直接以新的硬體規格來執行程式。

簡單來說,Datalab架於雲端的VM上,任何人只要連線即可開始工作。
而只要工作結束了,隨時也能將此VM刪除。

https://ithelp.ithome.com.tw/upload/images/20190909/20120424vIAO0YtmEy.png


3. Demo of rehosting Cloud Datalab

課程地圖

  • Python notebooks in the cloud
    • Cloud Datalab
      • Demo of rehosting Cloud Datalab

這個章節主要來介紹如何在Datalab中更換VM的硬體規格。

Step1. 先將想更改規格的VM打勾,上方按下暫停VM
https://ithelp.ithome.com.tw/upload/images/20190909/20120424LY0080InDP.png

Step2. 點選Edit,在方框處更改想要的硬體規格,記得在下方按"Save"
https://ithelp.ithome.com.tw/upload/images/20190909/20120424K2AXFTlKsf.png

Step3. 點選要重啟的VM,按上方Start,確認重新Start
https://ithelp.ithome.com.tw/upload/images/20190909/20120424DARMJZEZo9.png

小提示:在未來的lab中,我們只需要用到"n1-standard-1 VM"(basic plain vanilla virtual machine)的硬體規格,就已經非常足夠執行我們所要的程式。


4. Working with managed services

課程地圖

  • Python notebooks in the cloud
    • Working with managed services

這個章節會介紹透過雲端執行ML時的大致流程。

以讀取CSV file作舉例,如果是一般的處理方式,
首先我們將CSV file可以透過Pandas and Apache Beam進行資料前處理,
再丟入至Tensorflow進行訓練,透過訓練使其不斷的進步。

如果同樣的例子透過GCP的方式進行處理,
首先用Google Cloud Storage儲存資料,用Cloud Dataflow進行資料前處理,
再用Cloud Machine Learning進行訓練,透過Cloud ML Engine進行參數最佳化。
https://ithelp.ithome.com.tw/upload/images/20190909/20120424TZBQ9MFCpp.png

使用GCP就能產生與其他GCP產品一樣的效果,
而且數千台機器同時探索並分析數據,
而且就算已經習慣使用如Pandas, Seaborn 或 Plotly之類的工具,
也能夠直接在GCP使用,透過API直接串連起來。

https://ithelp.ithome.com.tw/upload/images/20190909/20120424sR4STWtlSf.png

Compute Engine
先去Cloud Shell並輸入"datalab create",並設定一些參數,
例如compute zone, machine type,這些都屬於Compute Engine

Compute Engine是一種向雲端租借的機器(VM),所以也代表不用永久擁有。
當VM消失時,在此機器上的工作也會消失,
因此我們還會在下一個章節中介紹Cloud Storage的知識,
Cloud Storage就是透過雲端來幫助我們儲存這些資料的地方,避免資料遺失。

https://ithelp.ithome.com.tw/upload/images/20190909/20120424FloHSlRu1m.png


5. Computation and storage

課程地圖

  • Python notebooks in the cloud
    • Computation and storage

這個章節會介紹Compute Engine的原理Cloud Storage的知識
了解Compute Engine可以清楚我們是怎麼在雲端運算的,
了解Cloud Storage則可以清楚資料是怎麼儲存的。

Compute Engine基本上可以想像成是分散在世界各地的CPU,
而Cloud Storage則是分散在世界各地的儲存裝置(硬碟)。

Compute Engine
Datalab雖然是一個Compute Engine所執行的,
但我們可以客製化我們的Compute Engine,

例如:幾核心電腦、有多少memory、硬碟有多少容量、作業系統
而這些設定皆可以修改,不用太擔心一開始的設定值。
VM上的disk速度非常快,但當VM消失時,disk也會消失。

Cloud Storage
而Cloud Storage是持久的,也就是說放在Cloud Storage的資料會被複製存儲在多個位置。
我們可以透過任何電腦取得這些資料,並直接讀取內容。
而Google Center的網路以petabit bisectional bandwidth速度在通信,
這也代表著十萬台機器可以以每秒10 gigabits的速度在相互通信。

我們來談一下資料在雲上的形式,
一個典型的Cloud Storage URL可能看起來像gs:acme-sales/data/sales003.csv
我們稱這樣的資料存儲為"bucket",bucket的名稱是全球唯一的,
就像是domain name或internet URL一樣,
基本上除非真的非常不幸,否則bucket的名稱很難已經被使用。

Compute EngineCloud Storage的連結方式:
gs URL 就像是一個資料結結構一樣,一個gs URL對應一個在Cloud Storage的物件
我們可以使用gsutil來取用他,這是一個給command line用的工具,
我們可以透過Google Cloud SDK下載到他,
雲端上的Compute Engine已經內建好gsutil了。

如果是想在自己的電腦使用,可以去下載Google Cloud SDK,裡面包含gsutil的功能。
Gsutil 也使用大家所熟悉的 Unix command line的表示方式:

像是 MB 與 RB 代表著"建立bucket"與"移除bucket" (這個真的滿有熟悉感的/images/emoticon/emoticon37.gif)
或 CP 代表著"copy"

如果不使用command line,也可以使用GCP console 或 programming API, REST API
我們示範一個複製大量檔案作為例子,我們將sales*.csv複製到一個特別的Cloud Storage位置
(註:我們前面提到Cloud Storage buckets是耐久的,也就表示這資料會被重複儲存至多個位置。)

https://ithelp.ithome.com.tw/upload/images/20190909/20120424unLg2mFDis.png

不過這裡要提醒的是,雖然資料被儲存在多個位置,但不代表不用在意"網路延遲問題",
可以的話還是盡量把資料儲存在計算的位置附近

另外一個情況是可能有時會有區域的伺服器故障,
我們應該要分散apps與data至多個zones以保護這樣的情況,
一個zone故障了,可以即時調用附近的zone來接續服務。
zone是分散在一個regions的不同位置,被命名為region name-a zone, letter

而當我們將做一個全球可用的app,
我們就可以考慮分散apps與data在不同的regions,來為全球的客戶提供服務。

https://ithelp.ithome.com.tw/upload/images/20190909/20120424sN1Zkl8d55.png


參考資料


上一篇
【Day 7】 Google ML - Lesson 6 - How Google does ML (下) - 讓ML在企業運行的五大階段與注意事項
下一篇
【Day 9】 Google ML - Lab 0 - Intro to Qwiklabs - 每次在google雲端上開始lab前都要的事前準備與注意事項
系列文
Google machine learning 學習筆記30

尚未有邦友留言

立即登入留言