カウシェに AI チームをつくりました
こんにちは、カウシェで ML Engineer をしている tatsuya(白川)です。
3月から AI チームという組織横断で ML/DS 的なことを行うチームを作り、Platform チームと AI チームを兼任しています。AI チームは現在自分ひとりです。
今回はなぜAI チームを作ったのか、そして AI チームは何をどう行っていくつもりなのかについて、考えをまとめてみたいと思います。
Team Topologies における機械学習チーム
カウシェでは Team Topologies を参考に組織設計について議論されることが多いです。
Team Topologies では、ビジネス/事業を推進する主体である Stream-aligned チームとそのチームの活動を補佐する下記のチームが定義されています。
Enabling チーム … Stream-aligned チームが新しい技術やプラクティスを獲得できるように補佐するチーム
Complicated-subsystem チーム … システムの中でスペシャリストの知識が必要となるパーツを開発・保守し、Stream-aligned チームの認知負荷を下げるチーム
Platform チーム … Stream−aligned チームが自律的に仕事をできるように、各種基盤や内部サービスの提供を行い、Stream-aligned チームの認知負荷を下げるチーム
機械学習系のコンポーネント開発をするチームは、Complicated-subsystem チームとして扱われることが多いと思います。機械学習基盤に関しては、Platform チームの成果物かもしれません。
なぜカウシェに AI チームを作ったか
私が入社した当時(2022年11月)、チーム横断の開発チームは Platform チームしかなかったため、私も Platform チームのみに所属して活動していました。
しかし、カウシェでは機械学習系の機能の導入は初めてだったため、Team Topologies における Platform チームの範疇を超えた、下記のような立ち回りが必要でした。
機械学習(もっと広く言えば AI)で何ができるかの布教活動(Personalizeと言わずに1億人1億商品棚と言ってみたり)
機械学習がなぜ必要なのかの言語化(Personalize はルールベースだと限界があるなど)
機械学習観点からの課題・伸びしろ発掘活動
Stream-aligned チーム向けの機械学習系機能の実装
Stream-aligned チーム向けの機械学習・自然言語処理などの技術を駆使した提案や PoC(「やってみた」活動)
各Stream-aligned チームにおける機械学習系機能導入スケジュールの調整作業(機能の実装者は自分ひとりなので…)
AI を前提としたデータ戦略の構想
…
一方で、機械学習基盤も Python での開発環境もなかったので、Platform チームとして構築・整備もしていました。
※ これに加えて、データ基盤の整備も必要だったのでそちらも推進していますが、完全にキャパオーバーですしそんなに自分の expertise がある領域ではないので、どなたかカウシェのデータ基盤をやっつけてくれる方を募集しています。検索基盤もリプレイスするつもりなので、検索に興味のある方なら更に楽しめると思います。
チームというものは、組織全体の成果を最大化するために設計されているものだと思っています。そのため必要なら個人で勝手に動き回ればいいやと思い、最初は実際にそうして活動していたのですが、だんだん具合の悪さを感じてきたので AI チームとして分離することに決めました。主に下記が理由です。
活動の主従関係で言えば、Platform チーム外の活動のほうが主で、Platform チームでの活動はそれに必要な基盤や環境を作るというような従属した作業であることが多かった(機械学習機能を実装したいので機械学習基盤とデータ基盤と Python 環境を作るなど)。
カウシェではチーム単位で OKR の設計をしているのですが、Platform チームに Platform チーム的でない OKR を入れづらく、OKR に含まれない活動が多くなりがちだった。結果、AI 系の活動の可視化をしづらかった。
Platform チームは組織の生産性にフォーカスしていますが、より直接的な組織のアウトカムに直結した活動を目標として追い、組織への意志込めをしたかった。
組織全体に AI 布教をするにあたって、チームとしてくくりだしたほうが認知を上げやすい。
Platform チームの ML 基盤開発活動は、ML 開発者が知っていれば良く、組織全体のアウトカムにマインドを集中させたかった(すでに情報が溢れているので組織の認知負荷を減らしたい)。
ML という How によった表現よりも AI という成果物によった表現にしたかった(AI という語のナンパ感は減ってきましたね)。
結局、いまは Platform チームと AI チームの二人格をもって活動しています。
AI チームは AI の市場づくりをする
現状では、Platform チームと AI チームでの二足のわらじ生活は割とうまく回っている気がします。ただし、これは自分が個人単位で動き回っているからだとも思っています。組織としての成長を考えた場合には、まずは各チームに AI の芽を生やして、継続的に成長させていくニーズを作ることが先決と思っています。
このあたり、自分が好きな「繁栄のパラドクス」に通じるものがあるかもしれません。まずは自発的に成長していくための市場を作ることが重要だと思っています。まだまだこれからですが、カウシェにはその市場を作る大きなポテンシャルがあると信じています。
(社内に)AI 市場が出来上がった後はまた AI の役回りが変わってくると思うので、そうしたらまたチームを再編すれば良いのかなと思っています。その時までにはもっと人が増えているといいな。
AI チームは芋づる式 AI 開発をする
AI チームとして、カウシェ内に AI 市場を作っていくにあたっては、
AI 市場の発見 … どんな成果を提供するとどんなアウトカムが生まれそうかという予兆発見
AI 市場の自発的成長の促進 … AI 成果物のアウトカムと伸びしろの証明
を行う必要があります。その実現には機動力が必要なため、AI チームとしては「芋づる式 AI 開発」を掲げて開発を行っていくことにしました。
芋づる式 AI 開発においては、いま自分がある市場向けに作る機能がその市場と他の市場にどのような副産物をもたらし得るかを意識して開発をします。
例えば、現在パーソナライズされたレコメンド機能を実装しているのですが、その設計も芋づる式を意識しました。レコメンド機能の詳細についてはまた別記事で公開予定なのですが、以下の 2 点を意識しています。
将来に渡ってなるべく共通化しやすい仕組みを使うこと。たとえばカウシェでは多くの機械学習系の機能をベクトル検索に寄せようと考えています。これにより、レコメンド実装の副産物として、関連商品の提示や行動傾向が類似しているユーザーの抽出もできるようになり、市場へのリーチが拡がります。
タスクに対してモジュラーな構成であること。カウシェの商品にはほぼ同一の商品などもあるので、同一視しないとレコメンドに同じような商品が並びがちです。そのため、類似商品の名寄せ機能を作りました。このようにタスクごとに機能をわけて作ることで、それら個別機能を市場にばらまくことができます。これにより早期にフィードバックをもらえたり、組織に安心感と期待をもたせることができます。
息長く潜水してポッと顔をだしてドーンとやるような開発をするよりも、ひたすら市場に対してコミュニケーションをとる方法を取る方が自他ともに不安にならずにすんで良いと考えています。機械学習の開発は重たく時間がかかりがちですし、作ってもどんな結果を出力するのかコントロールしにくいので。。。
芋づる式に開発できる方法を設計して実践するには知識や経験や将来を読む力が必要になるので、やりがいを感じます。
さいごに
ChatGPT のように超強力な新しい技術が世の中に投下されて、機械学習エンジニアはこれからどうなっていくのだろうと多少の不安は覚えはします。
ただ、カウシェのような独自性の強い Social EC 領域ではサービスに最適化させた開発や新しい体験の創出が必要で、むしろ実現できるものが増えそうなことにワクワクしています。
まだまだ世の中的に未開拓なソーシャル EC 体験は無数にあると思うので、AI チームがそれを開拓していけたら良いなと思っています。
最後に恒例ですが、カウシェでは採用を行っています。とくに AI チームに関わるところでいうと、一人目のデータエンジニアを探しています。新しいユーザー体験を実現できるデータ体験を一緒に作りませんか!
カウシェにご興味を持った方がいらっしゃいましたら Twitter @s_tat1204 もしくは YOUTRUSTのカジュアル面談 などでお気軽にお声がけください。