如何打造高效的機器學習平台
Linker Networks
Evan Lin
關於我
● Linker Networks 雲端架構師
● Golang.tw 共同協辦人
● 碼天狗策展者
兩年前..
摘要
● 何謂機器學習平台
● 為何你應該打造自己的機器學習平台
● 打造機器學習平台經驗談
● 如何打造高效的機器學習平台
● 結論
人工智慧與機器學習的應用
大廠的人工智慧 API
機器學習流程 (機器學習平台)
From “Introduction to Microsoft Azure” by David Chappell
拿人臉辨識為例子....
透過加上特徵點
Example: Face detection - annotation
透過計算產生機器學習模型
透過圖片輸入可以預測你需要的資訊
Azure Face API: https://azure.microsoft.com/zh-tw/services/cognitive-services/face/
為何你需要建置自己的機器學習平台
開源的深度學習套件
開源的深度學習套件: 大數據才是重點
誰有大數據
那.. 我們來自己架機器開發機器學習平台
製作機器學習平台常遇到的問題
● 不易安裝的環境
● 不易同步的訓練資料
● 無法最佳化的訓練排程
● 大量的資料前處理
買數台 Nvidia GTX 1080 Ti
安裝 CUDA8 與 cuDNN v7 與 Tensorflow GPU
Install Nvidia Driver
Install CUDA8 binary
Build CuDNN v7 from source
code
Install Tensorflow GPU
Refer: https://technews.tw/2017/11/07/ai-server-guidance-2-tensorflow/
安裝你常用的工具( console or jupyter notebook)
好不容易裝好
資料科學家跑來跟你說
PyTorch 似乎很好用,可以幫我重裝嗎?
CUDA9 似乎有變快,可以幫我重裝嗎?
混亂的訓練環境
Python2 Python3
混亂的訓練環境 - Docker 似乎可以解決問題
Python2 Python3
每個使用者還是有自己喜歡的環境
numpy
keras
jupyter
Darkflow
CV
numpy
甚至是兩種作業環境
不易同步的訓練資料
龐大的來源訓練資料
每個人的資料處理方式不同
如何共享處理過的資料夾
Refer: Line貼圖 辦公室常用英語 https://store.line.me/stickershop/product/1429804/zh-Hant
無法最佳化的訓練排程
t2:訓練t2:資料清洗
t1:訓練t1:資料清洗 t.4 資料清
洗
t3:訓練t3:資料清洗
下班 上班
大量資料前處理
人臉辨識標記
經過了不斷的點擊...
Dlib 需要至少 68 個特徵點
Kubernetes 讓建制機器學習平台更容易
● 資源抽象化 (Device Plugin)
● 工作排程
製作機器學習平台常遇到的問題
● 不易安裝的環境
● 不易同步的訓練資料
● 無法最佳化的訓練排程
● 大量的資料前處理
如何解決: 不易安裝的環境
提供給使用者客製化的方式
客製化環境準備流程
如何解決: 不易同步的訓練資料
節點間的資料如何共通
透過 Persistent Volume
如何解決: 無法最佳化的訓練排程
Kubernetes 提供良好的排程功能,但是
透過自製工作管理器提供高彈性選擇
具有客製化 pipeline 處理的工作管理員
具有客製化 pipeline 處理的工作管理員
(model convertor)
如何解決: 大量的資料前處理
資料前處理需要大量人工輸入...
但是.. 其實有更容易的方式
Realtime learning and Inference
總結
● 機器學習平台是下個世代的 KillerApp
● 機器學習平台還有些困難點值得討論
● 透過 Kubernetes 有效的整合資源,提升整體效能

iThome Modern Web 2018: 如何打造高效的機器學習平台