生成AIハッカソンに参加しました

2024-03-25

はじめまして。2024 年 2 月に Belong に入社しましたkoboriと申します。データプラットフォームチームに所属するソフトウェアエンジニアです。

3 月 8 日〜22 日の 2 週間にかけて開催されたJagu'e'r生成 AI ハッカソンに参加してみたので、今回はその雰囲気をまとめています。私自身ハッカソンのような場はかなり苦手なのですが、意外と気軽に参加できるので、参加のきっかけにしてもらえればよいなと思います。

まず、Jagu'e'r (Japan Google Cloud Usergroup for Enterprise) というのは、Google Cloud ユーザやパートナーの企業が情報交換を行うコミュニティです。参加には自分の所属企業が Google Cloud と NDA を締結していることが条件となっています。JAWS-UG は知っていたのですが、Belong に入社して初めてJagu'e'rという存在を知りました。2020 年 11 月に立ち上げられた比較的新しいコミュニティのようです。現在私も入会しており、様々分科会がある中で AI/ML 分科会とデータ利活用分科会に参加しています。

今回は小売分科会と AI/ML 分科会共催の生成 AI ハッカソンに参加しました。「小売と生成 AI」の融合をテーマにしたハッカソンで、2 週間にわたってオンラインで開催されました。最近はあまり勉強会や LT 会など外部のイベントに参加できていなかったのですが、久しぶりに何か参加してみようかなという軽い気持ちで参加を決めました。生成 AI が取り沙汰されて久しいものの、私自身あまり活用できておらず、活用を考えるきっかけになればなどと思いました。

ハッカソンの流れ

事前勉強会をキックオフとし、2 週間の間にチームごとにアイディアソンと開発を行い、2 週間後の最終発表の場で評価を行うという流れでした。

事前勉強会

事前勉強会ではQwiklabsを用いて、Vertex AI Studio のハンズオンを行いました。 Qwiklabsは一時的に Google Cloud のプロジェクトとユーザアカウントが払い出され、実際の Cloud 環境上でハンズオンができるサービスです。制限時間内にハンズオンを進めていくのですが、課金自体は発生するものの、一定時間が経つとリソースが自動で削除されるので、作成したリソースを削除する手間がかかりません。因みにドメイン名を間違えてキウイラボに入ると、架空請求のようなサイトに繋がるのでお気をつけください。(URL を直打ちすることはなかなかないとは思いますが、、)

今回は各参加者にQwiklabsのアカウントを用意いただいており、Vertex AI StudioVertex AI PaLM APIのハンズオンが提供されていました。Vertex AI Studio の使い方とプロンプトデザインについて簡単に解説されたハンズオンです。

プロンプトデザインというのは、ChatGPT や Gemini のような生成 AI から意図通りのレスポンスが得られるようにプロンプトを設計することのようです。Google 検索が上手い人がいるように、プロンプト設計の巧拙が生成 AI の活用に大きく関わってきます。今回のハンズオンでは 3 つほどテクニックが紹介されていました。少しだけ紹介します。

1. Zero Shot Prompt

最も広く行われている方法だと思います。モデルに対して、タスクの説明と質問を投げかけるプロンプトのみを与えてレスポンスを得る最もシンプルな方法です。

2. One Shot Prompt

モデルに対して、タスクの説明と質問に加え、望ましいアウトプットを 1 つ与えてレスポンスをコントロールする方法です。Zero Shot では望んだレスポンスが得られない場合に活用できます。例えば、「草の色は?」という質問に対して「」という解答例を与えると、質問で与えたものの色を答えてくれるようになります。

試しに「花の色は?」という質問の解答例として、小野小町の歌「花の色は 移りにけりな いたづらに わが身世にふる ながめせしまに」をアウトプットの例として与えてみました。すると下記のように短歌を返してくれるようになりました。

inputoutput
草の色は?草の色は しのびてりしや うらみわび さびしさにまがふ 松の葉の色
海の色は?海の色は みどりなるもの ゆく船の よしあしにして そぞろにぞ知る

ちょっと教養が足らず、意味の通る歌になっているのかまでは判断ができなかったのですが、、「五・七・五・七・七」の短歌の韻律は守られていそうです。なるほど、面白いですね。

3. Few Shot Prompt

モデルに対して、望ましいアウトプットの例を少数与える方法です。ハンズオンの中では感情分析を例として扱っていました。映画に対する感想とその感想から読み取れる感情(ポジティブ・ネガティブ・ニュートラル)を出力例として与えて、レビューの分析をしています。

他にも色々なテクニックがあるようなので、気になった方は調べてみてください。

チームビルディング

