Slide 1

Slide 1 text

Kubernetes Meetup Tokyo #51(2022/05/26) SUDA Kazuki, Preferred Networks, Inc. @superbrothers KubeCon + CloudNativeCon Europe 2022 Recap

Slide 2

Slide 2 text

@superbrothers SUDA Kazuki / @superbrothers ▶ Preferred Networks, Inc. / エンジニア ▶ Scalar, Inc. / 技術アドバイザ ▶ Kubernetes Meetup Tokyo 共同主催者 ▶ Cloud Native Ambassador (CNCF) ▶ 技術評論社「Kubernetes実践⼊⾨」、「みんなのDocker/Kubernetes」共著書 ▶ オライリー「⼊⾨ Prometheus」、「Kubernetes で実践するクラウドネイティブ DevOps」監訳書 2

Slide 3

Slide 3 text

@superbrothers 今回振り返るセッション ▶ Unlimited Data Science Libraries, One Container Image, No Installation! ▶ Improving GPU Utilization using Kubernetes ▶ Building a Nodeless Kubernetes Platform + GKE Autopilot を開発した際の選択肢について知れて楽しい + Borg のなかで動かす選択肢もあったけど、 
 結果 Kubernetes + VM ノードというシンプルな選択になった理由について ▶ How to Migrate 700 Kubernetes Clusters to Cluster API with Zero Downtime + Mercedes-Bentz が既存のクラスタを Cluster API 管理に移⾏した話 + PFN も Cluster API を使ってクラスタを管理しているので楽しいセッションだった 3 今回振り返らないけど楽しかったセッション たぶん @_inductor_ が話してくれるはず

Slide 4

Slide 4 text

@superbrothers Unlimited Data Science Libraries, 
 One Container Image, No Installation! Marcel Hild, Red Hat & Kenneth Hoste, Ghent University

Slide 5

Slide 5 text

@superbrothers Unlimited Data Science Libraries,One Container Image, No Installation! 
 Marcel Hild, Red Hat & Kenneth Hoste, Ghent University ▶ AI/ML, HPC インフラでコンテナを使う挑戦 ▶ HPC (High-Performance Computing a.k.a. supercomputing) インフラならではの課題が多くある ▶ その1つが複数ツール X 複数バージョンが使える環境を求められること + 組み合わせ毎にコンテナイメージを作ろう... → イメージ数が⼤爆発 + 全部⼊りイメージを作ろう → イメージサイズが⼤爆発 ▶ 解決策 → Environment modules(Lmod + EasyBuild) + module load example/1.2.3 のような感じでバージョンを切り替えられる + 事前にツール郡をビルドして ROX なボリュームに配置しておき、コンテナ実⾏時にマウント + ベースイメージは最低限必要なツールだけを含むようにできる 5

Slide 6

Slide 6 text

Unlimited Data Science Libraries,One Container Image, No Installation! 
 Marcel Hild, Red Hat & Kenneth Hoste, Ghent University 6 ‰†‘“ƒ†Ž &RQWDLQHU,PDJH –Žš ‚…‚” ‚•‘•Šƒ •‰†“Šƒ“‚“Š†” ‰†Ģƒ‚”†ģ„•‚Š†“ŠŽ‚ˆ†Š„–…†”ę Ɣ š•‰‚•‚”‘†„Š‡Š„—†“”Š Ɣ Ž†–”†‡–Šƒ“‚“Š†”‚…‚‘‘Š„‚•Š” Ɣ –‘š•†“˜Š•‰‘“†Ĵ…†‡Š†…†™•†”Š” ‰†Ĵ…†Ž‚…•†ƒŒ†™‚Ž‘† ÂÄ よくある感じ

Slide 7

Slide 7 text

