投影片封面(圖片來源: 課程講義)
最後一堂課來談談 Serverless 在 AI/ML 中的應用。
回顧
老樣子:
人工智慧
人工智慧的簡單定義為:『用於模擬、延伸和擴展人類智慧的理論、方法、技術與應用的一門學科』。常見的應用包含:機器學習、自然語言理解、圖像識別與對話閒聊。
在人工智慧中最重要的東西莫過於資料,資料可以用來訓練出一個模型作為應用,爾後當接到新的請求時,就會去調用這個模型進行預測,進而得到結果。
資料流程
機器學習架構(圖片來源: 課程講義)
一個典型的資料流程如下:
當從不同的來源收集足夠資料後,會對原始資料進行清理、整理、提取、隱私資料遮蔽…等,各種應用所需的清洗與前處理。處理過得資料會作為我們的訓練集,而這個訓練集質量會直接影響訓練結果。
當得到訓練集後,會根據資料類型與應用目的去挑選語言框架與訓練模型,根據挑選模型再進行參數挑選、優化,以建立一個精確的 AI 模型。
當 AI 模型訓練好後,就可以部署進入實用/測試。在此階段若新的請求時,就會使用此模型進行預測,並回傳預測結果,而所接到的請求,也可以做為新的資料加入訓練集,等待下一輪的訓練。
Serverless 與機器學習
優點
-
服務隔離
最後培育出來的接口可以使用 RESTful 去公開。對於終端使用者來說,他享受的供應端所提供的服務,毋需關心後端模型架構。且相關應用的升級,也不會影響到終端使用者的使用。 -
零管理
數據科學家或其他試圖架設 AI 模型的開發者,他們無須去關心底層的基礎設施。 -
無需關心擴展
模型部署在雲端,以服務形式提供 inference,而根據負載自動擴展。 -
不執行不付費
只有當模型被調用,才需要付費。其他時候因為沒有被部署,所以不佔用資源,也因此無須付費。 -
模型便於重複使用
事件觸發模型調用,不同事件可重複調用模型。 -
以模型為單位擴展
每個模型作為獨立立功能,按需調用、更新、刪除和擴展,不不影響其他模型。模型隔離性。
在資料準備階段的應用
Serverless在資料準備階段的應用(圖片來源: 課程講義)
前面提過的資料清理、整理、提取、隱私資料遮蔽…等,各種清洗與前處理都可以使用 Serverless 來實做。當資料進入資料庫時或是定期去調用 Serverless 。
在模型訓練階段的應用
Serverless在模型訓練階段的應用(圖片來源: 課程講義)
而在模型訓練階段,可以用在當有新資料產生時,Serverless 去觸發重新訓練;或是當有新的模型被訓練出來時,可以用 Serverless 去重新啟動 inference,載入新的模型。
不過注意的是 FaaS 是短時運行的,所以不應該整個訓練過程放在 action 裡面,而是應該讓你的 action 去啟動在另外一台機器上的訓練流程。
在預測階段的應用
Serverless在預測階段的應用(圖片來源: 課程講義)
在使用階段最經典的用法就是,要進行預測時呼叫 Serverless 來部署模型並給出預測結果。
除此之外,呼叫請求進來時,也可以使用 FaaS 去進行資料的前處理,如斷詞、影像大小處理…等。
範例-識別模型
識別模型(圖片來源: 課程講義)
這邊案例是訓練機器人來辨識圖片:
- 開發者將影像資料上傳到儲存服務中。
- 開發者製作一個 docker image,這個 image 中包含了 TensorFlow 等訓練所需執行環境。將這個環境在 kubernetes 上執行訓練。
- 訓練時會從儲存服務取得訓練資料。
- 當訓練完成後再將模型儲存回儲存服務中。
- 開發者另外需製作一個 docker image,這個 image 僅須包含執行模型所需的環境即可。並在製作一個 action 以方便調用者進行調用。
- 調用者會透過 trigger 或是直接調用等方法,去調用這個 action。
- 當使用者調用這個 action 後,就會從儲存服務中取回模型,建立所需環境後,就執行這個動作。
- 最後再將執行結果回傳給調用者。
課程是舉了兩個例子,另一個我就跳過了~XD
無服務器機器學習 Serverless Machine Learning
在討論機器學習與 Serverless 時,還會看到另外一個詞叫做 Serverless Machine Learning。
它指的是開發人員在第三方雲端平台上訓練與部署模型,並進行模型版本管理…等,而不用考慮基礎設施。
這部分的話,則偏向於之前提過的 BaaS 範疇。
FaaS 用於機器學習的挑戰
-
程式碼有大小有限制
根據 Openwhisk System limits 預設 action 大小是 48MB,但這個可以在自己架設時修改。如果真的超過設定大小也可透過自訂 docker 的方式來解決。 -
輸入輸出有限制
根據 Openwhisk System limits有傳入參數 1MB、寫出 log 10 MB 限制。可以藉第三方存儲服務來處理。 -
執行時間有限制
預設最長 5 分鐘,一樣可以在自己架設時修改。
以上的一些限制條件導致機器學習的訓練並不適合在 FaaS 上執行,上億筆的訓練資料、動不動就訓練個一天甚至一周。
雖然有些限制條件在自己架設時可以放寬,但即便放寬了,個人還是覺得跟一開始短時運行的定義起衝突。
實作
Serverless 函數調⽤ Waston API 實現圖⽚識別
快速記錄一下,講師所用到的指令,方便之後查詢。
流程圖(圖片來源: 課程講義)
Package
1 |
|
Trigger
1 |
|
Action
1 |
|
Rule
1 |
|
其他連結
- Serverless 應用案例賞析筆記目錄
- 課程內容:影片(IBM片源 、youku教育片源)/ 講義 / Blog
參考資料
- 協同撰寫 (2019-02-14)。OpenWhisk system details 。檢自 openwhisk - Github (2020-04-15)。