この記事では弊社の LLM (Large Language Models: 大規模言語モデル) に対する取り組みについて共有します。
弊社でどのように取り組みを始めたのか共有しているため、これから取り組みを始めていく方に向けた内容となっています。
はじめに
LLM の活用に向けた活動はさまざまな組織が行っており、ニュースやブログ記事などで多数取り上げられています。一方、実際に組織内でどのように活用しているのか共有されることは少なく、活用を始めようとしても時間がかかりがちです。
その理由としては次のようなものが考えられます。
- できることが多すぎる
- やりたいことが多すぎる
- 実現のための選択肢が多すぎる
弊社では現在、LLM の活用に役立てられるようなツールを開発中ですが、いきなりそれに着手できたわけではなく、それ以前の取り組みとして LLM をテーマとしたハッカソンを社内で開催しました。
このハッカソンを通じて LLM について組織的な理解を深められたため、この記事ではどのようにハッカソンを行い、結果として得られたものについて共有します。
事前に行った準備
ハッカソンのための事前準備としては次の事項を実施しました。
- LLM の現状の調査
- ハッカソンで利用するための環境の準備
- スケジュールの作成
LLM の現状の調査
まず、LLM の現状についての調査を行いました。
弊社のメンバーは機械学習に造詣のあるメンバーも多いのですが、自然言語処理、とくに近年の LLM の動向について熟知しているというわけではありませんでした。このため、有志で LLM について調査を行い結果を資料としてまとめました。
この資料はハッカソンの序盤で情報共有を行うために用いられました。
ハッカソンで利用するための環境の準備
ハッカソンでは実際にアプリケーションの開発を行うため、LLM を利用できる開発環境が必要です。開発環境はクラウドサービスを用いて用意しました。ハッカソンのためには次の 2 種類の環境を用意しています。
- ホストされた LLM を API 経由で利用する環境
- LLM を自分でホストするための環境
ホストされた LLM を API 経由で利用するのは、取り組み始めるのなら第一選択となる方法でしょう。弊社ではハッカソンのために Azure OpenAI Service を利用しました。Azure を利用しているのであれば、利用開始は比較的かんたんです。詳細は Azure の資料をご参照ください。
また、OpenAI Service 以外の LLM を自分たちでホストするための環境として、Google Cloud の Vertex AI Workbench も用意しました。
Vertex AI Workbench は Jupyter Notebook (Jupyter Lab) を実行した環境を手早く用意できる上、ユーザー管理のノートブックインスタンスを利用すれば API の実行環境としても利用できます。また、GPU の利用も容易であり、ハッカソンのための環境を手早く用意するのに向いています。
弊社では Azure や Google Cloud を日常的に用いているため上記のような環境を用意しましたが、もし別のクラウドサービスを普段利用されているのであれば、そちらで環境を用意するほうが手間取らないかもしれません。
スケジュールの作成
ハッカソンは 5 日間をかけて、通常の開発業務を止めて集中的に行いました。
社外との打ち合わせやトラブル対応を行いながらなので 100% の時間をかけたわけではありませんが、各メンバーの様子を見るとかなりの時間をハッカソンに費やせていたようです。
実際のスケジュールはおおむね次のようなものでした。
- 通常業務: 0.5 日
- LLM についての事前調査について情報共有: 1 日
- アプリケーション開発: 3 日
- 成果発表: 0.5 日
ハッカソンでは基本的にエンジニア 2–3 名で 1 チームを組み、全部で 3 チームで臨みました。
ハッカソンの成果
では、ハッカソンでそれぞれのチームが作成した成果を見ていきましょう。
チーム 1: 自然言語によるデータ分析
チーム1は LLM を用いてデータ分析を行う、かなり発展的なデモを行いました。アップロードしたデータに対して、自然言語を用いて指示することで LLM にグラフ (ROC カーブ) を描画させています。
また、機械学習で用いられるさまざまな指標の定義は専門家でないと理解しにくいものなので、それを平易な言葉で説明するように対話を構築していました。
チーム 2: 生成モデルを用いた対話的オーグメンテーション
チーム2はもっともクールなアプリケーションを作成しました。自然言語から画像を生成するモデルと、LLM を組み合わせることで、一つの文章から多様な画像を生み出すというものです。
モデルによって生成された画像は不自然であったりもとめていたものと異なっていたりします。そのため、いくつかの候補を提示し、ユーザーが対話的に修正することで、もとめている画像に近づけられるよう実装していました。
チーム 3: マルチモーダルな画像検索
チーム3はもっとも実用に近い開発を行いました。BLIP-2 を用いた自然言語による画像検索を実装しています。次の画像は「砂漠にいる犬」の画像をデータセットから検索しています。
また、弊社プロダクト Lens の機能と統合したデモも行いました (本記事では割愛します)。
ハッカソンを通じて学んだこと
LLM をテーマとしたハッカソンを通じて次のような気づきがありました。
- LLM は多様なことに使える
- LLM を PoC のためのツールボックスとして使うことができる
- 実際に使ってみることはチームの理解を飛躍的に高める
ハッカソンでそれぞれのチームが作成したものはまったく異なっており、LLM の応用範囲の広さを伺わせます。
また、今回のハッカソンでは画像検索や画像の編集といったさまざまな機能を3日間程度の開発で実装しましたが、従来はこのような速度での開発は難しい機能だったでしょう。LLM を多様な機能のツールボックスとして使いこなすことで、開発効率の向上も狙えそうです。
さいごに、実際に使うことで組織としての LLM に対する理解は進んだように思います。弊社はエンジニアの割合が多いこともあり、動かしてはじめて学べたこともたくさんありました。
今後の LLM に関する取り組み
さいごに、現在 Citadel AI で行っている取り組みをご紹介します。Citadel AI では LLM を活用するための評価用ライブラリを作成中です。
LLM をテーマとしたハッカソンを通じて、LLM の出力の評価が困難であることに気が付きました。
たとえば、チーム1 のデータ分析のデモでは実際に実行できる Python のコードの生成が必要となりますが、LLM の出力は必ずしも妥当な Python コードとなってくれるわけではありません。どの程度の割合で妥当な Python コードを出力してくれるのか事前の評価が必要でしょう。
このように、LLM を実際に業務に組み込んでいくためには、目的を達成できるかどうかさまざまな指標を用いて評価が必要になると考えています。
一方、「LLM の評価」は一般的に困難で、そのために使えるツールも乏しいのが現状です。そのため、”LangCheck” という評価用ライブラリを開発中です。また、ライブラリは OSS として公表予定です。
今後の予定
このブログでは継続して LLM の活用についての情報を発信していく予定です。具体的には次のような記事を予定しています。
- LLM の代表的なユースケースと課題
- クラウドサービスが提供する LLM の利用方法
- 自分で LLM をホストする場合の選択肢
- LLM のファインチューニング
- LLM の評価についての基本的な考え方
- LangChain を用いた LLM の評価の具体例
- LLMOps と MLOps の比較
これ以外にもさまざまな記事を予定しています。また次回の記事でお会いしましょう。