”†“”˜‚•Ž“†Ę˜‰‚••…Ğ —œ †”“ ˜Ŕėŗ ‚”†ŠŽ‚ˆ† —Ŕ †”“ ˜ŔėŘ ‚”†ŠŽ‚ˆ† ėėė —œ †”“ ˜Ŕėŗ ‚”†ŠŽ‚ˆ† š“„‰ š“„‰œėś ‚”†ŠŽ‚ˆ† ėėė —œ †”“ ˜Ŕėŗ ‚”†ŠŽ‚ˆ† š“„‰œėś ėėė ‚”†ŠŽ‚ˆ† •†ƒŒ ƒ‚”† š“„‰œėŚ †”“ ˜Ŕėŕ †”“ ˜ŔėŔ Š‘ʐ…‚ ŖėœėŒ Ž‘†ˆŖėŕėŔ –•Š‘†—†“”Š”ƅƈ–•Š‘†ŠŽ‚ˆ†” –•Š‘†•”ƅƈ–•Š‘†ŠŽ‚ˆ†” —†“˜†Šˆ‰•ŠŽ‚ˆ†”ėėė ˜ŠŽ‚ˆ†”ėėė ‰†‘“ƒ†Ž ÂÅ Unlimited Data Science Libraries,One Container Image, No Installation! 
 Marcel Hild, Red Hat & Kenneth Hoste, Ghent University 7 イメージ数が大爆発!🤯 イメージサイズが大爆発!🤯

Slide 8

Slide 8 text

”†“”˜‚•Ž“†Ę˜‰‚••…Ğ —œ †”“ ˜Ŕėŗ ‚”†ŠŽ‚ˆ† —Ŕ †”“ ˜ŔėŘ ‚”†ŠŽ‚ˆ† ėėė —œ †”“ ˜Ŕėŗ ‚”†ŠŽ‚ˆ† š“„‰ š“„‰œėś ‚”†ŠŽ‚ˆ† ėėė —œ †”“ ˜Ŕėŗ ‚”†ŠŽ‚ˆ† š“„‰œėś ėėė ‚”†ŠŽ‚ˆ† •†ƒŒ ƒ‚”† š“„‰œėŚ †”“ ˜Ŕėŕ †”“ ˜ŔėŔ Š‘ʐ…‚ ŖėœėŒ Ž‘†ˆŖėŕėŔ –•Š‘†—†“”Š”ƅƈ–•Š‘†ŠŽ‚ˆ†” –•Š‘†•”ƅƈ–•Š‘†ŠŽ‚ˆ†” —†“˜†Šˆ‰•ŠŽ‚ˆ†”ėėė ˜ŠŽ‚ˆ†”ėėė ‰†‘“ƒ†Ž ‚‚ˆ†Ž†• Šˆ‰•Ž‚“†Ĝ ÂÆ Unlimited Data Science Libraries,One Container Image, No Installation! 
 Marcel Hild, Red Hat & Kenneth Hoste, Ghent University 8

Slide 9

Slide 9 text

