Share
LLMアプリケーションの評価・実験管理についての知見をまとめてみた
『LLMアプリケーションの実験管理・評価についての知見をまとめてみた』(https://yojo.connpass.com/event/305679/)で発表した資料です。
------------------------
概要
LLMアプリケーションの開発が行われるようになり、本番運用している企業も増えてきました。
よいLLMアプリケーションを作るための工夫としてのプロンプトエンジニアリングやRAGなどの手法は、エンジニア界隈では広く一般に知られるようになってきました。
一方、LLMの実験管理や評価の方法についてはまだベストプラクティスが出揃っておらず、各社が手探りで行っているような状態です。評価ができなれば、どれだけLLMアプリケーションの精度改善のプラクティスが出ても、継続的に精度改善していくことはできません。
また、本番運用されるLLMアプリケーションは、精度やビジネスインパクトへの評価だけではなく、コストやレイテンシーを継続的にモニタリングしていくことも重要です。
PharmaXでも例に漏れず、手探りで評価方法を確立しようと奮闘しています。本発表では、PharmaX内で得た知見と、現時点で世間的に言われている知見を整理して発表したいと思います。
こんな人におすすめ
LLMアプリケーション開発の最新トレンドを知りたい方
LLMアプリケーションの実験管理・評価について他社事例などを詳しく知りたい方
LLMアプリケーションを開発して本番運用しているorしようとしているPdM・エンジニアの方
対象者
少しでもLLMを活用したアプリケーション開発をしたことがある方
Pythonのコードをざっくりとでもいいので理解できる方
LLM・AIの基礎知識のある方(数学的な話はあまり出てきません)
PharmaX(旧YOJO Technologies)開発チーム
Transcript
69 slides
-
(C)PharmaX Inc. 2023 All Rights Reserve 2 自己紹介 上野彰大 PharmaX共同創業者・エンジニアリング責任者
好きな料理はオムライスと白湯とコーラ マイブームはLLMとRust Twitter:@ueeeeniki -
(C)PharmaX Inc. 2023 All Rights Reserve 6 本発表のスコープや注意事項について LLMアプリケーションの実験管理と評価について取り組んで来たことや今後の展望をお話します •
個人的に参考になった記事やPharmaXで取り組んできたこと、今後のどのようなことをやってい きたいのかについて中心にお話します ◦ 個人的な感想や考えを多分に含みます • LLMアプリケーションの実験管理や評価はまだベストプラクティスが出揃っておらず、今回お話 する内容が各社にどの程度取り入れ可能かは不明です ◦ 皆さまでご判断いただければと幸いです • できる限りPharmaXでのリアルな事例や実験結果をお伝えしますが、より詳しく聞きたい方やお 困りごとについて議論したい方は是非 DM等いただければ幸いです -
(C)PharmaX Inc. 2023 All Rights Reserve 7 前提とする知識 • LLMの基礎知識は説明しません
◦ AIのモデルについての基礎知識もあることが望ましい • 少しでもLLMを使ってアプリケーション開発した経験があることがあることが望ましい • できればLLMアプリケーションを本番運用した経験があるとより話の内容が想像つくと思います LLMのアプリケーション開発の一定の事前知識を仮定します -
(C)PharmaX Inc. 2023 All Rights Reserve 10 医療体験を横断する2つの事業領域 YOJO事業 (漢方メインのOTC医薬品)
未病・予防 治療 薬局DX事業 (医療用医薬品) オンライン薬局サービスを展開している 処方せん不要 処方せん必要 -
(C)PharmaX Inc. 2023 All Rights Reserve 11 LINEから利用できるバーチャルな薬局 最短 即日
※ お薬をもっと手軽に、もっと安心して受け取れる「 YOJO薬局」 お薬はお家までお届け LINEで薬剤師にいつでも相談 好きなときにお薬の説明 ※東京23区内のみ -
(C)PharmaX Inc. 2023 All Rights Reserve 12 ソフトウェアに閉じないプロダクト開発 独自の薬局オペレーションシステムを構築し、最適化されたオンライン薬局を実現 ×
自社薬局をプロトタイプラボ化 ソフトウェア オペレーション リモート 薬剤師組織 薬局業務を効率化す るオペレーションシス テム(薬局OS) 質の高い患者さま対応 のためのオンライン特 化組織 対人業務の質を高め るための対物業務効 率化 「ソフトウェア×オペレーション×薬剤師組織」を プロダクトとして開発 -
(C)PharmaX Inc. 2023 All Rights Reserve 13 その他 BI インフラストラクチャー
フロントエンド バックエンド 技術スタック サービスに取り込むべき技術をプロダクト横断的に議論する場を設け、新しい技術も積極的に採用 -
(C)PharmaX Inc. 2023 All Rights Reserve 16 医療体験を横断する2つの事業領域 YOJO事業 (漢方メインのOTC医薬品)
未病・予防 治療 薬局DX事業 (医療用医薬品) オンライン薬局サービスを展開している -
(C)PharmaX Inc. 2023 All Rights Reserve 17 医療アドバイザーに体調 のことをいつでも気軽に相 談できる
相談型医療体験 30種類以上の漢方薬からあ なたに合ったものを月毎に 提案 パーソナライズ漢方薬 定期的に漢方をお届けし、 一人ひとりに寄り添うかか りつけ医療を提供 継続的なかかりつけ 一生涯にわたって寄り添うかかりつけ漢方薬局「YOJO」 -
(C)PharmaX Inc. 2023 All Rights Reserve 19 今回対象とするアプリケーション • 管理画面上でボタンを押す(ショートカットキーをタイプする)とチャットがサジェストされる
◦ Chat Completions APIで対象ユーザーによってプロンプトを切り替えてサジェストさせている • 最終的には薬剤師が内容をチェック&修正して送ることを想定しており、完全な自動化を目指して いるわけではない ◦ GithubのCopilotのようなイメージで使いたい • 将来的にかなりの精度でサジェストすることができて、薬剤師がほとんど修正しなくてもいいような レベルまで達すれば、ユーザーとのトーク画面に入った時点でサジェッションを始めるようにしたい ◦ 現時点ではそこまでの精度ではないので、薬剤師の自由意志で使用して FBを集めている段階 薬剤師にチャットの返答をサジェッションするために LLMを活用している -
(C)PharmaX Inc. 2023 All Rights Reserve 20 プロンプト一部抜粋 薬剤師にチャットの返答をサジェッションするために LLMを活用している
Systemプロンプト 以下の条件に従って返信してください。 前提: ・あなたの役割は、PharmaX株式会社のYOJOというサービスのかかりつけ薬剤師です。健康や漢方の専門家として、常にユーザーの 感情に寄り添いアドバイスをします。 ...(略) Userプロンプト 対応の基本方針: ・おすすめの漢方薬をよりきちんと提案できるように適宜質問を行ってください。 ・「検討します」とすぐに購入意欲がないような返答をされた方には、それ以上強く営業しすぎないようにしてください。 …(略)… 上記に気をつけながら私があなたが提案する漢方の選択について納得が行くように、共感しながら深掘り質問を行ってください。 -
(C)PharmaX Inc. 2023 All Rights Reserve 21 プロンプト一部抜粋 Chat Completion
APIに過去の会話履歴を与えることで、文脈を理解したサジェストを可能にしている -
(C)PharmaX Inc. 2023 All Rights Reserve 24 評価とはなにか?なぜ評価が必要なのか • AIの評価とは、AIの出力結果の”良し悪し”を定量的・定性的に判断すること
• AIの出力はそもそも毎度ばらつく上、パラメータを変化させるたびに出力が変化するので、評価 を行ってその時のパラメータがよかったのかどうかを判断する必要がある • 特にLLMの評価は、例えば、画像認識などの分類問題などとは異なり、正解が 1つに定まるわ けでないので難しい ◦ 例えば、「日本で一番高い山は?」という質問に「富士山」「富士山です」「富士山に決まってんだろー が!」「富士山。標高 3776.12 m。その優美な風貌は …(略)」と答えるのはどれも正解 AIの評価に関するプラクティス自体は LLMの発展の前から存在していたが、 LLM特有の論点もある -
(C)PharmaX Inc. 2023 All Rights Reserve 25 • LLMの評価というときに①事前学習した LLMのモデルそのものや②fine-tuningしたモデルの
評価を指すこともあれば、③LLMを使ったアプリケーションでの評価(プロンプトや RAGにフォー カス)を指すこともあるので注意が必要 ◦ ①では、そもそも様々な分野で日本語の質問に正しく答えられるか?と言ったことを評価する ▪ 例えば、医学的な問いに正しく答えれるか?というように特定のドメインを扱うことはある一方 で、特定のアプリケーションの評価ではない ◦ ②、③では、特定のユースケースで正しく答えられているか?と言ったことが問われている ▪ ②は特定のドメインに特化させてはいるが比較的一般的な知識を問うもの、特定のアプリケー ションのユースケースに特化させたもののどちらも言うことがある ▪ 特に③はプロンプトを工夫した場合や RAGでデータを与えた場合の出力が、特定のアプリケー ションの特定のユースケースで良い出力であるかが問われている • ③では、アプリケーション開発者がモデル内部のパラメータを変化させられるわけではないの で、temperatureや事前に与えるプロンプトなどが評価するパラメータにあたる 評価とはなにか?なぜ評価が必要なのか ここではモデルそのものの評価ではなく、③の LLMを使ったアプリケーションの評価について扱う -
(C)PharmaX Inc. 2023 All Rights Reserve 28 • 特定のユースケースを想定したLLMアプリケーションでは、回答が妥当だったかだけではなく、 実際にどの程度ユーザーに”役立ったか”やどの程度ビジネス上の数値を向上させたのかも評
価の対象 ◦ 例えば、薬剤師の生産性をどの程度高めたか ▪ 生産性を高めるためには、受入率(どの程度修正せずに受け入れられたか)が高い必要があ る ▪ もちろんサジェストのレイテンシが小さい必要もある ◦ その結果、例えば、どの程度購入率が高まったのかというビジネス指標までを最終的には評価する 必要がある • 事前に準備した評価項目を使って評価することもできるが、実際のビジネス指標を評価するには リリース後しばらく運用する必要がある ◦ 事前に準備した評価項目は、データセットなどを使ってパラメータの修正後すぐに評価を実施するこ とができるが、ビジネス指標はしばらく本番運用しないと分からない 評価とはなにか?なぜ評価が必要なのか ここではモデルそのものの評価ではなく、 LLMを使ったアプリケーションの評価について扱う -
(C)PharmaX Inc. 2023 All Rights Reserve 29 実験管理とはなにか?なぜ実験管理が必要なのか? • プロンプトやtemperatureなどのパラメータを変更した際にその前後でどの程度評価項目が変
化したのかを確認することを実験管理という ◦ 事前に準備したデータセットと評価項目を使って評価することもできるが、ビジネス指標への影響の 評価はしばらく運用しないとわからないので、履歴管理(いつどのようにプロンプトを修正したのか) が必要 ◦ もちろんやり方次第では ABテストのようなことも可能 • 実際のLLMアプリケーションの現場では、開発者以外もプロンプト等を変更できるようなアーキ テクチャを取ることができれば、複数人で高速で PDCAを回すことが可能になる ◦ 複数人でプロンプト等を変更するには、誰いつどのようにプロンプト等を変更したのかを管理すること の重要性が増す 実験管理をすることで、パラメータを変更したことでどのような影響があったのかを振り返る事ができる -
(C)PharmaX Inc. 2023 All Rights Reserve 31 PromptLayerとは 特に注目を集めている実験管理用の SaaSの1つで、簡易な使い勝手が特長のサービス
https://promptlayer.com/ -
(C)PharmaX Inc. 2023 All Rights Reserve 32 その他のLLM実験管理の有名サービス PromptLayer以外も複数の有名サービスは存在している •
Lunary(https://llmonitor.com) ◦ PromptLayer同様にマネージドなサービスで管理画面なども提供されている ◦ PromptLayerとほぼ似たような機能を備えているものの Chat Completion APIの記録に難あり • MLflow ◦ AIの実験管理としては老舗の OSS版が有名で、有料でマネージドなサービスも展開している ◦ MLflow 2.3(2023/4リリース)からLLMをネイティブサポートするようになった ◦ 他のサービスと比較すると、記述方法が多少複雑 • LangSmith ◦ LangChainを使うなら追加の実装なしで簡単に使い始めることができる ◦ LangChainの各chainの入出力結果を追うこともできる ◦ 機能もかなり豊富だが、 template機能がないのが不便 -
(C)PharmaX Inc. 2023 All Rights Reserve 51 PromptLayerを選定した理由 特にテンプレート機能の使い勝手が良いことが PromptLayerを選定した一番の理由
• PromptLayerのようにテンプレートを登録することができて、管理画面から編集可能、テンプレー トをコード上で呼び出し、入出力をテンプレートに紐づけることのできる機能が便利 ◦ どのテンプレートのどのバージョンを使っている時にその出力結果が出たのかが分かる ◦ 出力の評価と組み合わせれば、テンプレート変更の前後でどの程度出力が改善したのかが分かる ◦ やり方次第ではテンプレートの ABテストすることも可能になる • 管理画面から編集可能なことで、開発者以外のメンバーもプロンプトを変更できるようになる ◦ 開発者以外がプロンプトを変更して実験を行うことができるようになることで、実験管理の民主化が起 こり、テンプレート改善の PDCAを回す速度が速くなる -
(C)PharmaX Inc. 2023 All Rights Reserve 54 PromptLayerの使い方〜テンプレートの管理 本番でも実験用のプロンプトを分けていることで、本番環境でも実験可能にしている 実験用のテンプレートを分けることで、影響範囲を狭くし
て本番環境で実験することができる 本番環境で実験してよかったものを PSチーム全体に適 用させる -
(C)PharmaX Inc. 2023 All Rights Reserve 55 本番でもPromptLayerで実験ができるようにした理由 PharmaXの今回対象としている機能では、利用者が内部のメンバーなので、本番環境でも実験可能 •
新しい機能を作るときは開発者がローカルで実験してからリリースする ◦ 一方で、ローカルでできるのは事前に準備したデータセットで評価することだけ ◦ 特に新機能の場合は、データセットを新しく準備する必要もある • ローカルでは開発者以外のメンバーが実験しようとしても、環境構築を行わなければならず、本番 さながらのデータ、状況で実験することもできない ◦ 本番で実際の状況で実験するのが一番 PDCAが回る • 本番でプロンプトテンプレートを変更し、 PSチーム全体に適用されてしまうと生産性に悪影響を及 ぼす可能性もあるので、PdMやPSチームのリーダーなど一部のメンバーが実験用のプロンプトを 使って実験する ◦ 実験してよかったテンプレートを全体のプロンプトに適用させる -
(C)PharmaX Inc. 2023 All Rights Reserve 57 PromptLayerを使う上での課題 • SDKがブラウザ上で動作しないので、
REST APIを自分で実装しなければならない点 • Streamモードには対応していないので、 Streamモードの出力結果はこっちらでまとめて、 trackにpostしないとイケない=PythonやTSでサーバー上で実行する場合でも SDKの関数を 使えない ◦ テンプレートでもStreamがTrueかどうかを設定する項目はない • テンプレートを変更するたびに事前に準備したデータセットなどで評価したいが、評価項目に自由ドが低い など、評価としては使っていない(後述) PromptLayerでも多少の不便さはあるので、今後の進化に期待 -
(C)PharmaX Inc. 2023 All Rights Reserve 58 評価と実験管理の考え方 評価指標の確立や可視化が進んでいなくとも、実験管理だけでも始めてみるのはいかがでしょうか •
PharmaXのように必ずしも評価指標が完全に確立されていなくても、実験管理から導入してみ ることはできるしオススメ ◦ 特にPharmaXの場合は、ユーザーが内部にいるので、まずは定性的な評価・ FBだけでもアプリケー ションの改善は進む ◦ どのようなパラメータのときにどのような結果だったのかが紐づいて可視化されているだけでもエン ジニア以外のメンバーも改善案を出しやすい ◦ 一方でユーザーがtoCの場合など、直接FBを集めづらい場合は、評価と実験管理はある程度セット が望ましいが、実験管理すらないとパラメーターの変更履歴が分からなくなるので、実験管理からの 導入はオススメ • 特にPromptLayerのようにプロンプト等をエンジニア以外のメンバーも変更できるようになって いると改善速度が劇的に上がる ◦ 本番環境でもアグレッシブに実験できる環境が整っているとなお良い -
(C)PharmaX Inc. 2023 All Rights Reserve 60 評価の大枠 テンプレートを変更した後、①事前に用意したデータでの評価、②しばらく運用してみての評価を行う •
LLMアプリケーションの評価という時、事前に用意したデータセットを入力とし、出力結果を定量 的に評価することを指すことが多い ◦ プロンプトのテンプレートを変更した時に、その変更の良し悪しを事前に用意した入力データセットに 対して出力を計算し、その出力を評価する ◦ 例えば、モデルとなる答えと出力との類似度を計算したり、出力自体の読みやすさを LLMに評価さ せる • 一方で、特定のユースケースを想定した LLMアプリケーションでは、回答が妥当だったかだけで はなく、実際にどの程度ユーザーに ”役立ったか”やどの程度ビジネス上の数値を向上させたの かも評価の対象にすべき ◦ PSチームの生産性などのビジネス指標は可視化されているが、 LLM機能以外の複数の施策が同時 並行されているため影響が明確ではないので、本番環境での受入れ率(どの程度修正せずに受け 入れられたか)などを取得して記録し、運用していく中で良し悪しを判断する必要がある -
(C)PharmaX Inc. 2023 All Rights Reserve 63 LangChainに用意されている評価のメトリクス≈ LangChainでも同様に、出力に対する評価関数が準備されているので参考にするとよい embeddingを用いた
意味的な距離を評価 https://api.python.langchain.com/en/latest/evaluation/langchain.evaluation.schema.EvaluatorType.html -
(C)PharmaX Inc. 2023 All Rights Reserve 65 評価用のサービスの選定基準 評価は下記の基準で LangChain(LangSmith)で行うことを想定してる
• デフォルトでサポートしている評価基準が多い ◦ LLMを使った評価には当然コストと実行時間がかかるので注意が必要 • カスタムの評価をサポートしている ◦ こちらが定義した評価用の関数を実行して結果の一覧の中に含めることができるか • 実行結果をチームでUIで確認可能 ◦ LangSmithはPromtLayerほどテンプレート機能が充実していないので、 PromptLayerをメインに 使いつつ、事前準備したデータセットでの評価のみ LangSmithに見に行くという運用を想定している -
(C)PharmaX Inc. 2023 All Rights Reserve 67 本番運用での評価の展望 本番運用をしていく中での評価も蓄積し、可視化していくことでテンプレートの良し悪しを評価する •
リアルタイムに受け入れ率やその他評価項目を非同期で計算し、 PromptLayerに記録していく ◦ 例えば、受け入れ率は LLMがサジェストしたメッセージと実際に送ったメッセージの文章の類似度を 計算する ◦ PSチームに(例えば5段階評価で)点数で評価してもらい、その点数も記録する • PromptLayerに保存した評価スコアをPromptLayer上でも可視化可能だが、定期的に BigQueryなどにインポートして分析、可視化することも想定 ◦ PromptLayerでは、保存可能なリクエスト数に上限がある ◦ 可視化も自由度高くやりたいので、 BigQueryなどを使うことも想定している -
(C)PharmaX Inc. 2023 All Rights Reserve 69 • LLMアプリケーションの評価では、実際のユースケースでどの程度役に立ったかを評価しなけれ ばならない
◦ KGIとなるビジネス指標への影響は様々な要因が混ざり合ってしまうので、その手前の指標 から評価していくのが望ましい • 評価項目の確立・自動化・可視化ができていなくても実験管理から始めてみるのもオススメ ◦ 実験管理はチームで使用できる簡単なツールから始めてみるのもオススメ ◦ 開発者以外もプロンプトを修正できるようにすることで、プロンプトエンジニアリングの民主化 を起こし、PDCAサイクルを爆速で回す まとめ 実験管理・評価周りの知見はまだ少ないのでどんどん出てくると嬉しい