3
深層学習のための分散キャッシュシステム - Preferred Networks Research & Development
最近こういうブログを書きました
今日はこの話を
Kubernetes 多めで
Slide 4
Slide 4 text
4
背景: PFNの計算基盤・ストレージ
Slide 5
Slide 5 text
5
豊富な計算資源と高度な技術を基盤に複数の事業を創出
Computer Vision(コンピュータビジョン) Data Analytics(データ解析)
Navigation(ナビゲーション)
Visual Inspection(外観検査)
Pose(ポーズ推定)
Scene(シーン解析)
Image Segmentation
Anomaly Detection(異常検知)
Optimization(最適化)
Time series data(時系列データ)
Infrastructure (インフラ技術)
Machine Learning and Deep Learning(機械学習と深層学習)
Manufacturing Transportation Bio & Healthcare
Personal Robot Visual Inspection Entertainment
PFN
Technology
Business
Object Detection(物体検出)
Slide 6
Slide 6 text
6
PFNのオンプレKubernetesクラスタ
Icon pack by Icons8 - https://icons8.com
MN-2b (A30)
42 nodes
(252 GPUs)
A30 (24G)
PCIe x 6
100GbE x 2
RoCEv2
with SR-IOV
MN-2b (A100)
42 nodes
(168 GPUs)
A100 (80G)
SXM4 x 4
100GbE x 2
RoCEv2
with SR-IOV
拠点名: MN-J
MN-2a
128 nodes
(1024 GPUs)
V100 (16 / 32 G)
SXM2 x 8
100GbE x 4
RoCEv2
with SR-IOV
MN-3
48 nodes
(192 MN-Cores)
MN-Core x 4
100GbE x 2
MN-Core
DirectConnect
80 CPU Cores
128 CPU Cores
48 CPU Cores
36 CPU Cores
DDR4 384GB DDR4 384GB DDR4 1024 GB DDR4 512 GB
Slide 7
Slide 7 text
7
PFNのオンプレストレージクラスタ
Icon pack by Icons8 - https://icons8.com
トータル 約 10 PB (論理容量)
File
System
Medium
MN-J ストレージ
NFS
HDD
NVMe
SSD
HDFS Apache Ozone
拡大中!
10
● 高速
○ Node Local NVMe を活用する
○ シンプルなつくりにして性能を追求する
● スケーラブル
○ SPOF なものをつくらない
○ 各バックエンドインスタンスがデータベースを共有しない
● プリエンプションで消えない(= Pod よりも長いライフサイクル)
○ Pod とは独立したストレージサービスとする
どのようなストレージを開発するか?
Slide 11
Slide 11 text
11
分散キャッシュシステムのアーキテクチャ
Envoy Pod
Kubernete
s
Service
Envoy Pod
Envoy Pod
Envoy Pod
Layer 4での負荷分散
(Service with Topology Aware Hints)
Cache Pod
Cache Pod
Cache Pod
Cache Pod
Layer 7での負荷分散
(Envoy Proxy with Consistent Hashing)
User Pod
13
ルーティングの具体例
Network Zone
1 Envoy
Pod
Envoy
Pod
Envoy
Pod
Envoy
Pod
Layer 4での負荷分散
(Service with Topology Aware Hints)
Cache Nodes
Cache
Pod
Cache
Pod
Cache
Pod
Cache
Pod
Layer 7での負荷分散
(Envoy Proxy with Consistent Hashing)
User Pod
User Pod
Cache
A
Cache
C
Network Zone
2
Cache
B
Cache
D
GET /objects/A
GET /objects/A
GET /objects/B
GET /objects/D
Slide 14
Slide 14 text
14
どこに Kubernetes が使われているか?
Envoy Pod
Envoy Pod
Envoy Pod
Envoy Pod
Cache Pod
Cache Pod
Cache Pod
Cache Pod
User Pod
A
User Pod
B
ヘルスチェック
ヘルスチェック
ヘルスチェック
ヘルスチェック
EDS Pod K8s API 経由で 最新の Cache Pod の IP リストを取得
Envoy の LB エンドポイントを更新
Bound Service Account Token を付与
し HTTP リクエスト
SA Token を検証し
接続元の namespace を解決
接続元の namespace で認可を実施
Bound Service Account Token を付与
し HTTP リクエスト
22
分散キャッシュシステムのスケジューリングの例
Spine SW Spine SW
Leaf SW Leaf SW Leaf SW
Leaf SW
Node Node Node Node Node Node Node Node Node Node Node Node
External / Super Spine
Envo
y
Pod
Cach
e
Pod
User
Pod
Leaf-Spine間の
帯域を浪費する
😭😭😭
Envo
y
Pod
Envo
y
Pod
Envo
y
Pod
通信に関わる Pod
通信に関わらない Pod
24
Zone 4
Zone 3
Zone 2
Zone 1
つまり Topology Aware Routing でどう変わるの
か?
Spine SW Spine SW
Leaf SW Leaf SW Leaf SW
Leaf SW
Node Node Node Node Node Node Node Node Node Node Node Node
External / Super Spine
Envo
y
Pod
Cach
e
Pod
User
Pod
Leaf-Spine間の
帯域使用量が減少
😄😄😄
Envo
y
Pod
Envo
y
Pod
Envo
y
Pod
通信に関わる Pod
通信に関わらない Pod
Slide 25
Slide 25 text
25
Envoy EDS の実装
Slide 26
Slide 26 text
26
● Pod として分散キャッシュシステムの Cache Pod をデプロイすると:
○ Pod 再作成 で Pod の IP アドレスが変わる
■ Envoy が どこにトラフィックを流せばいいかわからなくなる😭
● 最新の IPアドレス を Envoy に通知したい!
○ Endpoint Discovery Service (EDS) を使って、gRPC経由で注
入
Envoy と Kubernetes Pod の連携
contour (ingress proxy) が
Envoy に設定を入れるときに使うやつ!
Slide 27
Slide 27 text
27
Cache Pod の再起動・停止に耐えられる
アクセスできなくなった Cache Pod にあるデータは失われるが、キャッシュなので OK !
Envoy Pod
Envoy Pod
Envoy Pod
Envoy Pod
Cache Pod
Cache Pod
Cache Pod
Cache Pod
ヘルスチェック OK
ヘルスチェック
NG
ヘルスチェック OK
ヘルスチェック OK
EDS Pod K8s API 経由で 最新の Cache Pod の IP リストを取得
Envoy の LB エンドポイントを更新
User