༬ᐣଚ஘୴஗୥ଞஔப୤ૼ౲૴଴ଉ૴ᚌ༄ Ɣ ଘଛૻ૿ᇑᱚଛ8FCଐଁଗᡀපଛ(16 ./$PSFૼ౲૸଻ +VQZUFS DPEFTFSWFS Ɣ QSFCVJMUଚBMMJOPOF ᄎᬧଚ஗୒஄஗஘ഃ᳙ം଺ ଚDPOUBJOFSJNBHFଗᰓං Ɣ ,VCFSOFUFTୂଫଘୃଙᝅହଚ૿ଖଲ0, Ɣ ༰ᬫᐵଚ࿃Ẉଛଟ૲ମ଺෿ૻଚ૴ ,QWHUDFWLYH (QYLURQPHQW Ɣ 䝬䝙䝣䜵䝇䝖䜢┤᥋᭩䛡䜛ே⏝ ż ෆ〇䛾$UJR:RUNIORZグ㏙'6/S\WKRQ᭷䜚 NXEHFWO Ɣ ᇑೲଗୡப୷ୂᣇᷡଇଖૉଢ଼஗୧୭ଗ࿃᫜ଇଏ૴ଢଘ෿ଁ Ɣ ,VCFSOFUFTଞᝅ᮱ଟ࿳ଇᄎᬧଐૼ஌୹ஃ୕୧୶ୂጦૻଚ૿ଖ૴૴ Ɣ ࿧᚟$-*ଗJNBHFCVJMEߓNBOJGFTUBQQMZମଗ࿃᫜෫ᥱ ൅ካྪᤞଲ࿤ᄕ Ɇ ƆĬŌƧăĒȽƉƧŚȽȦƆȽŘƆĹʼnţăȽȦȦĭƆƧȽǡȽȦţȽƿţƉŌĒƉȽǝȽȦȦȽŘƆĹĒDŽĒąȽƟƉèĹŚȏƆDž Ɣ QVTIଚଇଗᇑೲଗᣇᷡ௲ଞୡப୷ૼଢ଼஗୧୭ଗഓᙩ෫ᥱଚსଗ࿃᫜෫ HJUHIPTUᲧቨ Ɣ EFGBVMUଟBMMJOPOF୒ஏப୦ ᦰ൅ଗ%PDLFSὍMFጦ૿ଃଘଲ෫ᥱ EXLOGDQGUXQ &/,WRRO ⼀⽅で、PFN のコンテナイメージは... 全部入り
 戦略!!

Slide 10

Slide 10 text

༬ᐣଚ஘୴஗୥ଞஔப୤ૼ౲૴଴ଉ૴ᚌ༄ Ɣ ଘଛૻ૿ᇑᱚଛ8FCଐଁଗᡀපଛ(16 ./$PSFૼ౲૸଻ +VQZUFS DPEFTFSWFS Ɣ QSFCVJMUଚBMMJOPOF ᄎᬧଚ஗୒஄஗஘ഃ᳙ം଺ ଚDPOUBJOFSJNBHFଗᰓං Ɣ ,VCFSOFUFTୂଫଘୃଙᝅହଚ૿ଖଲ0, Ɣ ༰ᬫᐵଚ࿃Ẉଛଟ૲ମ଺෿ૻଚ૴ ,QWHUDFWLYH (QYLURQPHQW Ɣ 䝬䝙䝣䜵䝇䝖䜢┤᥋᭩䛡䜛ே⏝ ż ෆ〇䛾$UJR:RUNIORZグ㏙'6/S\WKRQ᭷䜚 NXEHFWO Ɣ ᇑೲଗୡப୷ୂᣇᷡଇଖૉଢ଼஗୧୭ଗ࿃᫜ଇଏ૴ଢଘ෿ଁ Ɣ ,VCFSOFUFTଞᝅ᮱ଟ࿳ଇᄎᬧଐૼ஌୹ஃ୕୧୶ୂጦૻଚ૿ଖ૴૴ Ɣ ࿧᚟$-*ଗJNBHFCVJMEߓNBOJGFTUBQQMZମଗ࿃᫜෫ᥱ ൅ካྪᤞଲ࿤ᄕ Ɇ ƆĬŌƧăĒȽƉƧŚȽȦƆȽŘƆĹʼnţăȽȦȦĭƆƧȽǡȽȦţȽƿţƉŌĒƉȽǝȽȦȦȽŘƆĹĒDŽĒąȽƟƉèĹŚȏƆDž Ɣ QVTIଚଇଗᇑೲଗᣇᷡ௲ଞୡப୷ૼଢ଼஗୧୭ଗഓᙩ෫ᥱଚსଗ࿃᫜෫ HJUHIPTUᲧቨ Ɣ EFGBVMUଟBMMJOPOF୒ஏப୦ ᦰ൅ଗ%PDLFSὍMFጦ૿ଃଘଲ෫ᥱ EXLOGDQGUXQ &/,WRRO ⼀⽅で、PFN のコンテナイメージは... 全部入り
 戦略!! $ wc -l Dockerfile 810 Dockerfile 以前はツール x バージョンの組み合わせで多くのイメージを管理していたが、今は基本的に全部入りがひとつ 現状問題はなさそうな雰囲気だけど、大きめなバージョンアップでいつ上げるのかが議論になりがち? 基本みんな同じ巨大なイメージを使うので、ローカルのキャッシュが効いていればすぐ実行はされる

Slide 11

Slide 11 text

‰†”–•Š ‚”š‚„„†””•„†•“‚”‡•˜‚“†”•‚„Œ–”Šˆ†—Š“Ž†•Ž…–†” 䚉 “‚…Š•Š‚˜‚š•†•–”†“”‡”š”•†Ž”Ž‚‚ˆ†•‰†Š“†—Š“Ž†• 䚉 ‰†Ĵ‚ˆ”•Š„Ž…–†‡Š†””‘†„Š‡š˜‰‚••„‰‚ˆ†Š”‰††—Š“Ž†• 䚉 PRGXOH„ŽŽ‚…•„‰†„Œ‡“‚—‚Š‚ƒ†Ž…–†”Ęĸ–Ĺ‚…Ž…–†”Ęě 䚉 ˜Ž‚ŠŠŽ‘†Ž†•‚•Š”ę ‰••‘ęĪĪŽ…–†”ė”–“„†‡“ˆ†ė†•Ī…„”Ī…–†”Ĵ‚‘†“ė‘…‡ Ɣ —–•Š‡“ŠˆŠ‚ŠŽ‘†Ž†•‚•ŠŠ„ Ɣ …–†‡Š†”˜“Š••†Š„ Ɣ „•Š—†š…†—†‘†…掂Š•‚Š†… Ɣ †””‘‘–‚“Ęƒ–•…†‡‚–•Š Ĵƒ‚”†…” Ɣ ‰••‘ęĪĪŽ…–†”ė”–“„†‡“ˆ†ė†• Ɣ …†“ŠŽ‘†Ž†•‚•ŠŠ–‚ Ɣ …–†‡Š†”˜“Š••†Š–‚“„ Ɣ „•Š—†š…†—†‘†…掂Š•‚Š†… Ɣ †—†‘†…‡“‰Š†“‚“„‰Š„‚Ž…–†” Ɣ ”•‘‘–‚“ĸƈŚŗž‡”š”•†Ž”Ĺ Ɣ ‰••‘”ęĪĪŽ…ė“†‚…•‰†…„”ėŠ ÂÈ Unlimited Data Science Libraries,One Container Image, No Installation! 
 Marcel Hild, Red Hat & Kenneth Hoste, Ghent University 11 Lmod が新しい実装とのこと。
 モジュール設定を Lua で書ける。

Slide 12

Slide 12 text

—Š“Ž†•Ž…–†”ꆙ‚Ž‘† 7KHVROXWLRQ H[DPSOHYHUVLRQ EDVKH[DPSOHFRPPDQGQRWIRXQG PRGXOHXVHDSSVPRGXOHV PRGXOHDYDLOH[DPSOH °DSSVPRGXOHV° H[DPSOH PRGXOHORDGH[DPSOH H[DPSOHYHUVLRQ •†•”‡DSSVPRGXOHVH[DPSOHOXD ORFDOURRW DSSVVRIWZDUHH[DPSOH SUHSHQGBSDWK²3$7+SDWK-RLQURRWELQ SUHSHQGBSDWK/'B/,%5$5

Slide 13

Slide 13 text

‰†”–•Š †•ġ”–”††—Š“Ž†•Ž…–†”Ĝ ľ–Ž†Ž–•†…‚•”‘‚˜•ŠŽ† š•“„‰œėś †”“‡˜ŔėŘ †”“‡˜Ŕėŗ ‘†ˆ ėėė ‚”†ŠŽ‚ˆ† •†ƒŒƒ‚”† ‚”†ŠŽ‚ˆ† •†ƒŒƒ‚”† š‚ŽŠ„‚…Šˆ 8VHU$ ”†“ ”†“” ėėė ėėė ľę†‚…Ĵš‚šĘ‚—–Ž†•‰‚•„‚ƒ†Ž–•†…”ŠŽ–•‚†–”šŠ•Ž‚š„•‚Š†“” Šˆ‰‚…†“ ÂÊ Unlimited Data Science Libraries,One Container Image, No Installation! 
 Marcel Hild, Red Hat & Kenneth Hoste, Ghent University 13 ツールがインストールされた
 読み取り専用のボリュームを実行時にマウント! 必要最低限のツールだけをイメージに含める! イメージサイズ--、イメージ数-- インタラクティブな環境ではいいけど、 バッチジョブでの再現性が気になるかもしれない 🤔 みなさんがどうされているか教えてください!!

Slide 14

Slide 14 text

@superbrothers Improving GPU Utilization 
 using Kubernetes Maulin Patel & Pradeep Venkatachalam, Google

Slide 15

Slide 15 text

@superbrothers Improving GPU Utilization using Kubernetes Maulin Patel & Pradeep Venkatachalam, Google ▶ GPU はめっちゃ⾼いリソースなので、⾼い使⽤率を⽬指したい ▶ GPU の使⽤率をどう⾼めるか、K8s で GPU は CPU と異なり単位未満の要求が認められていない ▶ 解決策として、ひとつの GPU を複数のコンテナで共有する + いくつかの⽅法があるが、このセッションでは Timesharing と Multi Instance GPUs にフォーカス ▶ Timesharing + 複数のコンテナを1つの GPU 上で動作させる。各コンテナはタイムスライスを取得する。 ▶ Multi Instance GPUs (MIGs) + A100 のような特定の NVIDIA GPU がサポートする機能 + 1つの GPU を複数のインスタンスに物理的に分離する ▶ GKE ではすでにどちらも使⽤できる 15

Slide 16

Slide 16 text

Improving GPU Utilization using Kubernetes Maulin Patel & Pradeep Venkatachalam, Google 16 GPU は CPU と異なり単位未満要求を許可していない。 つまり、GPU を 0.5 とかできない。

Slide 17

Slide 17 text

Improving GPU Utilization using Kubernetes Maulin Patel & Pradeep Venkatachalam, Google 17 複数のコンテナを1つの GPU 上で動作させる。
 各コンテナはタイムスライスを取得する。 もし1つのコンテナしか GPU を使っていなければ GPU 全体を使えるし、
 あとから増えたら公平に時間分割される。 GKE がGPU 設定はいいかんじにやってくれるそう!

Slide 18

Slide 18 text

Improving GPU Utilization using Kubernetes Maulin Patel & Pradeep Venkatachalam, Google 18 node-pool 毎に設定できるみたい ちなみにこの設定、GCP のドキュメントを検索してもヒットしない気がするんだけど、まだ隠されてる? 探し方が悪い可能性もある。

Slide 19

Slide 19 text

Improving GPU Utilization using Kubernetes Maulin Patel & Pradeep Venkatachalam, Google 19 ユーザからの使い方としては、Pod に
 指定のラベルセレクタと toleration をつけるくらい 1ノードに 10 の nvidia.com/gpu リソースがある! ノードによって nvidia.com/gpu 1つの意味が
 変わってくるのが、若干の混乱を呼びそう? しかし、これ以外良い方法がないように思う。

Slide 20

Slide 20 text

Improving GPU Utilization using Kubernetes Maulin Patel & Pradeep Venkatachalam, Google 20 すべてのプロセスは分割されたアドレス空間を取得するが、 メモリ制限がないので、OOMs が発生する。 ワークロード側が GPU メモリの使用量に
 気を使わないと、他のプロセスを巻き込む。 OOM を避けるためのいくつかの選択肢! PyTorch は 1.8.0 からできるみたい

Slide 21

Slide 21 text

Improving GPU Utilization using Kubernetes Maulin Patel & Pradeep Venkatachalam, Google 21 Timesharing と異なり、MIG は物理的に分離される!

Slide 22

Slide 22 text

Improving GPU Utilization using Kubernetes Maulin Patel & Pradeep Venkatachalam, Google 22 A100 の場合は、最大で7インスタンスまでで、
 それをどう割るかを事前に設定しておく感じ。

Slide 23

Slide 23 text

Improving GPU Utilization using Kubernetes Maulin Patel & Pradeep Venkatachalam, Google 23 デプロイの仕方は Timesharing と同様 nvidia.com/gpu 1つの大きさも同じくノードによって異なっちゃう このマニフェストをみると toleration が設定されていないが、 GCP のドキュメントをみてもどうやら MIG の場合は
 自動でノードに taint が付かない? なぜだろう。

Slide 24

Slide 24 text

Improving GPU Utilization using Kubernetes Maulin Patel & Pradeep Venkatachalam, Google 24 A100 で MIG を使いつつ、Timesharing も有効にできるっぽい。 (やるかどうかはべつにして) Timesharing の場合、空いている場合には
 使い切ってくれるのでお得感ある。 ただ、メモリ制限を事前に設定しとかないといけないので、
 有効活用できるかはわからない MIG は Timesharing と違ってリソースが物理的に分離されるので、 ワークロードが気にすることが少ない(メモリ制限も勝手にされる) ちなみに、最後まで聞いてもこの Timesharing は GCP 独自っぽいんだけど、我々が使う方法はあるんだろうか。 知ってる人がいたらおしえて!

Slide 25

Slide 25 text

஘୫ப୧౲᚟ᙖ෿௣ଞଏ଱ଛෛ଺ᢖୃଗ૴଻ଃଘ Ɣ MPXు௤ଞQSJPSJUZଟൎ᚟௣ᶰଚଇ ż ଍ଞిି଺୴୸஡୶ᒖଞଢ଼ச୦ୱ୶ᒂẠ ௝྿ጹᶍଞൎ᚟஘୫ப୧ዳᶍៗଛෘᒘ౵ ଛସ଻෺௝1SJPSJUZ෺༘ଗଞ1SFNFNQUJPOୂ᫜૶ଃଘଗ'BJSOFTTୂ࿃ᙩ ż IJHIଟTPGURVPUBଛସ଻௣ᶰ᭍྿ጯ CZFWFSQFBDFLVCFUISPUUMFS Ɣ (16୼ப୷ଛ$161PEୂᔫᱞ MPX MPXDQVଛ൅ૻ଼ଖ૴଻ᙬᚣ ż (16୼ப୷ଞ(16ૼഃ᳙ൎ᚟ଅ଼ଖ૴ଖଲ$16 .FNPSZૼ៣૴ଖ૴଻໱෶ૼ૲଻ ż $161PEૼ(161PEୂ஄஛ୱଢ଼ଅ଼଻ଘ຦଻ଞଗ$161PEଟMPXDQV MPX ଚ QSJPSJUZଛNVUBUJOHXFCIPPLଗᦰංᛶଛ༥቗ଇଖ૴଻ Ɣ *OUFSBDUJWF1PE᚟ଛ3FTPVSDF4IBSJOH/PEF UBJOUFE ୂ౩ଓଖᷡ௲᳧ᤅ ż ୧ୟ୦ஓபஙୂኟᏍଉ଻ଘ૴૶൩଺െ଺૊ ż ஔப୤ଟBOOPUBUJPOଗሗ྿ଉ଻૊NVUBUJOHXFCIPPLଗૉ Ŷ SFTPVSDFSFRVFTUଟ࿲ଅଚSFRVFTUTୂሕଔ#VSTUBCMF1PEଛდ൑༥቗ Ŷ (16ଟ$6%"@7*4*#-&@%&7*$&4BMMୂᓥം Ŷ UPMFUJPOOPEFTFMFDUPS᠙ୂᓥം PFN での GPU 使⽤率を改善する取り組み ノードの全 GPU を Pod 間で共有する! どの GPU を使うかはユーザ任せ GPU メモリを確保しっぱなしのプロセスを 一定期間で殺す等の取り組みも

Slide 26

Slide 26 text

機械学習プラットフォームエンジニア ▶ ⾃由度・拡張性・使いやすさのトレードオフが取れた⼤規模機械学習 プラットフォームの機能設計と開発 + 例: 機械学習ワークフローツール、実験管理ツール、 
 GPUやMN-Core向け統合開発環境の構築 ▶ ⼤規模機械学習プラットフォームの運⽤と運⽤改善(⾃動化等) + 例: ⾃動サーバプロビジョニング、パブリッククラウド連携による 運⽤効率化、インフラ健全性の⾃動診断と保守省⼒化 ▶ ⼤規模機械学習プラットフォーム上での計算資源 
 (GPU, MN-Coreを含む)配分の最適化 + 例: Kubernetes Schedulerの機能拡張、 
 リソース利⽤量制限拡張の開発 ▶ 最先端の分散計算基盤技術の Proof of Concept 構築及び 
 プラットフォームでの実⽤化 + 例: Kubernetes上での分散強化学習実⾏ツール We're hiring! https://www.preferred.jp/ja/careers/

Slide 27

Slide 27 text

@superbrothers Appendix ▶ Unlimited Data Science Libraries, One Container Image, No Installation! - Marcel Hild, Red Hat & Kenneth Hoste, Ghent University + https://sched.co/ytlJ ▶ Improving GPU Utilization using Kubernetes - Maulin Patel & Pradeep Venkatachalam, Google + https://sched.co/ytlt ▶ PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 ▶ オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜(2022/3/24) - YouTube 27