チームは参加申し込み時のアンケートに基づいて主催者側で決めてくださっており、事前勉強会の際にチームメンバーが発表されました。4〜5 人のチームが合計 5 チームあり、各チームに AI/ML 領域のエンジニアと小売業界のドメイン知識を持つ方が含まれるようになっていたと思います。生成 AI がテーマということもあり、参加者のうち約半数はエンジニア以外の職種でした。 今回私は勢い任せに一人で参加してしまいチームが組めるのかをかなり懸念していたため、事前にチームが組まれているというのは本当によかったです。

アイディアソン

キックオフ後からはチームごとに開発を進めていきます。コミュニケーションには主に Slack を使っていました。MetaLife というバーチャルオフィスも用意されていたのですが、あまり使われていなかった印象です。もう少し活用すればよかったなと思います。

私の所属していたチームでは最初に一時間ほど時間をとってアイディアソンを行いました。小売の業界知識のある方がいくつかデータ活用の事例を紹介してくださり、それを参考に方針を決めました。想像していたよりもすんなりと方針が固まり、「Gemini を活用した呼び込み君のパーソナライズ」という方針で進めることになりました。この呼び込み君というのはスーパーの売り場に置かれていて BGM を流している販促用の機械です。人感センサーがついており、人の接近を検知して販促用のメッセージを流す仕組みらしいです。各店舗の従業員が販促用のメッセージを録音をして使っているようなのですが、そこを生成 AI を使って効率化・パーソナライズできないかなということでこのアイディアに決まりました。

開発

チームごとに 1 つ GoogleCloud のプロジェクトが用意されていました。ある程度権限は絞られているのですが、運営の方に依頼すればすぐに必要な権限を付与いただけて、比較的自由に使えるような環境でした。

私の所属していたチームでは、呼び込み君のパーソナライズということで、人の接近を検知するとその画像を Gemini で解析し、パーソナライズされた商品の宣伝を行うという仕組みを実装しました。本当にシンプルで Gemini と Text to Speech が主なコンポーネントです。人を検知するとその画像が Gemini に渡され、Gemini が生成したコピー文を Text to Speech で音声にに変換するという仕組みです。

これは今だからこそ思うことですが、2 週間もあったので人感センサーの部分や Gemini のプロンプトデザインの部分など、役割分担をしつつもう少し力を入れられたかもしれないなと思いました。

最終発表

最終日の成果発表は渋谷 Google オフィスとオンラインのハイブリッドで開催されました。私はオンラインで参加しています。各チーム様々な発想で生成 AI を活用しており、他チームの発表を聞くのは面白かったです。2 週間とは思えないクオリティのチームもありました。入賞すると景品としてすかいらーくグループの商品券がもらえます。 採点は

  • ビジネス着眼点: どういう背景のアイディアでどんなユースケースが考えられるか
  • 実装: アーキテクチャや工夫点
  • プレゼン力: 資料と発表のわかりやすさ

を採点項目とし、参加者の投票により行いました。我々のチームは残念ながら入賞には至りませんでした。

各チームに払い出されていた Google Cloud の利用金額の上限が 50000 円程度だったらしいのですが、5000 円を超えているチームはなく、我々のチームに関しては 50 円ほどでした。Vertex AI が安いというのもありそうですが、あまり活用しきれていない感じが否めません。。

現地参加者にはすかいらーくグループのカプセルトイが配られていました。残念ながらオンラインで参加した私はもらうことができず、せっかくなら Google オフィスにお邪魔すればよかったと少し後悔がありますね。

振り返り

今回は開催期間 2 週間ということで時間は十分にあると思っていましたが、普段の業務がある中でのハッカソンとなると意外と時間を確保するのが難しいなという印象でした。

今になって振り返ると、アーキテクチャの設計など、もう少し詳細な部分までチーム全体でコミュニケーションをとって進めるとよかったかなと思います。アイディアソンで大枠の方針を決めてはいたものの、詳細部分の認識がメンバーごとに少しずつずれがありました。Slack で認識を合わせながら進めてはいたのですが、最初のコミュニケーションをもう少しだけ厚くして方針が共有できていれば、より色々なアイディアが生まれたり、役割分担ももう少しうまくできたりしたかもしれないなと思います。せっかく生成 AI のハッカソンだったので、エンジニア以外の方も一緒に開発できたらよかったなと。そうすればプロンプトデザインにも時間を割くことができて、生成 AI がテーマのハッカソンをより楽しめたような気がしています。

今回ハッカソンに参加して、エンジニアとして働く上でやはりビジネス理解は重要だなということを改めて認識しました。今回は「小売」がテーマでしたが、ユーザには見えづらい課題が見えていることで、より実用的かつ革新的な面白いアイディアが生まれるように思いました。 またこういう機会があれば是非参加してみたいと思います。


そんなわけで、Belongでは Google Cloud に興味があるエンジニアを募集しております。 気になった方は、是非 <エンジニアリングチーム紹介ページ> をご覧ください。