SlideShare a Scribd company logo
PFNのオンプレML基盤
の取り組み
Yuichiro Ueno (Cluster Services チーム)
発表者の紹介
● 上野 裕一郎 (Yuichiro Ueno)
○ 2021/04 新卒入社
■ Cluster Services チーム
○ 入社前
■ スパコンで深層学習をする研究
○ 趣味
■ ISUCONとか性能最適化
○ SNS
■ twitter.com/y1r96
2
目次
● オンプレクラスタの概要
○ PFNがオンプレクラスタを選ぶ理由
○ オンプレクラスタ・ストレージクラスタ
○ 基盤に求められる主な要件
● 使いやすい環境
● リソースの効率的かつフェアな利用
● 信頼性・運用省力化
● クラスタに関わる組織
3
オンプレクラスタの概要
4
PFNがオンプレクラスタを選ぶ理由
● Vision: 現実世界を計算可能にする
○ シミュレーションや深層学習は膨大な計算リソースを必要とする
○ 計算力は競争力の源であり,大量の計算機が必要
● 大規模な計算を(息をするように)したい
○ 16 GPUs, 32 GPUs and More*な分散学習を回したい
○ 1 GPUな学習を数百個パラメータを変えて回したい
○ Neural Architecture Searchをしたい
● 計算基盤全てをコントロールしたい
○ ノード内・ノード間通信,I/Oの全ての最適化が高速な学習には必要
● 上から下まで(ハードもソフトも人も)保有することの重要性
○ (調達・設計からアルゴリズムまで)様々な技術バックグラウンドを持つ
メンバーが集結することで新しいものを生み出していきたい
5
(*) [1711.04325] Extremely Large Minibatch SGD: Training ResNet-50 on ImageNet in 15 Minutes
PFNのオンプレクラスタ
6
MN-1 MN-2a
MN-3
WAN
7
PFNのオンプレKubernetesクラスタ
Icon pack by Icons8 - https://icons8.com
データセンタごとにKubernetesクラスタを構成
128 nodes
(1024 GPUs)
MN-1
P100 PCIe x 8
10GbE x 2
InfiniBand FDR
(56 Gbps) x 2
MN-3a
48 nodes
(192 MN-Cores)
MN-Core x 4
100GbE x 2
MN-Core
DirectConnect
MN-2a
128 nodes
(1024 GPUs)
V100 SXM2 x 8
100GbE x 4
RoCEv2
with SR-IOV
WAN
MN-1 MN-J
世界1位!!
NVIDIA GPUなどの最新技術を採用した プライベート・スーパーコンピュータ MN-2 を自社構築し、7月に稼働
Preferred Networksの深層学習用スーパーコンピュータMN-3がスーパーコンピュータ省電力性能ランキングGreen500で世界1位を獲得
PFNのストレージクラスタ
8
トータル約 7.0 PB
(論理容量, 増加中)
File
System
Medium
MN-Js
NFS
HDD
NVMe
SSD
HDFS Apache Ozone
MN-1s
NFS
NVMe
SSD
SATA
SSD
HDFS
HDD
基盤に求められる主な要件
● 多様なリテラシのユーザが使いやすいこと
○ 「入社初日���らクラスタで大規模に実験をして成果を出せる」
● リソースを効率的かつフェアに利用できること
○ 効率的:マルチテナント,スケジューリング,パフォーマンス
○ フェア:各ユーザが利用した量に基づくプリエンプションなど
● 信頼性・運用効率
○ 自動プロビジョニング,健全性の自動診断・保守省力化
9
使いやすい環境
「入社初日からクラスタで大規模に実験をして成果を出せる」
10
多様なリテラシのユーザが使いやすい環境
11
Interactive
Environment
kubectl
build-and-run
CLI tool Private PyPI
Repository
Workflow
Engine
Experiment
Management
Remote
Image Build …
GitHub
Enterprise
NFS HDFS
Object Storage
(Apache Ozone)
Private Image
Registry
エンジニア
研究者
Pull/Push
Through Cache
多様なリテラシのユーザが使いやすい環境
12
● とにかく手軽にWebだけで簡単にGPU, MN-Coreが使える(Jupyter , code-server )
● pre-builtなall-in-one(必要なライブラリ全部入り)なcontainer imageで起動
● Kubernetesをほとんど知らなくてもOK
● 大規模な実験にはあまり向かない
Interactive
Environment
● Manifestを直接書ける人用
○ 内製のArgo Workflow記述DSL(python)有り
kubectl
● 手元でコードを編集して、クラスタで実行したいひと向け
● Kubernetesの知識は少し必要だがマニフェストを書かなくていい
● 専用CLIでimage build → manifest applyまで実行可能(分散学習も対応)
$ pfkube run -p mpijob --gpu 8 -o worker 4 -- mpiexec train.py
● pushなしで手元で編集中のコードがクラスタで再現可能な形で実行可 (git-ghost連携)
● defaultはall-in-one イメージ, 自分でDockerfile書くことも可能
build-and-run
CLI tool
PFNにおける典型的なワークロード
13
(*) 分散深層学習を支える技術:AllReduceアルゴリズム - Preferred Networks Research & Development
(**) [2007.08082] Distributed Reinforcement Learning of Targeted Grasping with Active Vision for Mobile Manipulators
MPIジョブ
例: AllReduce*を伴う分散深層学習
タスク並列ジョブ
例: Parameter Search
ヘテロジニアスなジョブ
例: 環境とモデルが通信する強化学習**
環境 (シミュレータ)
学習器 (MLP)
Task
Queue
Icon pack by Icons8 - https://icons8.com
ワークフロー
例: Neural Architecture Search
インタラクティブ利用
リソースの効率的かつフェアな利用
「スケジューラで工���しつつプリエンプションも使っていく」
14
リソースを効率的に利用できること
● マルチテナントによるプロジェクト間でのリソース共有
● 高度なスケジューリング(custom scheduler plugins)
○ 優先度
■ CPUジョブよりもGPUジョブを優先したスケジュール
○ Gang Scheduling (a.k.a Co-Scheduling)
■ Pod全てが同時にスケジュールされるか,全くされないか
■ Gang Podを”近く”に配置するUnique Zone制約もサポート
○ 様々なデバイスのサポート
■ GPU, NIC, MN-Core, Persistent Memory
● パフォーマンス
○ multi 100G NIC with RoCEv2 & SR-IOV
■ GPU間通信 for 分散学習 & ストレージ系の通信を混載する
○ 継続的な通信性能のリグレッションテスト
15
リソースをフェアに利用できること
● 優先度(PriorityClass)制御
○ high > low > low-cpu > lowest
○ high
■ lowでクラスタが混雑していてもプリエンプションして走る
■ 同時実行数はプロジェクト単位で制限されている
○ それ以外の優先度クラスは誰でも使い放題
■ オンプレクラスタが遊ぶのはもったいないのでガンガン使う
● 各ユーザが利用した量に基づくスケジューリング・プリエンプション
○ ノード時間積(利用リソース量 * 利用時間)を考慮する
■ よく使っているユーザはスケジューリングされづらい
■ よく使っているユーザはプリエンプションされやすい
16
信頼性・運用省力化
「自動化を進めて障害に立ち向かう」
17
サーバプロビジョニング・GitOpsなど
18
Cluster API MAAS Provider
(in-house)
provisioning nodes with ansible
Flux
Flux
GitHub
Enterprise
production
eval
sync manifests
apply
apply
マニフェストは
モノレポ管理
v1.23 準備中
(1 Minor Version遅れで運用)
監視/Alerting
19
GitHub
Enterprise
remote
write
監視
alertをissue化
(long-term storage)
(Prometheus)
pfnet-research/alertmanager-to-github
運用省力化
20
Node Problem
Detector
Server-Checker
(Custom Plugin)
status.conditions:
- type: DStateProcess
status: "True"
reason: DStateProcessIsDetected
message: python(34688) in ml-pod@user-ns is D-state
- type: GPUPendingPage
status: "True"
reason: GPUHasPendingPage
message: GPU 0 has pending page: SingleBitErrors=3, DoubleBitErrors=1
Reconcile
Conditions
pfnet-research/node-operation-controller
NodeRemeditation
Template
NodeOperation 生成
Icons made by Icon Monk from www.flaticon.com is licensed by CC 3.0 BY
復旧処理(Remediation)
が既知なConditionに
対して作成
復旧処理
復旧処理時の
Taint/Evict等も自動
21
クラスタに関わる組織
クラスタに関わる組織
MN-Cor
e
Cluster
Services
Cluster
Planning
MN-Core
企画&設計
ASIC設計
コンパイラ・ランタイム
計算基盤サービス化
計算基盤
22
Project A
利用・フィードバック
ファシリテーション
Project B
Project Z
…
利用・フィードバック
ファシリテーション
利用・フィードバック
ファシリテーション
連
携
連
携
連
携
ありがとうございました!
● オンプレクラスタの概要
● 使いやすい環境
○ 「入社初日からクラスタで大規模に実験をして成果を出せる」
● リソースの効率的かつフェアな利用
○ 「スケジューラで工夫しつつプリエンプションも使っていく」
● 信頼性・運用省力化
○ 「自動化を進めて障害に立ち向かう」
● クラスタに関わる組織
23
We're Hiring!
機械学習プラットフォームエンジニア (Infrastructure)
● こんな環境にワクワクする方を募集しています!
○ 日進月歩で進化している機械学習にフォーカスした計算技術を低レイヤーから高レイヤー
までトータルに吸収できる
○ 大規模機械学習クラスタの開発・運用が経験できる
○ Kubernetesを始めとするOSSコミュニティでも活躍できるチャンスがある
○ HPCとCloud Nativeの境界領域という今後ますます重要になる分野の経験ができる
○ 多様な要求・ユーザーリテラシをサポートするプラットフォーム設計・実装を経験できる
24
学生さん向け
夏季国内インターン
も開催予定です!
(4/1 公開予定)
We're Hiring!
● カジュアル面談希望の連絡お待ちしています(DMでもメンションでもお気軽に)
○ 大村: @everpeace
● 資料
○ PFNのML/DL基盤を支えるKubernetesにおける自動化 (DevOpsDays Tokyo 2021)
○ How to Schedule Machine Learning Workloads Nicely In Kubernetes (CNDT 2020)
○ Kubernetesによる機械学習基盤への挑戦 (JAPANCONTAINERDAYS V18.12)
○ Preferred Networksの機械学習クラスタを支える技術 (JulyTech Festa 2018 基調講演)
○ (採用ページにはこの他にも載せてあります )
25

More Related Content

PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