SlideShare a Scribd company logo
Batch/HPCの潮流と
Scheduler拡張事例
Kubernetes Meetup Tokyo #51, 2022/05/26(Thu)
Shingo Omura, Preferred Networks, Inc.
@everpeace
KubeCon + CloudNativeCon Europe 2022 Recap
2
@everpeace
▶ Preferred Networks, Inc. / エンジニア
▶ 社内向けGPUクラスタの開発運用
▶ 社内クラスタ向けにkube-schedulerを拡張
▶ 主にkubernetes sig-scheduling で活動中
Shingo OMURA / @everpeace
3
@everpeace
PFN のオンプレML基盤の取り組み
オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFNにおける取り組み
We're Hiring!!
機械学習Platform
エンジニア
4
セッション動画がまだ公開されていない物もあり
参加時の記憶&公開スライドからの情報まとめです
一部間違っているところがあるかもしれません
󰢛ご容赦ください󰢜
5
KubeCon + CloudNativeCon Europe 2022
Batch/HPC on Kubernetes
最新潮流
6
@everpeace
● KeynoteにHPCというキーワードが登場。多分初めて。
○ Keynote: Building Bridges: Cloud Native and High
Performance Computing - Ricardo Rocha, Computing
Engineer, CERN
● Kubernetes Batch + HPC Dayが初開催(コロケイベント)
○ 5 sessions + 3 LTs
● KubeCon + CloudNativeConのセッションは
○ 9 session + 1 LT ("Batch", "HPC")
Batch/HPC on Kubernetes 最新潮流
7
@everpeace
High Perfomance Computingの特徴
Keynote: Building Bridges: Cloud Native and High Performance Computing
大量のJobが
大量に通信し合う
(x00Gbps)
超低レイテンシ
InfiniBand等
ナノ〜マイクロ秒
高速に計算したいの
でCPUとメモリは
近いほうがいい
多種多様な
ソフトウェア
が必要
(次のスライド)
8
@everpeace
HPCにおける高度なスケジューリング要求
Keynote: Building Bridges: Cloud Native and High Performance Computing
Workload単位(種類の異なるPod群)
Queueingしたい異なるWorkload間
に優先度つけたい
リソースは公平に使いたい
(寡占、独占は避けたい)
通信し合うので一気にスケジュールしたい
入力だけ違うジョブを大量に投げたい
9
@everpeace
● 基盤系キーワード
○ Volcano(旧 kube-batch)
○ Kubernetes Batch Working Group
■ Kueue
● 事例はあまり多くない
○ HPC
■ Kubernetes as a Substrate for ATLAS Compute (Univ. of Texas, TU München)
■ KubeFlux: An HPC Scheduler Plugin for Kubernetes (IBM, LLNL)
○ Batch
■ Spark on Kubernetes: The Elastic Story (Apple)
■ Supporting Long-Lived Pods Using a Simple Kubernetes Webhook (Slack)
● Scheduler拡張系結構多い→このあと特集します
Batch/HPC on Kubernetes 最新潮流
10
@everpeace
● 基盤系
○ Volcano: Intro & Deep Dive (Huawei)
○ Introduction to the Kubernetes WG Batch (Google, Alibaba)
○ Kueue: A Kubernetes-native Job Queueing (Google)
● 事例系
○ Kubernetes as a Substrate for ATLAS Compute (CERN)
○ KubeFlux: An HPC Scheduler Plugin for Kubernetes (IBM, Lawrence
Livermore National Laboratory)
Selected Sessions: Batch/HPC on k8s 最新潮流
11
KubeCon + CloudNativeCon Europe 2022
Batch/HPC on k8s 最新潮流
<基盤系>
12
@everpeace
Volcano: Intro & Deep Dive
旧kube-batch
2022/04 Incubatingに
50社以上
Production利用
Federationは
現時点で
未サポート
13
@everpeace
● CRDベー
ス:Queue/PodGroup/
Job
● 独自scheduler
● Scheduling Policy
がかなり多彩
Volcano: Intro & Deep Dive
DRFベースのFair Share
(Job単位, NS単位)
Parameter Serverと
Workerを近くに配置
NUMA的に空いているとこ
ろにスケジュール
Time Division Multiplex
一定期間以上走っている
Podをpreemptionできる
(zoneごとに期間等設定可)
スケジュールされるまでの
時間を保証
独自Device Pluginで
メモリ単位でGPU要求可
(Isolation無し)
Queue単位で
最低リソース量保証
14
@everpeace
Introduction to the Kubernetes WG Batch
Mission: Kubernetes coreとしてBatchをどのようにサポートするかを議論&実装
※WG組成にあたっては結構議論があった模様(kubernetes/community#6263)
● 同日にCNCF TAG-RuntimeにBatch System Initiative(BSI) WGの提案があったり(cncf/tag-runtime#38)、
● Kubernetes WGじゃなくてCNCF側だけで十分じゃないか(Volcano, Apache Yunikornとかあるよ)?とか、
● Kubernetes WGとCNCF BSI WGとどういうふうに役割を分担する?とか、
● Gang-SchedulingもQueue/Hierarchical Queueの概念もVolcanoですでに実装されているよ、とか
● Kubernetes WGはKubernetesとしてどうBatchをサポートするかにフォーカスしてCNCFのBSIとは協調関係とか。
15
@everpeace
Introduction to the Kubernetes WG Batch
SIG-Appsでのコレまでの活動
● Indexed Jobs, Suspended jobs, TTL after Finish, Accurate
job tracking, Number of ready pods (Job系)
● CronJob
● Pod deletion cost
SIG-Nodeでのコレまでの活動
● Topology manager
● Topology-aware scheduling plugin
(via NodeResourceTopology CRD)
SIG-Schedulingでのコレまでの活動
● Co-Scheduling
● CapacityScheduling (via ElasticResourceQuota CRD)
● Binpack
(via RequestedToCapacityRatioResourceAllocation plugin)
16
@everpeace
Introduction to the Kubernetes WG Batch
bit.ly/k8s-reservations
まだGoogle Docsで議論中
KEP-3063: dynamic resource allocation
多分このKEPの事だと思われます
17
@everpeace
● batch/v1.Job, Workload API をコアとしてJob Queueingを実現
○ kube-scheduler & scheduler-pluginsで動く
● Batch Admin→テナントにCapacity を割り当てる
● Batch User→Capacityに紐づくQueueを使う
Kueue: A Kubernetes-native Job Queueing
18
@everpeace
● ClusterQueue
○ Capacity, Cohort(capacityを融
通し合うグループ)を定義
● Queue
○ ClusterQueueを参照して属す
Capacityを指定する
● Job
○ annotationでQueueを指定する
○ spec.queueNameを提案中
(k/k#106886)
● Workload API
○ 複数種Pod群によるジョブ
Kueue: A Kubernetes-native Job Queueing
Kueue入門
が詳しいです!
19
@everpeace
Kueue: A Kubernetes-native Job Queueing
※ Keynote: Building Bridges: Cloud Native and High Performance Computing より引用
Cohortによるリソース融
通のデモもありました!
20
KubeCon + CloudNativeCon Europe 2022
Batch/HPC on k8s 最新潮流
<事例系>
21
@everpeace
Kubernetes as a Substrate for ATLAS Compute
ATLASはCERNの大型ハドロン衝突型加速器にある素粒子物理実験装置
全体で600PBytesのデータ
700K+ vCPUs(一部クラウド有)
2020年に始めたMiniK8s Gridは現在は
Googleでバーストさせてトータル 100k vCPU
22
@everpeace
Kubernetes as a Substrate for ATLAS Compute
CernVMFS
PanDA
Production and
Distributed Analysis
Jupyter+Daskの部分は
デモもあったので是非
ビデオ見てください!
23
@everpeace
KubeFlux: An HPC Scheduler Plugin for Kubernetes
Lawrence Livermore National Laboratoryの
ElCapitan (2023予定) は >2 exaFLOPS!!
(富岳は442 PFLOPS)
※現行設備は言及なし
紹介されたユースケースは生物系が多い
10%くらいしかcloud利用していないが
今後増えていく予定
24
@everpeace
KubeFlux: An HPC Scheduler Plugin for Kubernetes
● HPC ClusterとKubernetes
Clusterが別
● HPC ClusterからKubernetes
Clusterにあるデータベースに
アクセスする
● KubernetesではJupyterLabで
色々実験できるらしい
※アップロードされたスライドから引用 (実際のセッションでは使用されていなかった )
25
KubeCon + CloudNativeCon Europe 2022
Scheduler最新拡張事例
26
@everpeace
● Batch/HPCで登場したセッション
○ Working your Cluster: Smarter Scheduling Decisions for Your
Workloads (Intel)
→ Telemetry Aware Scheduling (Custom Metrics API連携)
○ Resource Orchestration of HPC on Kubernetes: Where We Are Now
and the Journey Ahead! (RedHat) → NUMA Aware Scheduling
○ KubeFlux: An HPC Scheduler Plugin for Kubernetes (IBM, LLNL)
→ HPC Scheduler & kube-scheduler連携
● 純粋にScheduler拡張系のセッション
○ Network-aware Scheduling in Kubernetes (Ghent University)
→Infrastructure Topology & Network Aware Scheduling
Selected Sessions: Scheduler最新拡張事例
27
@everpeace
Telemetry Aware Scheduling
Working your Cluster: Smarter Scheduling Decisions for Your Workloads
Nodeメトリクスを
カスタムメトリクス
APIでexposeする
Scheduler Extender
として動作してPodの
TAS Policyをenforce
TAS Policy CR
(Telemetry Aware
Scheduling Policy)
28
@everpeace
Telemetry Aware Scheduling
Working your Cluster: Smarter Scheduling Decisions for Your Workloads
dontschedule strategy:
health_metric メトリクスが1なNodeにはscheduleしない
scheduleonmetric strategy:
temperature メトリクスが少ないNodeにスケジュールされる
labeling strategy:
memory_used_card0メトリクスが100を超えたら card0=trueって
いうnode labelを付与
deschedule stragety:
tempertureメトリクスが80を超えたらdeschedule
freeRAMメトリクスが200を切ったらdeschedule
29
@everpeace
NUMA Aware Scheduling
Resource Orchestration of HPC on Kubernetes: Where We Are Now and the Journey Ahead!
kube-schedulerはNodeのNUMA利用状況を
知らない
→ Topology Manager Policyがきついと
  PodがScheduleされてもErrorで全然
 上がらない
30
@everpeace
NUMA Aware Scheduling
Resource Orchestration of HPC on Kubernetes: Where We Are Now and the Journey Ahead!
KubeletのPodResource APIを使って
resourceのassign状況を
NodeResourceTopology CRにexpose
Scheduler Pluginで
NodeResourceTopology CR
を見てschedule判断
Node毎に生成される
zone: NUMA, socket, die, etc.
cost: zone間の距離を表す指標
31
@everpeace
HPC Scheduler & kube-scheduler連携
KubeFlux: An HPC Scheduler Plugin for Kubernetes
コレまでのnode-centricなmodelは
● monogenousな環境向け
● Heterogeneousな環境だと効率悪い
● リソースの包含関係をグラフとして表現
● リッチなグラフtraversal/allocaiton API
● 複雑なスケジューリングをcodeを
変更せずに実現可能
※SIG-Schedulingのsubprojectだった
 Poseidonと少し違う感じがするが
 詳細不明
32
@everpeace
HPC Scheduler & kube-scheduler連携
KubeFlux: An HPC Scheduler Plugin for Kubernetes
● Fluxionをsidecarで実行
● Scheduler PluginはgRPCで連携
● Plugin的にはPreFilter/Filterだけを実装
● Scheudling判断はすべてFluxionに移譲
33
@everpeace
Infra Topology & Network Aware Scheduling
Network-aware Scheduling in Kubernetes
アプリケーション間の依存やインフラのトポロジー
を考慮したスケジューリング (Contextual
Awarenessと表現)が出来ていない
ネットワークレイテンシや帯域を考慮した
スケジューリングがしたい
34
@everpeace
Infra Topology & Network Aware Scheduling
Network-aware Scheduling in Kubernetes
NetworkTopology CR:
region間、zone間といったネットワー
クインフラのトポロジーとそれぞれの
間のネットワークコストをモデリング
する
35
@everpeace
Infra Topology & Network Aware Scheduling
Network-aware Scheduling in Kubernetes
AppGroup CR:
アプリケーション内のサービスの依存
関係、利用帯域、コストなどをモデリ
ング
P2はP3に依存
最低250Mi必要
36
@everpeace
Infra Topology & Network Aware Scheduling
Network-aware Scheduling in Kubernetes
NetworkOverhead Plugin:
● スケジュールしようとしているPodのAppGroupの通信パターンとNetworkTopology
の帯域容量をみてNodeをFilter, 通信Costが低くなるようなNodeを選択
TopologicalSort Plugin:
● AppGroupの依存関係の下流から順番にスケジュール
37
@everpeace
● HPC/Batchに特化したKeynoteやCollocated Eventが出現
● Volcanoが機能的にはかなりリッチ
○ 独自スケジューラだったりするので採用にはなかなか勇気がいるが、Incubating
Projectになったのでそろそろ検討候補か?
● Kubernetes Batch WGが出来た
○ 出来たばかりなのでまだまだこれから
○ Kueueはscheduler再開発してないのが好印象
● HPC/Batch事例発表は多くない
○ 柔軟なスケジュールしたい場合は独自でScheduleしてたり
○ ライトにbatch/v1.Jobを使っている事例にとどまっている
○ Volcanoを使った事例発表もなかったと思われる
● kube-schedulerを拡張する事例はどんどん出てきていて面白い
まとめ
Making the real world computable
39
@everpeace
● Batch/HPC基盤系
○ [Keynote] High Performance Computing on Google Kubernetes Engine(Google)
○ Kueue: A Kubernetes-native Job Queueing (Google)
○ Volcano – Cloud Native Batch System for AI, BigData and HPC (Huawei)
○ Fast Data on-Ramp with Apache Pulsar on K8 (StreamNative)
○ Efficient Deep Learning Training with Ludwig AutoML, Ray, and Nodeless Kubernetes
(Elotl, Predibase)
● HPC系事例
○ [LT] How to Handle Fair Scheduling in a Private Academic K8s infrastructure (Masaryk
University, CESNET)
● Scheduler系
○ Resource Orchestration of HPC on Kubernetes: Where We Are Now and the Journey
Ahead! (RedHat)
○ Get More Computing Power by Helping the OS Scheduler (Intel)
○ Apache YuniKorn A Kubernetes Scheduler Plugin for Batch Workloads(Cloudera)
[参考] Kubernetes Batch + HPC Day
40
@everpeace
● Batch/HPC基盤系
○ Volcano: Intro & Deep Dive (Huawei)
○ Introduction to the Kubernetes WG Batch (Google, Alibaba)
○ Unlimited Data Science Libraries, One Container Image, No Installation! (Red Hat, Ghent Univ.)
○ [LT]Secure Multi User HPC Jobs in Kubernetes with Kyverno (Ohio Supercomputer Center)
● Batch系事例
○ Spark on Kubernetes: The Elastic Story (Apple)
○ Supporting Long-Lived Pods Using a Simple Kubernetes Webhook (Slack)
● HPC系事例
○ Kubernetes as a Substrate for ATLAS Compute (CERN)
○ KubeFlux: An HPC Scheduler Plugin for Kubernetes (IBM, LLNL)
● Scheduler系
○ Working your Cluster: Smarter Scheduling Decisions for Your Workloads (Intel)
○ KubeFlux: An HPC Scheduler Plugin for Kubernetes (IBM, LLNL)
[参考]KubeCon + CloudNativeCon (Batch/HPC系)

More Related Content

PDF
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PDF
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
PDF
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PPTX
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
PDF
Apache Arrow - データ処理ツールの次世代プラットフォーム
PDF
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
PPTX
コンテナネットワーキング(CNI)最前線
PPTX
Slurmのジョブスケジューリングと実装
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Apache Arrow - データ処理ツールの次世代プラットフォーム
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
コンテナネットワーキング(CNI)最前線
Slurmのジョブスケジューリングと実装

What's hot (20)

PDF
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
PDF
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
PDF
Githubを使って簡単に helm repoを公開してみよう
PDF
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PDF
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
PPTX
Dockerからcontainerdへの移行
PPTX
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
PDF
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
PDF
kube-system落としてみました
PDF
ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43
PDF
Dockerからcontainerdへの移行
PDF
Topology Managerについて / Kubernetes Meetup Tokyo 50
PDF
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
PDF
Dockerfile を書くためのベストプラクティス解説編
PDF
分散システムの限界について知ろう
PDF
Kuberneteの運用を支えるGitOps
PDF
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
PDF
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
PPTX
KubernetesバックアップツールVeleroとちょっとした苦労話
PDF
20180729 Preferred Networksの機械学習クラスタを支える技術
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
Githubを使って簡単に helm repoを公開してみよう
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Dockerからcontainerdへの移行
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
kube-system落としてみました
ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43
Dockerからcontainerdへの移行
Topology Managerについて / Kubernetes Meetup Tokyo 50
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Dockerfile を書くためのベストプラクティス解説編
分散システムの限界について知ろう
Kuberneteの運用を支えるGitOps
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
KubernetesバックアップツールVeleroとちょっとした苦労話
20180729 Preferred Networksの機械学習クラスタを支える技術
Ad

Similar to KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kubernetes Meetup Tokyo #51 / #k8sjp (20)

PDF
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
PDF
KubeCon 2021 NA Recap - Scheduler拡張事例最前線 / Kubernetes Meetup Tokyo #47 / #k8sjp
PDF
How to Schedule Machine Learning Workloads Nicely In Kubernetes #CNDT2020 / C...
PDF
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50
PDF
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
PDF
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション④
PDF
Rancher/k8sを利用した運用改善の取り組み(Rancher Day 2019)
PPTX
DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)
PDF
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
PDF
株式会社コロプラ『GKE と Cloud Spanner が躍動するドラゴンクエストウォーク』第 9 回 Google Cloud INSIDE Game...
PPTX
2017 KubeCon CNCon ver2
PDF
Lenovo seminar rancher_200513
PDF
Rancher/k8sを利用した運用改善の取り組み
PDF
Rancher2.0で実現する Managed Kubernetes Service
PDF
Webアプリ開発向け ゆるふわDocker使いが Cloud Naive開発に必要なetc.
PDF
俺の Kubernetes Workflow with HashiStack
PDF
Kube con + cloudnativecon 2017 社内報告会(外部公開用)
PDF
システム系論文輪講会20140806
PDF
Kubecon NA 2019 Recap: Your Path to Production Ready Kubernetes hosted by Wea...
PDF
Webアプリ開発向け ゆるふわDocker使いがCloud Naive開発に必要そうなetc.
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
KubeCon 2021 NA Recap - Scheduler拡張事例最前線 / Kubernetes Meetup Tokyo #47 / #k8sjp
How to Schedule Machine Learning Workloads Nicely In Kubernetes #CNDT2020 / C...
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション④
Rancher/k8sを利用した運用改善の取り組み(Rancher Day 2019)
DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
株式会社コロプラ『GKE と Cloud Spanner が躍動するドラゴンクエストウォーク』第 9 回 Google Cloud INSIDE Game...
2017 KubeCon CNCon ver2
Lenovo seminar rancher_200513
Rancher/k8sを利用した運用改善の取り組み
Rancher2.0で実現する Managed Kubernetes Service
Webアプリ開発向け ゆるふわDocker使いが Cloud Naive開発に必要なetc.
俺の Kubernetes Workflow with HashiStack
Kube con + cloudnativecon 2017 社内報告会(外部公開用)
システム系論文輪講会20140806
Kubecon NA 2019 Recap: Your Path to Production Ready Kubernetes hosted by Wea...
Webアプリ開発向け ゆるふわDocker使いがCloud Naive開発に必要そうなetc.
Ad

More from Preferred Networks (20)

PDF
PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57
PDF
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
PDF
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
PDF
深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...
PDF
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
PDF
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
PDF
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
PDF
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
PDF
スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演
PPTX
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
PPTX
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
PDF
自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)
PDF
Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張
PDF
PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会
PDF
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
PDF
PFN Summer Internship 2021 / Kohei Shinohara: Charge Transfer Modeling in Neu...
PDF
Playgram開発秘話_2022年1月プログラミングシンポジウム招待講演_西澤勇輝、岡本雄太
PDF
東北大学 先端技術の基礎と実践_深層学習による画像認識とデータの話_菊池悠太
PDF
MN-3, MN-Core and HPL - SC21 Green500 BOF
PDF
PFP:材料探索のための汎用Neural Network Potential - 2021/10/4 QCMSR + DLAP共催
PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)
Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張
PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
PFN Summer Internship 2021 / Kohei Shinohara: Charge Transfer Modeling in Neu...
Playgram開発秘話_2022年1月プログラミングシンポジウム招待講演_西澤勇輝、岡本雄太
東北大学 先端技術の基礎と実践_深層学習による画像認識とデータの話_菊池悠太
MN-3, MN-Core and HPL - SC21 Green500 BOF
PFP:材料探索のための汎用Neural Network Potential - 2021/10/4 QCMSR + DLAP共催

KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kubernetes Meetup Tokyo #51 / #k8sjp

  • 1. Batch/HPCの潮流と Scheduler拡張事例 Kubernetes Meetup Tokyo #51, 2022/05/26(Thu) Shingo Omura, Preferred Networks, Inc. @everpeace KubeCon + CloudNativeCon Europe 2022 Recap
  • 2. 2 @everpeace ▶ Preferred Networks, Inc. / エンジニア ▶ 社内向けGPUクラスタの開発運用 ▶ 社内クラスタ向けにkube-schedulerを拡張 ▶ 主にkubernetes sig-scheduling で活動中 Shingo OMURA / @everpeace
  • 3. 3 @everpeace PFN のオンプレML基盤の取り組み オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 PFNにおける取り組み We're Hiring!! 機械学習Platform エンジニア
  • 5. 5 KubeCon + CloudNativeCon Europe 2022 Batch/HPC on Kubernetes 最新潮流
  • 6. 6 @everpeace ● KeynoteにHPCというキーワードが登場。多分初めて。 ○ Keynote: Building Bridges: Cloud Native and High Performance Computing - Ricardo Rocha, Computing Engineer, CERN ● Kubernetes Batch + HPC Dayが初開催(コロケイベント) ○ 5 sessions + 3 LTs ● KubeCon + CloudNativeConのセッションは ○ 9 session + 1 LT ("Batch", "HPC") Batch/HPC on Kubernetes 最新潮流
  • 7. 7 @everpeace High Perfomance Computingの特徴 Keynote: Building Bridges: Cloud Native and High Performance Computing 大量のJobが 大量に通信し合う (x00Gbps) 超低レイテンシ InfiniBand等 ナノ〜マイクロ秒 高速に計算したいの でCPUとメモリは 近いほうがいい 多種多様な ソフトウェア が必要 (次のスライド)
  • 8. 8 @everpeace HPCにおける高度なスケジューリング要求 Keynote: Building Bridges: Cloud Native and High Performance Computing Workload単位(種類の異なるPod群) Queueingしたい異なるWorkload間 に優先度つけたい リソースは公平に使いたい (寡占、独占は避けたい) 通信し合うので一気にスケジュールしたい 入力だけ違うジョブを大量に投げたい
  • 9. 9 @everpeace ● 基盤系キーワード ○ Volcano(旧 kube-batch) ○ Kubernetes Batch Working Group ■ Kueue ● 事例はあまり多くない ○ HPC ■ Kubernetes as a Substrate for ATLAS Compute (Univ. of Texas, TU München) ■ KubeFlux: An HPC Scheduler Plugin for Kubernetes (IBM, LLNL) ○ Batch ■ Spark on Kubernetes: The Elastic Story (Apple) ■ Supporting Long-Lived Pods Using a Simple Kubernetes Webhook (Slack) ● Scheduler拡張系結構多い→このあと特集します Batch/HPC on Kubernetes 最新潮流
  • 10. 10 @everpeace ● 基盤系 ○ Volcano: Intro & Deep Dive (Huawei) ○ Introduction to the Kubernetes WG Batch (Google, Alibaba) ○ Kueue: A Kubernetes-native Job Queueing (Google) ● 事例系 ○ Kubernetes as a Substrate for ATLAS Compute (CERN) ○ KubeFlux: An HPC Scheduler Plugin for Kubernetes (IBM, Lawrence Livermore National Laboratory) Selected Sessions: Batch/HPC on k8s 最新潮流
  • 11. 11 KubeCon + CloudNativeCon Europe 2022 Batch/HPC on k8s 最新潮流 <基盤系>
  • 12. 12 @everpeace Volcano: Intro & Deep Dive 旧kube-batch 2022/04 Incubatingに 50社以上 Production利用 Federationは 現時点で 未サポート
  • 13. 13 @everpeace ● CRDベー ス:Queue/PodGroup/ Job ● 独自scheduler ● Scheduling Policy がかなり多彩 Volcano: Intro & Deep Dive DRFベースのFair Share (Job単位, NS単位) Parameter Serverと Workerを近くに配置 NUMA的に空いているとこ ろにスケジュール Time Division Multiplex 一定期間以上走っている Podをpreemptionできる (zoneごとに期間等設定可) スケジュールされるまでの 時間を保証 独自Device Pluginで メモリ単位でGPU要求可 (Isolation無し) Queue単位で 最低リソース量保証
  • 14. 14 @everpeace Introduction to the Kubernetes WG Batch Mission: Kubernetes coreとしてBatchをどのようにサポートするかを議論&実装 ※WG組成にあたっては結構議論があった模様(kubernetes/community#6263) ● 同日にCNCF TAG-RuntimeにBatch System Initiative(BSI) WGの提案があったり(cncf/tag-runtime#38)、 ● Kubernetes WGじゃなくてCNCF側だけで十分じゃないか(Volcano, Apache Yunikornとかあるよ)?とか、 ● Kubernetes WGとCNCF BSI WGとどういうふうに役割を分担する?とか、 ● Gang-SchedulingもQueue/Hierarchical Queueの概念もVolcanoですでに実装されているよ、とか ● Kubernetes WGはKubernetesとしてどうBatchをサポートするかにフォーカスしてCNCFのBSIとは協調関係とか。
  • 15. 15 @everpeace Introduction to the Kubernetes WG Batch SIG-Appsでのコレまでの活動 ● Indexed Jobs, Suspended jobs, TTL after Finish, Accurate job tracking, Number of ready pods (Job系) ● CronJob ● Pod deletion cost SIG-Nodeでのコレまでの活動 ● Topology manager ● Topology-aware scheduling plugin (via NodeResourceTopology CRD) SIG-Schedulingでのコレまでの活動 ● Co-Scheduling ● CapacityScheduling (via ElasticResourceQuota CRD) ● Binpack (via RequestedToCapacityRatioResourceAllocation plugin)
  • 16. 16 @everpeace Introduction to the Kubernetes WG Batch bit.ly/k8s-reservations まだGoogle Docsで議論中 KEP-3063: dynamic resource allocation 多分このKEPの事だと思われます
  • 17. 17 @everpeace ● batch/v1.Job, Workload API をコアとしてJob Queueingを実現 ○ kube-scheduler & scheduler-pluginsで動く ● Batch Admin→テナントにCapacity を割り当てる ● Batch User→Capacityに紐づくQueueを使う Kueue: A Kubernetes-native Job Queueing
  • 18. 18 @everpeace ● ClusterQueue ○ Capacity, Cohort(capacityを融 通し合うグループ)を定義 ● Queue ○ ClusterQueueを参照して属す Capacityを指定する ● Job ○ annotationでQueueを指定する ○ spec.queueNameを提案中 (k/k#106886) ● Workload API ○ 複数種Pod群によるジョブ Kueue: A Kubernetes-native Job Queueing Kueue入門 が詳しいです!
  • 19. 19 @everpeace Kueue: A Kubernetes-native Job Queueing ※ Keynote: Building Bridges: Cloud Native and High Performance Computing より引用 Cohortによるリソース融 通のデモもありました!
  • 20. 20 KubeCon + CloudNativeCon Europe 2022 Batch/HPC on k8s 最新潮流 <事例系>
  • 21. 21 @everpeace Kubernetes as a Substrate for ATLAS Compute ATLASはCERNの大型ハドロン衝突型加速器にある素粒子物理実験装置 全体で600PBytesのデータ 700K+ vCPUs(一部クラウド有) 2020年に始めたMiniK8s Gridは現在は Googleでバーストさせてトータル 100k vCPU
  • 22. 22 @everpeace Kubernetes as a Substrate for ATLAS Compute CernVMFS PanDA Production and Distributed Analysis Jupyter+Daskの部分は デモもあったので是非 ビデオ見てください!
  • 23. 23 @everpeace KubeFlux: An HPC Scheduler Plugin for Kubernetes Lawrence Livermore National Laboratoryの ElCapitan (2023予定) は >2 exaFLOPS!! (富岳は442 PFLOPS) ※現行設備は言及なし 紹介されたユースケースは生物系が多い 10%くらいしかcloud利用していないが 今後増えていく予定
  • 24. 24 @everpeace KubeFlux: An HPC Scheduler Plugin for Kubernetes ● HPC ClusterとKubernetes Clusterが別 ● HPC ClusterからKubernetes Clusterにあるデータベースに アクセスする ● KubernetesではJupyterLabで 色々実験できるらしい ※アップロードされたスライドから引用 (実際のセッションでは使用されていなかった )
  • 25. 25 KubeCon + CloudNativeCon Europe 2022 Scheduler最新拡張事例
  • 26. 26 @everpeace ● Batch/HPCで登場したセッション ○ Working your Cluster: Smarter Scheduling Decisions for Your Workloads (Intel) → Telemetry Aware Scheduling (Custom Metrics API連携) ○ Resource Orchestration of HPC on Kubernetes: Where We Are Now and the Journey Ahead! (RedHat) → NUMA Aware Scheduling ○ KubeFlux: An HPC Scheduler Plugin for Kubernetes (IBM, LLNL) → HPC Scheduler & kube-scheduler連携 ● 純粋にScheduler拡張系のセッション ○ Network-aware Scheduling in Kubernetes (Ghent University) →Infrastructure Topology & Network Aware Scheduling Selected Sessions: Scheduler最新拡張事例
  • 27. 27 @everpeace Telemetry Aware Scheduling Working your Cluster: Smarter Scheduling Decisions for Your Workloads Nodeメトリクスを カスタムメトリクス APIでexposeする Scheduler Extender として動作してPodの TAS Policyをenforce TAS Policy CR (Telemetry Aware Scheduling Policy)
  • 28. 28 @everpeace Telemetry Aware Scheduling Working your Cluster: Smarter Scheduling Decisions for Your Workloads dontschedule strategy: health_metric メトリクスが1なNodeにはscheduleしない scheduleonmetric strategy: temperature メトリクスが少ないNodeにスケジュールされる labeling strategy: memory_used_card0メトリクスが100を超えたら card0=trueって いうnode labelを付与 deschedule stragety: tempertureメトリクスが80を超えたらdeschedule freeRAMメトリクスが200を切ったらdeschedule
  • 29. 29 @everpeace NUMA Aware Scheduling Resource Orchestration of HPC on Kubernetes: Where We Are Now and the Journey Ahead! kube-schedulerはNodeのNUMA利用状況を 知らない → Topology Manager Policyがきついと   PodがScheduleされてもErrorで全然  上がらない
  • 30. 30 @everpeace NUMA Aware Scheduling Resource Orchestration of HPC on Kubernetes: Where We Are Now and the Journey Ahead! KubeletのPodResource APIを使って resourceのassign状況を NodeResourceTopology CRにexpose Scheduler Pluginで NodeResourceTopology CR を見てschedule判断 Node毎に生成される zone: NUMA, socket, die, etc. cost: zone間の距離を表す指標
  • 31. 31 @everpeace HPC Scheduler & kube-scheduler連携 KubeFlux: An HPC Scheduler Plugin for Kubernetes コレまでのnode-centricなmodelは ● monogenousな環境向け ● Heterogeneousな環境だと効率悪い ● リソースの包含関係をグラフとして表現 ● リッチなグラフtraversal/allocaiton API ● 複雑なスケジューリングをcodeを 変更せずに実現可能 ※SIG-Schedulingのsubprojectだった  Poseidonと少し違う感じがするが  詳細不明
  • 32. 32 @everpeace HPC Scheduler & kube-scheduler連携 KubeFlux: An HPC Scheduler Plugin for Kubernetes ● Fluxionをsidecarで実行 ● Scheduler PluginはgRPCで連携 ● Plugin的にはPreFilter/Filterだけを実装 ● Scheudling判断はすべてFluxionに移譲
  • 33. 33 @everpeace Infra Topology & Network Aware Scheduling Network-aware Scheduling in Kubernetes アプリケーション間の依存やインフラのトポロジー を考慮したスケジューリング (Contextual Awarenessと表現)が出来ていない ネットワークレイテンシや帯域を考慮した スケジューリングがしたい
  • 34. 34 @everpeace Infra Topology & Network Aware Scheduling Network-aware Scheduling in Kubernetes NetworkTopology CR: region間、zone間といったネットワー クインフラのトポロジーとそれぞれの 間のネットワークコストをモデリング する
  • 35. 35 @everpeace Infra Topology & Network Aware Scheduling Network-aware Scheduling in Kubernetes AppGroup CR: アプリケーション内のサービスの依存 関係、利用帯域、コストなどをモデリ ング P2はP3に依存 最低250Mi必要
  • 36. 36 @everpeace Infra Topology & Network Aware Scheduling Network-aware Scheduling in Kubernetes NetworkOverhead Plugin: ● スケジュールしようとしているPodのAppGroupの通信パターンとNetworkTopology の帯域容量をみてNodeをFilter, 通信Costが低くなるようなNodeを選択 TopologicalSort Plugin: ● AppGroupの依存関係の下流から順番にスケジュール
  • 37. 37 @everpeace ● HPC/Batchに特化したKeynoteやCollocated Eventが出現 ● Volcanoが機能的にはかなりリッチ ○ 独自スケジューラだったりするので採用にはなかなか勇気がいるが、Incubating Projectになったのでそろそろ検討候補か? ● Kubernetes Batch WGが出来た ○ 出来たばかりなのでまだまだこれから ○ Kueueはscheduler再開発してないのが好印象 ● HPC/Batch事例発表は多くない ○ 柔軟なスケジュールしたい場合は独自でScheduleしてたり ○ ライトにbatch/v1.Jobを使っている事例にとどまっている ○ Volcanoを使った事例発表もなかったと思われる ● kube-schedulerを拡張する事例はどんどん出てきていて面白い まとめ
  • 38. Making the real world computable
  • 39. 39 @everpeace ● Batch/HPC基盤系 ○ [Keynote] High Performance Computing on Google Kubernetes Engine(Google) ○ Kueue: A Kubernetes-native Job Queueing (Google) ○ Volcano – Cloud Native Batch System for AI, BigData and HPC (Huawei) ○ Fast Data on-Ramp with Apache Pulsar on K8 (StreamNative) ○ Efficient Deep Learning Training with Ludwig AutoML, Ray, and Nodeless Kubernetes (Elotl, Predibase) ● HPC系事例 ○ [LT] How to Handle Fair Scheduling in a Private Academic K8s infrastructure (Masaryk University, CESNET) ● Scheduler系 ○ Resource Orchestration of HPC on Kubernetes: Where We Are Now and the Journey Ahead! (RedHat) ○ Get More Computing Power by Helping the OS Scheduler (Intel) ○ Apache YuniKorn A Kubernetes Scheduler Plugin for Batch Workloads(Cloudera) [参考] Kubernetes Batch + HPC Day
  • 40. 40 @everpeace ● Batch/HPC基盤系 ○ Volcano: Intro & Deep Dive (Huawei) ○ Introduction to the Kubernetes WG Batch (Google, Alibaba) ○ Unlimited Data Science Libraries, One Container Image, No Installation! (Red Hat, Ghent Univ.) ○ [LT]Secure Multi User HPC Jobs in Kubernetes with Kyverno (Ohio Supercomputer Center) ● Batch系事例 ○ Spark on Kubernetes: The Elastic Story (Apple) ○ Supporting Long-Lived Pods Using a Simple Kubernetes Webhook (Slack) ● HPC系事例 ○ Kubernetes as a Substrate for ATLAS Compute (CERN) ○ KubeFlux: An HPC Scheduler Plugin for Kubernetes (IBM, LLNL) ● Scheduler系 ○ Working your Cluster: Smarter Scheduling Decisions for Your Workloads (Intel) ○ KubeFlux: An HPC Scheduler Plugin for Kubernetes (IBM, LLNL) [参考]KubeCon + CloudNativeCon (Batch/HPC系)