Interview
メルカリのMLチームは組織課題をどう解決してきた?エンジニアが社内横断Guildを立ち上げた話
現在、メルカリのML組織には、多くのMLエンジニアが所属しています。しかし、MLエンジニアは同一部署に所属しているわけではなく、社内の様々な部署に分散して所属し、それぞれのチームが直面している課題に対して開発を推進しています。
しかし、ML組織の分散・拡大にともない、メルカリのMLチームは、ナレッジシェアやチーム間連携がしづらいといった課題を抱えていました。そうした壁を超えるべく、2022年より、現場のエンジニアメンバーによる旗振りで、「Mercari AI/ML Guild(以下、ML Guild)」が設立。ML Guildは、MLエンジニアの情報共有を目的に、月に1回必ず継続して運営されています。
現場のエンジニアのアイディアにより取り組み開始し、その後定期的な開催を行っているML Guildについて、その設立と運営をリードしてきたエンジニアAbhinav Kumar ・Paul Willot・ 西岡 祐輔の3名に、設立の背景や、組織上の課題がML Guildによってどう変化してきたか、話を聞きました。
プロフィール
Abhinav Kumar (@Abhinav)
2018年にML Engineerとしてメルカリに新卒入社。入社後、画像検索チームに所属し、その後Data Science Backendチームに異動し、チームのEM(Engineering Manager)) / TechLeadを担当し、パーソナライゼーション機能の開発を推進。直近で、広告エンジニアリングチームに加わり、メルカリ広告インフラストラクチャの開発を行う。ML とバックエンドへの関心に加えて、チーム効率化にも取り組む。
Paul Willot (@meatboy)
2021年メルカリに入社。DeepLearningに専門性を持つ。モデリングや大規模データの処理から、ランタイムの最適化やクラスタ展開まで、MLスタック全般の経験を持ち、研究と開発間のギャップを埋めている。メルカリ入社前は、FinTech企業で大規模なリアルタイム予測モデルの開発や、日本の大企業に対するコンサルティングを担当していた。
西岡 祐輔 | Yusuke Nishioka (@ysk24ok )
インターネット広告会社で広告配信アルゴリズムの改善やデータ基盤の立ち上げ、AIスタートアップで音声認識プロダクトの開発などを経て、2021年にメルペイに入社。2022年にメルカリに異動し、現在はML Platformの機能拡張や保守に携わる。
ーまず、みなさんの自己紹介と、メルカリで担当している仕事について教えてください。
Abhinav:メルカリには5年半前に、新卒として入社しました。最初の2年は商品画像検索のMLチームで働いた後、TnS(Trust & Safety)チームに異動。その頃、PMと一緒にデータ・サイエンス・バックエンドチームの立ち上げを経て、EM(Engineering Manager))を務めました。現在は、Ads Engineeringという新しいチームに所属しています。
meatboy : MLエンジニアとしてメルカリに入社し、もうすぐ3年になります。入社以来ずっと、出品のプロジェクトに携わっています。およそ1年半の間、私はチームで働き、検索エンジンを用い、精進と買い手のマッチングを容易にするための取り組みを行ってきました。
ysk24ok:私は2021年にメルペイに入社し、2022年にメルカリへ異動。現在はMLプラットフォームのチームに所属し、MLエンジニアの業務を効率化するためのインフラやソリューションを提供しています。
ー「Mercari AI/ML Guild(以下、ML Guild)」の設立について詳しく教えてください。
Abhinav:ML Guildは2022年11月に始まりました。私がデータサイエンスチームのEMを務めていた時に、MLチームのEMである梅澤さん(@umechan)に相談し、ML Guildを実験的に開始しました。
新しい組織構造に組織体制が変化し、以前はMLチームは1つのチームでしたが、キャンプ体制(Camp System)という、4~5つの目的に応じた組織が編成されました。MLエンジニアは各キャンプに所属し、現在に至るまで、組織的には分散した状況が続いています。
以前はMLメンバー間でも多くのコミュニケーションが生まれていたのですが、キャンプ体制後に入社したメンバーも増え、チームを越えたコミュニケーションが生まれづらい状況になっていきました。事前アンケートを実施したところ「現在のMLチーム全体のコミュニケーション構造に満足していない」というメンバーが8割もいたのです。そこで、『Mercari AI/ML Guild』というコンセプトを立ち上げ、チーム間のコミュニティ・トラストを作ることにしました。まずは、各チームと、そのメンバーを知ることを目的としました。
また、ML Guildはナレッジ共有の促進も目的としています。MLのプロジェクトは、開始から実行までの時間が非常に長いため、フィードバックを共有し、プロジェクトで起こっていることを共有し、ベストプラクティスを共有するためのプラットフォームが必要なことは明らかでした。新しく入ったMLのメンバーは、どこで、誰に、何を聞けばいいのか、不明瞭な状態だったんですよね。
meatboy : ML Guild以前にも、ディスカッションのためのグループは複数存在していましたが、それらも分散しており、1つの大きなグループではありませんでした。MLの学術研究や、検索等、特定のトピックに関するものが多く、包括的な取り組みに関して議論ができる場はありませんでした。ML Guildでは、トピックを特定のものに絞ることはせず、機械学習の様々な分野の知見を共有し、最新の情報を得る機会を提供しています。
ーML Guildは、どうやって運営しているのですか?
Abhinav:ML Guildはここにいる3名をはじめ、複数のメンバーで共同運営されていますが、実は、貢献したい人がボランティアとして参加してくれています。現在の構成は、各キャンプを代表して数名のリーダーがおり、そのリーダーが組織としての目標設定および、ML Guildのエフォートの方針を決定しています。
meatboy : 現時点では各運営メンバーの責任内容は同一です。つまり、全員がメインオーガナイザーです。例えば、次のイベントのスケジューリングは誰がやるかを持ち回りで決めています。例えば、チームビルディングや雑談のためのイベントなどのイベントを開催することもあります。
Abhinav:基本的にはQごとに3つの活動を交互に行っています。Qの1回目は各チームのOKR共有、2回目のセッションでは、プロジェクトやベストプラクティスの共有・アナウンスメント、そして3回目は、チームビルディングのための企画を行っています。また @meatboy が3ヶ月ごとにチームビルディングのパーティーを企画し、オフラインで集まるような機会も設けています。
ysk24ok:例えば、プラットフォームチームが何か新しいソリューションを開発してそれを各チームに使ってもらうためには、各チームの既存の仕組みからマイグレーションしてもらう必要がある際など、アナウンスの場としても機能しています。
ーML Guildを設立したこの数年間で、組織上の課題は解決されたのでしょうか?
meatboy:いくつかの問題に関しては明らかに改善してきています。もちろん、もっと緊密な協力が必要な場面はありますし、まだまだ改善したいポイントもありますが、当初私たちが抱いていた課題に関しては、ML Guildは本当に役に立ちました。定期的に他のチームでも起こっていることを知ることができるのは、とてもいいことだと思います。
例えば、個人的な体験として、ML Guildを通じてあるチームがすでに同様のプロジェクトに取り組んでいることを知り、彼らに話を聞きに行って、モデルや知識などを交換することができました。このように、ML Guildを通じてシナジーが生まれた経験が何度もありました。
ーMLエンジニアとして、ML Guildの取り組みを通じて変化があれば教えてください。
meatboy : 私は社内のプラットフォームチームとも定期的にコミュニケーションを取り合っていますが、多くのメンバーにとって、そうした機会は少ないです。しかし、我々はしばしば新しいサービスを開発するため、既存のシステムを適応させる必要があります。あなたがすでに同様の改修を行ったことを知っている場合や、誰に尋ねるべきか知っている場合、これはとても役に立ちます。私はそれがメルカリのMLメンバーの多くを助けたと思います。
そして、エンジニア同士の直接の交流も盛んです。私は、入社当時出品のプロジェクトを担当していましたが、その後サーチ部門に移りました。出品のサイズについて疑問を持つことが多かったのですが、ML Guild後は、過去に担当したことがあるエンジニアと1on1で知識を共有することができ、とても役に立ちました。
Abhinav:この1年間、1回のセッションに平均25人以上のMLエンジニアが参加しています。また、一度セッションに参加した人は、次のセッションにも参加しています。一般的に、このような大規模なセッションを開催する場合、継続率は基本的に低くなります。個人的な意見ですが、このように定着率を維持できている要因として、ML Guildの頻度が挙げられます。現在は月に1回という頻度のため、忙しいメンバーもリラックスして参加することができているのかなと感じます。
2つ目は、ML Guildの開催をスキップせず、毎月開催を継続して行っています。不定期ではないことで、毎月行われているイベントだと認識してもらえる。そして、最も重要なことですが、ML GuildはEMではなく、現場のMLエンジニアが主導しています。
私がメルカリに入社した当時、同じようなコンセプトで、情報共有のための会議がありましたが、そのほとんどはEMが主導していました。しかし、ML Guildでは、エンジニアは自分の担当したプロジェクトと、そこで得られたインサイトを共有する機会がある。また、そうした発表を通じて、多くの人と話すことができるので、コラボレーションが生まれていると思います。
ysk24ok : プラットフォーム・エンジニアとして、私たちは時々、将来のコラボレーションについて、ディスカッションのための場を設けています。そうした際に、もし私が誰とも面識がないチームとの間で1から会議体を設定するのはハードルがあると思うのですが、ML Guildのおかげで、各チームのメンバーを知る機会が持てていて、助かっています。
ーML Guildとして、今後のビジョンがあれば教えてください。
Abhinav:短期的な目標をいくつか挙げますと、私たちのペースを維持し、継続参加を維持し、この取り組みを継続していきたいと思っています。中長期的な目標は、ML Guildの場から、新しいビジネス・プロジェクトを生み出すことです。
meatboy :ML Guildから、チーム横断的なプロジェクトを組成し、よりビジネスにインパクトを与えたり、外部のコンペティションに参加したりすることができると考えています。将来的にはプラットフォームとなることを目指せるかもしれない。
ysk24ok : そうですね。これは、短期的な目標か長期的な目標かはわかりませんが、チームビルディングのセッションでは、特定のメンバーだけが参加しましたが、参加しないメンバーもいました。現在のML Guildも同様で、出席はしているが、自分たちのプロジェクトについて発表しないメンバーもいます。今後どのように変化していくか見て行きたいです。
ーML Guildを運営する上で、当初は苦労された点はありましたか?
Abhinav:私は、最初からこの取り組みを支えてくれた@meatboy と @ysk24ok のサポートに本当に感謝しています。特に最初に苦労したのは信頼関係でした。
なぜこのような新しいセッションを行うのか?なぜ必要なのか?という点が浸透しておらず、みんな自分の仕事に忙殺されているため、なかなか参加してもらえませんでした。そのため、まず各MLチームのEMに声をかけて、ML Guildの提案に対するフィードバックをもらいました。こうして少しずつ信頼関係を築くことで、EMから各チームのメンバーにも参加を呼びかけてもらえるようになりました。
meatboy : 当初は、メンバーに参加してもらうためにたくさんの告知をしなければならないことも多かったですね。そうした地道な取り組みを経て、参加状況も改善してきました。
ML Guildの運営を通じて私たちが得た学びのひとつは、チームビルディングを目的としたイベントと、有益な知見共有のイベントの適切なバランスを保つことです。
そして、「このミーティングの目的は何か?」と、問い続ける必要があると思います。今後もみんなの時間を正当化できるよう、有益なものにし続ける必要があると感じています。
Adbinav: 今後、さらに新しいメンバーにも入ってほしいですね。ML Guildは自主的に運営されているため、ローテーションで行いつつも、フレッシュな視点でこのスキルを維持できるように、新しいメンバーを迎えたいと考えています。