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

AI を支えるクラウドネイティブエコシステム

Avatar for Preferred Networks Preferred Networks PRO
October 13, 2026
10

AI を支えるクラウドネイティブエコシステム

Cloud Native Community Japan - AI Infra Meetup #1 での講演「AI を支えるクラウドネイティブエコシステム」の発表資料です。

イベントサイト: https://ocgroups.dev/cncf/group/bqd97by/event/7fu3gfg

Avatar for Preferred Networks

Preferred Networks PRO

October 13, 2026

Transcript

  1. 背景 | AI ワークロード 従来のワークロード 一般的なワークロード AI ワークロード ウェブサービス 推論サービス

    バッチ処理 学習ジョブ 従来とは性質の異なるワークロードを Kubernetes に載せたい 2
  2. 背景 | 共通していること スケジューリング サービング ワークロードをどこに置く? リクエストをどこに送る? ノード ワークロード ノード

    ワークロード ノード ワークロード 「何を・どこに割り当てる?」が様々なレイヤーに現れる 5 リクエスト
  3. Scheduling | ワークロード全体を扱う必要性 従来のワークロード AI ワークロード どこでも 同じ Rack /

    Block に配置したい Pod Rack Block ワークロードやトポロジーを俯瞰してうまく配置したい 8
  4. Scheduling | 誰が何を決める? 1 2 3 4 ワークロードをどう表現する? 構成, 依存関係,

    … JobSet, LWS, Kubeflow Trainer, KubeRay どれを実行する? クォータ, 公平制御, 同時実行制約, … Kueue, Volcano, KAI Scheduler どこで実行する? 空き容量, トポロジー, … kube-scheduler どのデバイスを使う? GPUモデル, メモリ, … device plugin, DRA 9
  5. Scheduling | ワークロードをどう表現するか 様々な枠組みがある JobSet 異なる設定の 複数 Job をまとめる Kubernetes

    本体 • Job, Deployment, StatefulSet kubernetes-sigs • JobSet, LeaderWorkerSet (LWS) ◦ JobSet: 分散学習ジョブ向け ◦ LWS: 分散推論サービス向け サードパーティー • • Kubeflow Trainer, KubeRay より抽象的なワークロードを提供 [出典] https://jobset.sigs.k8s.io/docs/overview/ 10
  6. Scheduling | どれを実行するか どのワークロードを実行するかを決める kubernetes-sigs • Kueue サードパーティー • Volcano

    • KAI Scheduler キューイング・クォータ管理・公平制御・Gang Scheduling などを提供する 11
  7. [Note] Gang Scheduling ワークロードに属する Pod を 一括 でスケジュールする仕組み • all-or-nothing

    などと呼ばれることもある ワークロード A pod ノード ワークロード B pod ノード pod pod Gang Scheduling がないと競合してしまうケース 12 pod が揃わないと 実行できない
  8. Scheduling | レイヤーについて Kueue, Volcano, KAI Scheduler と kube-scheduler の境界は曖昧になっている

    Kueue, Volcano, KAI Scheduler • 配置先を選ぶ機能も持つ ◦ ◦ [Kueue] node selector を付与する (binding は kube-scheduler が行う) [Volcano, KAI Scheduler] カスタムスケジューラーが Pod を Node へ bind kube-scheduler • workload-aware scheduling (WAS) として Kueue 等の一部機能を取り込む ◦ gang scheduling (KEP-4671) ◦ workload-aware preemption (KEP-5710) ◦ topology-aware scheduling (KEP-5732, KEP-6012) 14
  9. [Note] Topology-Aware Scheduling (TAS) トポロジー階層や空き容量などを考慮して配置を決める機能のこと Rack, Block, Leaf, Spine, DataCenter,

    … kube-scheduler TAS • 複数 Pod を同一ドメイン内に配置する (KEP-5732) • 複数 PodGroup を同一ドメイン内に配置する (KEP-6012) Kueue TAS (Kueue KEP-2724) • クォータに加えてトポロジーやノードの空きなどを見て配置を決める • node selector を通して配置先を kube-scheduler に伝える そのほか • pod affinity なども広義の TAS と言われる (表現能力は限定的) 15
  10. Scheduling | どのデバイスを使うか アクセラレーターをより柔軟に要求する仕組みを提供する nvidia.com/gpu, … device plugin • GPU

    などを Kubernetes 拡張リソース として扱えるようにする ResourceClaim, ResouceSlice, … dynamic resource allocation (DRA) • GPU の種類やメモリ容量などの細かい条件を Kubernetes API として表現できるようにする ◦ 例: 特定サイズのメモリを持つ GPU を要求する kube-scheduler, Kueue などがこれらの情報を使ってスケジューリングする 16
  11. Scheduling | (再掲) 誰が何を決める? 1 2 3 4 ワークロードをどう表現する? 構成,

    依存関係, … JobSet, LWS, Kubeflow Trainer, KubeRay どれを実行する? クォータ, 公平制御, 同時実行制約, … Kueue, Volcano, KAI Scheduler どこで実行する? 空き容量, トポロジー, … kube-scheduler どのデバイスを使う? GPUモデル, メモリ, … device plugin, DRA 17
  12. Serving | リクエスト送信先の決め方 従来のワークロード AI ワークロード サーバー サーバー リクエスト リクエスト

    ・Round Robin ・Least Connection ・KV Cache ・Queue Depth リクエストと推論サーバーの状態を見て送信先を決めたい 19
  13. Serving | 誰が何を決める? 1 2 3 サービス全体をどう構成する? KServe, … 今回は割愛

    どのバックエンドに送る? 推論プール, キャッシュ, キュー, … Gateway API, Inference Extension, EPP, … リクエストをどう捌く? vLLM, SGLang, … 今回は割愛 20
  14. Serving | どのバックエンドに送るか ルーティングまわりは Kubernetes での標準化が進んでいる GatewayClass, Gateway, HTTPRoute, GRPCRoute,

    … Gateway API • ルーティングのための API を提供する Gateway API Inference Extension (GAIE) • Gateway API に対して推論サービス向け拡張を提供する • InferencePool ◦ 推論サーバーをまとめる Service のようなリソース ◦ endpoint picker (EPP) と連携してエンドポイントを選択できる 21
  15. Serving | どのバックエンドに送るか Gateway 通常リクエスト Service Pod Pod InferencePool 推論リクエスト

    Pod Pod 状態確認 エンドポイント 問い合わせ endpoint picker 22 endpointPickerRef で指定
  16. Serving | どのバックエンドに送るか API に従った実装がたくさんあるので要件に合わせて選ぶ Gateway API • 実装がたくさんある ◦

    Istio, Envoy Gateway, … Gateway API Inference Extension (GAIE) / endpoint picker (EPP) • 実装がたくさんある ◦ GAIE: Istio, Agent Router (旧 Envoy AI Gateway), … ◦ EPP: llm-d Router, … 23
  17. Serving | (再掲) 誰が何を決める? 1 2 3 サービス全体をどう構成する? KServe, …

    今回は割愛 どのバックエンドに送る? 推論プール, キャッシュ, キュー, … Gateway API, Inference Extension, EPP, … リクエストをどう捌く? vLLM, SGLang, … 今回は割愛 24
  18. Preferred Networks の社内基盤 マネージド Kubernetes クラスタを社内に提供している 特徴 • マルチテナント ◦

    社内の様々なプロジェクトが利用している • 必要なアドオンはインフラチームが提供 ◦ ユーザーが CRD やコントローラーを導入することはできない ◦ インフラチームが考えるベストプラクティスに従う 26
  19. Scheduling ワークロード表現 • 長らく pfn-scheduler という内製ス ケジューラーを使っていた ◦ クォータ管理 ◦

    gang scheduling JobSet, ParallelJob (内製), Argo Workflow, … 実行許可 Kueue • 最近の動向を見て kube-scheduler + Kueue へ移 行を進めている ◦ エコシステムの充実で 置き換えが見えてきた ◦ gang scheduling 移行が課題 配置先選択 pfn-scheduler (内製) デバイス選択 device plugin 27
  20. Scheduling | Kueue 主にクォータ管理に利用している • プロジェクト・ユーザーごとに GPU クォータを割り当て • 余っている

    GPU は低優先度で利用できる (足りなくなれば preempt) org-pfn--project-x 申請制で GPU を配分 org-pfn--alice 個人向け・自動作成 high 割当量まで org 共有 high GPU 1 枚 low 28 全 namespace から 投入できる 余りを借用
  21. Serving サービス構成 • Ingress → Gateway API の移行を 進めている N/A

    ルーティング • Envoy Gateway + Agent Router を試験導入中 Envoy Gateway, Agent Router, (llm-d Router) • 社内では vLLM が比較的選択され ている ◦ このレイヤーはユーザー権限 で選択できる モデルサービング (vLLM) 29
  22. Serving | Gateway API ユーザーが HTTPRoute, GRPCRoute を作成するとインターネットからアクセス 可能になる仕組みを Envoy

    Gateway ベースで構築している 要件が小さいプロジェクト • クラスタが提供するスタックに従う ◦ Envoy Gateway + Agent Router (Gateway API Inference Extension) + llm-d Router (EPP) ◦ ユーザーは InferencePool と vLLM (モデルサーバー) を用意する 細かく制御したいプロジェクト • Envoy Gateway からプロジェクト独自のルーターへリクエストを送る 30
  23. まとめ • AI インフラでは割り当て問題がさまざまな場所に現れる • 「誰が・何を・どこへ割り当てる?」に注目すると見通しが良い スケジューリング 1 2 3

    4 サービング ワークロードをどう表現する? 構成, 依存関係 , … JobSet, LWS, Kubeflow Trainer, KubeRay どれを実行する? クォータ , 公平制御 , 同時実行制約 , … Kueue, Volcano, KAI Scheduler どこで実行する? 空き容量 , トポロジー , … kube-scheduler どのデバイスを使う? 1 2 3 GPUモデル , メモリ, … device plugin, DRA 32 サービス全体をどう構成する? KServe, … どのバックエンドに送る? 推論プール , キャッシュ , キュー , … Gateway API, Inference Extension, EPP, … リクエストをどう捌く? vLLM, SGLang, …
  24. まとめ | Scheduling 1 2 3 4 ワークロードをどう表現する? 構成, 依存関係,

    … JobSet, LWS, Kubeflow Trainer, KubeRay どれを実行する? クォータ, 公平制御, 同時実行制約, … Kueue, Volcano, KAI Scheduler どこで実行する? 空き容量, トポロジー, … kube-scheduler どのデバイスを使う? GPUモデル, メモリ, … device plugin, DRA 33
  25. まとめ | Serving 1 2 3 サービス全体をどう構成する? KServe, … どのバックエンドに送る?

    推論プール, キャッシュ, キュー, … Gateway API, Inference Extension, EPP, … リクエストをどう捌く? vLLM, SGLang, … 34