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