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

MLパイプラインをk8sで並列分散化するOSS "kannon"の開発

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

MLパイプラインをk8sで並列分散化するOSS "kannon"の開発

Avatar for Yutaro Oguri

Yutaro Oguri

April 17, 2023
Tweet

More Decks by Yutaro Oguri

Other Decks in Programming

Transcript

  1. 自己紹介 名前: Yutaro Oguri (Twitter: @irungo_ic ) 所属: 東京大学 電子情報工学科

    B4 興味: ML, CV, Search, MLOps, DB, …など(色々) k8s歴: よくわからないままkubectl叩く(6 months) + kannon開発(1 month) 趣味: 🎻 🍶 🍺
  2. gokartとは? - エムスリー発の機械学習パイプラインOSS - 社内ではGKEのCronJobで運用 class TaskA(gokart.TaskOnKart): ... class TaskB(gokart.TaskOnKart):

    parent_0 = gokart.TaskInstanceParameter() def requires(self): return dict(parent_0=self.parent_0) ... task_a = TaskA(param="a") task_b = TaskB(parent_0=task_a) … output = gokart.build(root) DAG ( -> means ‘requires’)
  3. kannonの使い方 class TaskA(gokart.TaskOnKart): # Change gokart.TaskOnKart -> kannon.TaskOnBullet class TaskB(kannon.TaskOnBullet):

    # Change gokart.TaskOnKart -> kannon.TaskOnBullet class TaskC(kannon.TaskOnBullet): class TaskD(gokart.TaskOnKart): Kannon(...).build(task) ここをいい感じに 分散したい...
  4. k8s的な面白さ 1. k8s in k8s - master jobがchild jobをcreate・watch 2.

    分散キャッシュ - あるJobが他のJobの結果に依存する => 共通の場所(GCS Bucket)にcache 3. 分散した複数jobの制御・管理 - Task Queueを構築し、順序制御をしつつ無駄な待ち無く分散 詳しく解説!