天の月

ソフトウェア開発をしていく上での悩み, 考えたこと, 学びを書いてきます(たまに関係ない雑記も)

LLM(GPT, PaLM等) with MLOps LT大会!!!に参加してきた

mlops.connpass.com

こちらのイベントに参加してきたので、会の様子と感想を書いていこうと思います。(後続に予定があった関係で懇親会は非参加でした)

会の概要

以下、イベントページから引用です。

今注目が集まっているLLM(GPT, PaLM等)のMLOpsや実用化の知見を共有するLT大会を開催します!

LLMや周辺技術を使ったプロダクトやサービスをPoCや本番システムで開発、運用する中で得た知見や困りごと、解決策等を共有する会です。

LLMや周辺技術にはGPT4, ChatGPT, ChatGPT Plugins, PaLM-E, Bard, LLaMA、FlexGen等を含みます。もちろん他のLLM系の技術やプロダクトでも構いません。Prompt Engineeringも歓迎です。

会の様子

GPT、Langchain、Faiss、FastAPI等を組み合わせた検索システム開発 by澁井さん

これまでMLOpsが必要だったのと同じく、LLMでもMLOpsが必要になるよね、という話がありました。

ただし、微妙にアーキテクチャやMLOpsの形は変わってくるよね、という話があり、例として以下のようなトピックが挙がっていました。

  • 複数のインデックスを乗っけてそれぞれ推論するようなやり方*1
  • UIとしてストリーミングで回答を表示したいニーズもあるよねということで後ろにGraphQLを乗っける
  • 3日前の質問に対して深堀りするためにRDBなど永続レイヤーに記録して履歴メモリを活用
  • 違法がないかを監視するレイヤーを作る
  • そもそも回答を出す時点で変な回答を出さないように定量評価とHallucinations対策をする

こういったものを作るためには、最終的にはLLM機械学習パイプラインが必要になってくるので、今後はそういった話が発展していくことを澁井さんは期待しているということです。

LLMを活用した推薦システムの改善: 課題と初期導入のアプローチ by樋口 心さん

推薦システムにおいてLLMをどう活用するとよいか?というアイデアをお話してくれました。

  • LLMを活用することで推薦をした根拠を明確にする
  • 自然言語を活用してユーザーのニーズを抽出して文脈に沿った推薦結果を抽出する
  • 情報が不十分なユーザのデータを拡張する
  • 推薦後のアクションを同一インターフェースで実現

といったアイデアが挙げられていました。

一方で、多くのアイテムとの関連度計算が必要だったり、アイテムに対する不適切な説明でプラットフォームの信頼性を損なうリスクがあり、予め他の仕組みでLLMへの入力情報を選定しておいたり、LLMに解かせるタスクや入出力を限定する必要性があるのではないか?ということです。

LangChain Toolsの運用と改善 by藤本さん

LLM単独の活用に存在する限界を突破するためのアイデアを紹介してくれました。

LLMの限界として、学習させていないリアルタイムな質問に答えられない点があるため、回答不可能な専門知識へのアクセスをしたり誤回答を防ぐための工夫が必要ということで、そこにLangChain Toolsを活用できるのではないか?ということでした。

ただ、LangChain ToolsにおけるDescriptionの定義は(複数Toolの場合特に)かなり難しく、Description Ops*2で運用しながら改善を回していく仕組みを実験してみたそうです。
実験は、

  1. 正解データの入力
  2. 初期のDescription設定
  3. 与えられたDescriptionをもとにツールを呼び出し
  4. 正解データと比較して、どのくらいの精度でツールが呼び出されたかをテスト
  5. 精度が上がるようにDescriptionを修正
  6. 3に戻る

のフローで行ったそうですが、修正によって精度が上がるものの途中で一度精度が下がってしまうとその後精度が戻らなくなったそうで、MLらしさを感じつつ今後はまだまだ改善が必要なんだなあと実感したということでした。

LLMのオープンソース化とDatabricks by阿部さん

OSSで活用できるLLM環境の話をしてくれました。

LLMをビジネスで実用化しようと考えた時、セキュリティの問題や商用利用に対するハードルなどがありますが、Cerebras-GPTやOpem Assistant, Dollyなど商用利用可能なモデルも出てきているということで、阿部さんの所属会社が作成したDollyの話を例にどのようにOSS化したのか?という話やDollyの説明を聞いていきました。

Dollyは、OSSのPythiaと独自のデータセットを活用することで作成できたということですが、データセットは社員が自分の手で書いて用意したそうです。
こうして作られたDollyにはまだHallucinationsがあるものの、

  • 無償利用できる
  • ファインチューニングを含む自由なカスタマイズが可能
  • 自社情報を外部に流さなくて良いのでセキュリティを確保できる
  • 安価
  • OSS化の流れが加速

といったように多数の優れた点も存在するということでした。

ただし比較的コンパクトなDollyであろうとも、だいたい10sはかかるため、スケールアウトする必要は現実問題としてあるということで、SparkのUDFを活用などがそのアイデアの一例として挙がっていました。

NOT A HOTEL AIコンシェルジュ「Kevin」とキャッシュ by codehexさん

NOT A HOTELのKevinでDocument Question Answeringを使って見えてきた課題とそこに対してどう向き合ったのか?の話がありました。

Document Question Answeringの課題としては、検索精度と回答の生成速度が遅いことが挙げられますが、これはRetrievalQAがDocumentのリストを返しているせいでキャッシュができないことに起因しているということでした。
そこで、キャッシュ可能なRetrievalQAを実装*3したそうで、これにより23sかかっていたのが0.3sに改良されたそうです。

なお、GPTCacheでも似たようなことができる可能性はあるそうで、こちらも余裕がある人は見て欲しいというとです。

LayerX Biz Boost〜Whisper+GPTによる音声文字起こし要約の取り組み〜 by白井さん

社内でLLMを活用した業務効率化ツールを作った(ヒアリングした際にもらった音声ファイルをWhisperは文字起こししてそれを要約)そうで、その制作過程の話を聞いていきました。
以下、制作過程で出てきた課題とその課題への対応策を時系列で書いていきます。

  • Whisperは話し手の区別ができない問題が出たので、pyannote.audioで話者分離をし、それをGPTで要約してもらうように工夫
  • 要約の精度が低いので、重要な発言を一度抽出してから要約
  • プロンプトの文字数制限がきついので、チャンク分けした

こうして制作された業務効率化ツールですが、実行時間がかかりすぎることとWebサイトにわざわざファイルアップロードをする手間が面倒だというフィードバックをもらったそうで、改めてUXの重要性を実感したということでした。

会全体を通した感想

ここ最近LLM関連の勉強会に多く参加しているのですが、他の勉強会と比較して実務的&技術的な話題が多く聞けて、大満足でした。

発表のバラエティが豊かだったのも非常によくて、終始楽しい時間を過ごすことができました。

*1:A/BテストやBlue/Greenデプロイメント...

*2:MLにおける教師データのように、入力と正解のペアを用意しておくき、想定通りのツールが呼ばれているかをテストする。ここで呼ばれていなかったらLLMに結果を渡して修正する

*3:質問文から埋め込みベクトルを作成→キャッシュの中を類似検索→見つけたらキャッシュを返すしなければ回答を生成→生成した回答, ソース情報とベクトルを保存