Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
PFN の機械学習向け Kubernetes クラスタ におけるノード障害の運用自動化・省力化
Search
Preferred Networks
PRO
November 06, 2023
Technology
1
660
PFN の機械学習向け Kubernetes クラスタ におけるノード障害の運用自動化・省力化
Preferred Networks
PRO
November 06, 2023
Tweet
Share
More Decks by Preferred Networks
See All by Preferred Networks
PLaMo-100B-Instruct 国産大規模言語モデル構築における事後学習の取り組み
pfn
PRO
0
17
新卒エンジニアが DEEP DIVE するMN-Core™
pfn
PRO
0
46
LinuxとMN-Coreコンパイラランタイムにおけるプログラムの起動プロセスとその比較
pfn
PRO
1
610
KubeCon NA 2024 Recap: Managing and Distributing AI Models Using OCI Standards and Harbor / Kubernetes Meetup Tokyo #68
pfn
PRO
0
240
実践/先取り「入門 Kubernetes Validating/Mutating Admission Policy」 / CloudNative Days Winter 2024
pfn
PRO
1
190
次のコンテナセキュリティの時代 - User Namespace With a Pod / CloudNative Days Winter 2024
pfn
PRO
6
640
LLMを「速く」「安く」 動かすには / CloudNative Days Winter 2024
pfn
PRO
6
1.5k
Distributed Cache Empowers AI/ML Workloads on Kubernetes Cluster / KubeCon + CloudNativeCon North America 2024
pfn
PRO
1
94
PFN Company Deck
pfn
PRO
2
910
Other Decks in Technology
See All in Technology
私なりのAIのご紹介 [2024年版]
qt_luigi
1
120
レンジャーシステムズ | 会社紹介(採用ピッチ)
rssytems
0
150
10個のフィルタをAXI4-Streamでつなげてみた
marsee101
0
160
オプトインカメラ:UWB測位を応用したオプトイン型のカメラ計測
matthewlujp
0
170
AWS re:Invent 2024で発表された コードを書く開発者向け機能について
maruto
0
190
WACATE2024冬セッション資料(ユーザビリティ)
scarletplover
0
190
20241220_S3 tablesの使い方を検証してみた
handy
3
360
Qiita埋め込み用スライド
naoki_0531
0
860
re:Invent 2024 Innovation Talks(NET201)で語られた大切なこと
shotashiratori
0
300
NilAway による静的解析で「10 億ドル」を節約する #kyotogo / Kyoto Go 56th
ytaka23
3
370
[Ruby] Develop a Morse Code Learning Gem & Beep from Strings
oguressive
1
150
複雑性の高いオブジェクト編集に向き合う: プラガブルなReactフォーム設計
righttouch
PRO
0
110
Featured
See All Featured
Designing Dashboards & Data Visualisations in Web Apps
destraynor
229
52k
Navigating Team Friction
lara
183
15k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
45
2.2k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
247
1.3M
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
The World Runs on Bad Software
bkeepers
PRO
65
11k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
Facilitating Awesome Meetings
lara
50
6.1k
Transcript
PFN の機械学習向け Kubernetes クラスタ におけるノード障害の運用自動化・省力化 Private Cloud Meetup #5 (2023/11/2)
Sho Shimizu, Preferred Networks, Inc. @oshothebig
2 自己紹介 : 清水 翔 (Sho Shimizu / @oshothebig) •
2010 ~ 2019 株式会社富士通研究所 ◦ Software Defined Networking (SDN) • 2019 ~ 現在 株式会社Preferred Networks ◦ Cluster Servicesチーム • オンプレのKubernetesクラスタの開発 & 運用 ◦ コンテナネットワーキング ▪ 内製CNI pluginの開発 ▪ CNI pluginの構成変更
3 • PFNのクラスタ構成 • クラスタで発生するノード障害 • ノード障害への対応方法 Agenda
4 3つのオンプレミス計算機クラスタ 2022~ MN-2a MN-3 MN-2b 2020~ 2019~
5 各クラスタの構成 36 cores 384 GB V100 x 8 100
GbE x 4 128 nodes MN-2a 48 cores 384 GB MN-Core x 4 100 GbE x 4 48 nodes MN-3 128 cores 1,024 GB A100 x 4 100 GbE x 2 42 nodes MN-2b 80 cores 512 GB A30 x 6 100 GbE x 2 42 nodes Icons by https://icons8.com ユーザからは単一のKubernetesクラスタとして利用可能 合計 260 nodes, 1,444 GPU + 192 MN-Core
6 クラスタは常にどこかが壊れている 分散システムは、完全な意味で「アップ(up)」になることはない。* • 障害の発生しうる要素 ◦ ハードウェア ▪ CPU, GPU,
Memory, Disk, Network (NIC, Cable, ...), FAN, 電源,… ◦ ソフトウェア ▪ OS, ドライバ, システムプロセス (k8s 含む), Pod (ユーザーのワー クロード) , … • 各要素で障害となりうる故障・不具合の種類も複数存在 • クラスタの規模に比例して、どこかが壊れているのが定常的な状態 * Ops: It's everyone's job now | Opensource.com
様々なノード障害
GPUの障害 • GPUメモリのエラー ◦ Single/Double Bit ECC Error → Page
retirement • 認識しない ◦ Kubernetesのリソースとして ◦ PCIeデバイスとして • 認識はしているがビジー状態で利用不可 ◦ ワークロードを実行するまで分からない
ネットワークの障害 • リンクダウン/フラップ • インターフェイスを認識しない • ソフトウェア要因 ◦ ドライバ •
ハードウェア要因 ◦ AOC (Active Optical Cable) ◦ 光トランシーバ ◦ NIC ◦ PCI Express
その他の障害 • Terminatingのまま削除できないpod ◦ プロセスがD state (Uninterruptible sleep) のまま返ってこない ◦
リソースが解放されたと見なされず無駄が生じる ◦ SIGKILLが効かずノードを再起動するしかない • PCI Expressのリンク速度の低下 ◦ ノードの再起動が必要
運用自動化・省力化の取り組み
12 監視と自動修復 Servers icon by https://icons8.com 自己診断 修復処理 監視 Issue
作成 通知 調査・修復処理 監視 システム node-operation-controller alertmanager-to-github
Node Conditionを活用したノード障害検知 • Node Condition ◦ ノードの状態を表すKubernetes上の概念 ◦ デフォルトのタイプに加えて、独自のタイプを定義可能 →
既知のノード障害に対して独自のNode Conditionを定義 • 独自のNode Conditionの例 ◦ GPUIsLost ◦ GPUPendingPage ◦ DStateProcess ◦ PCIeLinkDegraded
障害検知 → Node Conditionの設定方法 • Node Problem Detector (OSS) https://github.com/kubernetes/node-problem-detector
◦ 問題を見つけるとNode Conditionを設定出来る ◦ カスタムプラグインを自社開発 • kube-nvidia-active-monitor (自社開発) ◦ ワークロードを実行してはじめて分かるGPUの問題を検知 ◦ GPUを使う簡単なワークロードを定期実行 ◦ 問題を見つけると GPURuntimeError を設定
自動復旧: node-operation-controller https://github.com/pfnet-research/node-operation-controller • 設定されたNode Conditionに対して任意のオペレーションを実行する Kubernetesコントローラ • 復旧処理が既知である場合の自動復旧を担当 •
復旧処理 ◦ ノードの再起動 ◦ NFSの再マウント
16 監視と自動修復 Servers icon by https://icons8.com 自己診断 修復処理 監視 Issue
作成 通知 調査・修復処理 監視 システム node-operation-controller alertmanager-to-github
マニュアル対応: alertmanager-to-github https://github.com/pfnet-research/alertmanager-to-github • Alertmanager からの Webhook を受け取って GitHub イシューを作成
◦ 新しいアラートから GitHub イシューを作成 ◦ アラートが resolved ステータスになるとイシューをクローズ ◦ アラートが再度 firing ステータスになるとイシューをリオープン • Node Condition も Prometheus でメトリクスとして収集 ◦ アラートとして一元化して扱うことができる • GitHub イシューの assignee は自動で設定 • GitHub イシューには過去の対応履歴が残る → 将来の自動化の参考
まとめ • 機械学習向けクラスタでは多数のアクセラレータがあり、様々な要因 でノード障害が発生する • 運用負荷の削減 ◦ 自動復旧 ◦ チケットの自動起票
• OSSの利用と内製ツールの開発の両輪
19 • Preferred Networksの計算基盤関連チームでは採用を実施中です! ◦ 機械学習プラットフォームエンジニア (クラスタのサービス化) ◦ ストレージエンジニア (ストレージの企画設計管理運用)
◦ 大規模計算基盤エンジニア/リサーチャー (クラスタの物理設計、ファシリティ管理) • カジュアル面談もやってます → We're Hiring !!