こんにちは。AI・機械学習チーム(以下AIチーム)の池嶋(@mski_iksm)です。
仕事で、誰か一人がやればいい作業を、気がついたら同僚と同じタイミングでやっていた、という経験はありませんか?
せっかく頑張って作った機能が実は被っていてムダになってしまった。。。というのは誰もが悲しいものです。
そうならないように作業チケットを切るなどしてタスクを中央管理する方法もありますが、もっとゆるくやりたいこともあるかと思います。
そういうときは一言「この作業私がやりますね!」と声掛けをすれば済みますね。
以前のブログで、私たちはgokartを使ったMLパイプラインの効率化について掘り下げました。
具体的には、「すでに完了したタスクをスキップする」と「タスクの実行順序をできるだけランダムにする」という2つの戦略を紹介し、これによりworker間で重複するタスクの発生を減らす方法を提案しました。
www.m3tech.blog
しかし、このアプローチにも限界がありました。
他workerで完了しているタスクは検知できるのですが、現在実行中のタスクを検知する方法がなく、結果的に重複して作業するケースがあったというものです。
この課題に対処するため、本記事では、異なるworkerが同一のタスクを同時に実行しないようにする新機能を紹介します。
ちょうど人間でいう「この作業私がやりますね!」の声掛けに相当する機能ですね*1。
この新機能は、すでに他のworkerが取り組んでいるタスクを認識し、重複しないようにタスクの実行順を制御します。
結果的に、複数のworkerによる作業分担が実現し、パイプラインの全体的な効率が向上しました。
この記事では、この新機能が有効なシチュエーションや使い方、仕組みについて解説します。
続きを読む