使用clipper打造低延遲的預測系統
speaker : 陳威宇 weiyu chen
NCHC TW
微服務架構
優點:
* 每個服務簡單
* 每個服務可獨立開發
* 架構可鬆散耦合
* 可透過不同程式語言實作
缺點:
* 維運成本高
* DevOps !!
* 程式碼重複
* 分散式系統的複雜
* 測試代價高
定義 : https://zh.wikipedia.org/wiki/%E5%BE%AE%E6%9C%8D%E5%8B%99
優缺點:https://kknews.cc/zh-tw/tech/oglv55m.html
架構圖:https://docs.microsoft.com/en-us/azure/architecture/guide/architecture-styles/microservices
微服務 (Microservices) 是一種軟體架構風格,它是以專注於單一責任與功能的小型功能區段 (Small Building Blocks) 為基礎,利用模組化的方式組合出複雜的大型應用程式,各功能區段使用與語言無關 (Language-Independent/Language agnostic) 的 API 集相互通訊。
心中有個夢:擁抱微服務的優點,降低微服務的門檻
優點:
* 每個服務簡單
* 每個服務可獨立開發
* 架構可鬆散耦合
* 可透過不同程式語言實作
缺點:
* 維運成本高
* DevOps !!
* 程式碼重複
* 分散式系統的複雜
* 測試代價高
Clipper : A Low-Latency Online Prediction Serving System
Agenda
陳威宇 WeiYu Chen
國家高速網路與計算中心 副研究員
勞工 / 學生 / 爸爸 /
自由軟體 / 系統維護
waue0920 @ gmail.com
Clipper : A Low-Latency Online Prediction Serving System
Clipper : 兼顧低延遲與高效能且高彈性的微服務架構
• 簡化模型部署
• // 若善用Caching、Batching機制能更增加效率
• // 通過智慧選擇和合併模型來改善預測的準確率
• Clipper支援以下幾種模型:
• 純Python函數 / PyShark / PyTorch / Tensorflow / MXnet
Offline Scoring
Online Scoring
Prediction-Serving for interactive applications
Timescale: ~10s of milliseconds
+
作者: RISE Lab
https://rise.cs.berkeley.edu/
誰會喜歡 Clipper
Product team
Data Scientists
Infra-Team
User
Clipper Decouples Applications and Models
Clipper Software Architecture
Clipper Architecture
Clipper w/ Spark Integration Mode
benchmark 1 :clipper 與原生 tensorFlow 比較
Benchmark 2 : 使用Batching 技術
Demo
Server (MicroService)
TWCC VM
Client
現場筆電
from: 愛情釀的酒 - 林志炫版
前輩
==
Never LiveDemo
==============
資料來源:資料市集
運算平台:TWCC
1.5 %
10G
0
400 KB/s
10 %
13G
老司機分享篇
1. 啟動 clipper cluster 並聯上 clipper manager
clipper_conn.start_clipper()
同時會啟動五個 docker
2 載入model於container, 註冊app, 連結
)
)
)
2 載入model於container, 註冊app, 連結
in one function
clipper_conn=clipper_conn,
name="image-example",
input_type="bytes",
func=image_size,
pkgs_to_install=['pillow']
)
)
)
)
3. 分手的藝術
撤銷註冊 與 結束服務大不同
撤銷app & model
結束 clipper cluster
4. get more information to debug
5. clipper 中的單元測試
MR Unit Test
1. Setup
2. Exercise
3. Verify
4. Tear down
6. 建立 model 能運行的container
import clipper_admin.deployers.keras
clipper_admin.deployers.keras.deploy_keras_model(
clipper_conn,
…
func=predict,
batch_size=1,
base_image="face_detect_cv2",
pkgs_to_install=['pillow']
)
常見問題 15分鐘-> out
若遇到pip 版本太舊又無法移除的錯誤導致無法安裝 clipper
安裝過程中遇到某個python套件錯誤
(A) 移除並重新安裝:
(ex: PyYAML)
(B) 指定版本
(ex: cloudpickle )
# mv /opt/anaconda3/lib/python3.6/site-packages/yaml ./
# mv /opt/anaconda3/lib/python3.6/site-packages/PyYAML-3.12-py3.6.egg-info ./
# pip install PyYAML
# pip install -U cloudpickle==0.5.3
clipper Manager run 不起來
# yum install docker kubelet kubeadm kubectl kubernetes-cni
# systemctl enable docker
# systemctl start docker
# systemctl enable kubelet
# systemctl start kubelet
clipper Manager 啟動錯誤,已經存在
from clipper_admin import ClipperException
try:
clipper_conn.start_clipper()
except ClipperException as e:
clipper_conn.connect()
except Exception as e:
print(e)
container 無法載入 hub.docker 的 registry
python_deployer.deploy_python_closure(clipper_conn,
name="waue-sum-model",
version=2,
input_type="doubles",
func=feature_sum,
registry="waue0920"
)