Slide 1

Slide 1 text

JobSet超入門 Hiroyuki Moriya

Slide 2

Slide 2 text

Self introduction
 ▶ GitHub: @Gekko0114
 ▶ Software Engineer
 ▶ 趣味でk8s関連のOSSの調査
 ▶ 技術系のイベント初登壇です


Slide 3

Slide 3 text

今日話すこと
 ▶ kubernetes-sigs/JobSetがどんなものかを簡単に紹介します
 ▶ 開発途上のOSS(version 0.2.0)で日本語資料がほとんどありません
 ▶ 今回の内容は未実装の機能も含みます
 ▶ 今後の方針によって機能が変更される可能性もあります
 
 


Slide 4

Slide 4 text

JobSet開発の背景
 ▶ k8sは、AI/ML関連のJob向けの機能開発に力を入れてこなかった
 ▶ PodとDeployment/StatefulSetのような存在がJobには無い
 ▶ AI/MLをk8s上で管理するOSSが開発されてきた (kubeflowなど)
 ▶ kubeflowでは、フレームワークで共通の機能が、重複実装されている
 


Slide 5

Slide 5 text

JobSetで何をしたい?
 ▶ 複数のJobを管理できるCRD
 ▶ フレームワーク間で共通の機能を、重複せずに実装したい
 ▶ 個別のフレームワークに必要な機能も備えたい
 
 
 
 


Slide 6

Slide 6 text

JobSetで何をしたい?(詳しく)
 ▶ 複数templateの同時実行:ML分散学習はDriverとworkerが必要
 ▶ network設定:Job間のnetworkを良い感じにしたい
 ▶ Scaling:HPAが動作してほしい
 ▶ Startup sequence:ジョブの実行順序も定義したい
 ▶ フレームワーク(PyTorch, tensorflow etc)毎に必要な設定を管理


Slide 7

Slide 7 text

ジョブの実行順序の制御とは?
 ▶ フレームワークによって、起動したいPodの順番が決まっている
 ▶ 例1: RayやSparkだと、Driverを最初に起動しないといけない
 ▶ 例2: MPIだと、Workerを最初に起動しないといけない


Slide 8

Slide 8 text

フレームワーク毎に必要な設定とは?
 ▶ kubeflowではtraining-operator等がうまくやってくれている
 ▶ 例:tensorflowのTF_CONFIG, PyTorchのinit_process_group


Slide 9

Slide 9 text

JobSetでこれらの問題を解決しよう!
 ▶ kubeflowがうまくやってる点(フレームワーク毎の対応)もなんとかする


Slide 10

Slide 10 text

JobSetでカバーする機能
 ▶ 複数templateの同時実行が可能
 ▶ network設定:headless serviceが良い感じにしてくれる
 ▶ Scaling:HPAがちゃんと動く
 ▶ Startup sequence:ジョブの実行順を定義可能予定
 ▶ JobSetConfig:フレームワーク毎に設定ファイルを用意する予定
 など


Slide 11

Slide 11 text

Yaml
 ▶ replicatedJobsにJob を書く


Slide 12

Slide 12 text

まとめ
 ▶ JobSetの開発が進めば、ML/AI workflowが簡易化されるかも
 ▶ 開発途上なのでcontribution chance
 ▶ コメントあればお願いします!
 
 


Slide 13

Slide 13 text

ご清聴ありがとうございました!
 ▶ 参考資料
 ▶ JobSetAPI https://docs.google.com/document/d/1WqjSeFOrMneGS1wlC5cmhtHrpF2rErh-EIfkVN7rBrA/edit 
 ▶ Repo
 https://github.com/kubernetes-sigs/jobset 
 
 


Slide 14

Slide 14 text

参考:TFJob
 ▶ tf.distributeによる分散学習をサポート(参考)
 ▶ TF_CONFIG (chief, worker, ps, evaluator)の設定など


Slide 15

Slide 15 text

参考:PyTorchJob
 ▶ DataParallel, DistributedDataParallel, DistributedElastic
 ▶ 各分散処理向けの実装が必要
 ▶ 例1: DistributedDataParallel実行のためのinit_process_group
 ▶ 例2: DistributedElasticのためのrendezvous