Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kubernetes で実現する最先端 AI プラットフォームへの挑戦 / Challenges for advanced AI Platform by Kubernetes

Mizuki Urushida
December 11, 2023
500

Kubernetes で実現する最先端 AI プラットフォームへの挑戦 / Challenges for advanced AI Platform by Kubernetes

CloudNative Days Tokyo 2023 の Keynote day1 (12/11) で発表した内容です。

Mizuki Urushida

December 11, 2023
Tweet

Transcript

  1. ・ー ・ー ・ー 1. 生成 AI と CyberAgent の取り組み 2.

    分散学習ジョブの実行・管理機構 3. 分散学習向けクラスタネットワーク 2
  2. 漆田 瑞樹 • 株式会社サイバーエージェント ◦ 2018 年度新卒入社 ◦ グループ IT

    推進本部 CIU • ML チーム所属 ◦ プライベートクラウドの ML サービス開発 ▪ 機械学習基盤 ML Platform ◦ サービスのプロダクトオーナー・開発 3
  3. 6

  4. 例: Llama2 の必要計算リソース • Meta が 2023/07 に公開した大規模言語モデル • パラメーター規模に比例して計算量が大きくなる

    9 学習時間 (A100 GPU hours) 日換算(A100 単体) 日換算(A100 x8*) Llama2 70B 1,720,320 71,680 8,960 Llama2 13B 368,640 15,360 1,920 Llama2 7B 184,320 7,680 960 https://github.com/facebookresearch/llama/blob/main/MODEL_CARD.md * NVIDIA DGX A100 640GB に乗っている GPU の基数
  5. • A100 と比較して約 6 倍の性能向上が見込める • 大規模な学習に向けてインターコネクト (ノード間 NW) も導入

    ◦ H100 80 基なら単純計算で Llama2 7B が 16 日で完了 NVIDIA H100 Tensor コア GPU の導入 11 https://resources.nvidia.com/en-us-tensor-core
  6. ジョブ サーバーレス 推論 分散学習 ジョブ Notebook 機械学習基盤 ML Platform 12

    GPU ノード CPU ノード ストレージ (NFS) Kubernetes Katib KServe Training Operator Kueue MPI Operator GPUaaS Training Prediction Distributed 合計ノード: 45 台 NVIDIA A100: 96 基 NVIDIA H100: 80 基 ストレージ: 180 TiB Kueue
  7. Distributed 14 Distributed API MPI Job 2 MPI Job 3

    MPI Job 1 Enqueue Launcher Worker Dequeue Queue Request Collect logs
  8. Distributed 15 Distributed API MPI Job 2 MPI Job 3

    MPI Job 1 Kueue Controler MPI Operator Enqueue Launcher Worker Dequeue Queue Watch Resource Check & Handling Watch (Nothing to do) Watch Watch (Nothing to do) Request Collect logs Create
  9. 弊ジョブシステムにおける要件 • 順序保証をして公平性を確保したい • クォータによって利用可能な GPU 数を制限したい • NVIDIA A100

    と NVIDIA H100 を分けて管理したい ◦ Node の Labels による区別ができる • 余っている GPU を別テナントが使えるようにしたい ◦ クォータ超過の柔軟性 16 Kueue で解決が可能
  10. 23 Distributed API MPI Job 2 MPI Job 3 MPI

    Job 1 Launcher Worker Queue for H100 user Queue for other user MPI Job 5 MPI Job 4 Launcher Worker H100 スケジューリング可 H100 スケジューリング不可 Enqueue based tenant-id
  11. Node B Node A Node A 分散学習のノード間通信 25 • 計算結果やパラメーターなどを複数ノード同士で共有

    ◦ 低レイテンシ・広帯域が必要 インターコネクト (ノード間 NW) Input Output
  12. NW トポロジー: Fat-tree (フルバイセクション) ノード間帯域: 400GbE x8 (理論値 3.2Tbps) 通信方式:

    RoCEv2 (RDMA) 26 Leaf Leaf Leaf Leaf Leaf Leaf Leaf Leaf Spine Spine Spine Spine Node Node Node Node … …
  13. NIC を Kubernetes の世界で扱う • 各 NIC を分割して Device Plugin

    を通じてリソース化 ◦ SR-IOV によって単一の NIC をホスト + 複数 Pod 間で共有 32 "nvidia-dgx-h100/nic0": "8", "nvidia-dgx-h100/nic1": "8", "nvidia-dgx-h100/nic2": "8", "nvidia-dgx-h100/nic3": "8", "nvidia-dgx-h100/nic4": "8", "nvidia-dgx-h100/nic5": "8", "nvidia-dgx-h100/nic6": "8", "nvidia-dgx-h100/nic7": "8", Node: .status.capacity NIC-0 物理 NIC 仮想 NIC 仮想 NIC 仮想 NIC 仮想 NIC 仮想 NIC 仮想 NIC 仮想 NIC 仮想 NIC SR-IOV Device Plugin NIC-7 ・ ・ ・
  14. Worker (Pod) へ全ての NIC をアタッチ • 経路選択は集団計算ライブラリ NCCL に委ねる 33

    "nvidia-dgx-h100/nic0": "8", "nvidia-dgx-h100/nic1": "8", "nvidia-dgx-h100/nic2": "8", "nvidia-dgx-h100/nic3": "8", "nvidia-dgx-h100/nic4": "8", "nvidia-dgx-h100/nic5": "8", "nvidia-dgx-h100/nic6": "8", "nvidia-dgx-h100/nic7": "8", Node: .status.capacity Launcher Worker Worker Worker MPIJob SR-IOV CNI + Multus CNI
  15. まとめ • 弊社では大規模言語モデルの開発に着手しています • AI 開発のために NVIDIA H100 を 80

    基導入しました • 分散学習向けジョブシステム Distributed を開発しました • パフォーマンス最大化のためインターコネクトを設計して Kubernetes の世界に落とし込んでいます • 現時点では性能が線形に向上することが確認できています 36