Upgrade to Pro — share decks privately, control downloads, hide ads and more …

LLMアプリケーションの実験管理・評価の工夫を紹介

 LLMアプリケーションの実験管理・評価の工夫を紹介

LLMアプリケーションの開発が行われるようになり、本番運用している企業も増えてきました。 よいLLMアプリケーションを作るための工夫としてのプロンプトエンジニアリングやRAGなどの手法は、エンジニア界隈では広く一般に知られるようになってきました。

一方、LLMの実験管理や評価の方法についてはまだベストプラクティスが出揃っておらず、各社が手探りで行っているような状態です。
評価ができなれば、どれだけLLMアプリケーションの精度改善のプラクティスが出ても、継続的に精度改善していくことはできません。
また、本番運用されるLLMアプリケーションは、精度やビジネスインパクトへの評価だけではなく、コストやレイテンシーを継続的にモニタリングしていくことも重要です。

発表者が所属するPharmaX社でも例に漏れず、手探りで評価方法を確立しようと奮闘しています。本発表では、発表者が得た知見や工夫を整理して発表したいと思います。

More Decks by PharmaX(旧YOJO Technologies)開発チーム

Other Decks in Technology

Transcript

  1. (C)PharmaX Inc. 2023 All Rights Reserve 2 自己紹介 上野彰大 PharmaX共同創業者・エンジニアリング責任者

    好きな料理はオムライスと白湯とコーラ マイブームはLLMとRust X:@ueeeeniki
  2. (C)PharmaX Inc. 2023 All Rights Reserve 5 本発表のスコープや注意事項について LLMアプリケーションの実験管理と評価について取り組んで来たことや今後の展望をお話します •

    個人的に参考になった記事やPharmaXで取り組んできたこと、今後のどのようなことをやってい きたいのかについて中心にお話します ◦ 個人的な感想や考えを多分に含みます • LLMアプリケーションの実験管理や評価はまだベストプラクティスが出揃っておらず、今回お話 する内容が各社にどの程度取り入れ可能かは不明です ◦ 皆さまでご判断いただければと幸いです • できる限りPharmaXでのリアルな事例や実験結果をお伝えしますが、より詳しく聞きたい方やお 困りごとについて議論したい方は是非 DM等いただければ幸いです
  3. (C)PharmaX Inc. 2023 All Rights Reserve 6 前提とする知識 • LLMの基礎知識は説明しません

    ◦ AIのモデルについての基礎知識もあることが望ましい • 少しでもLLMを使ってアプリケーション開発した経験があることがあることが望ましい • できればLLMアプリケーションを本番運用した経験があるとより話の内容が想像つくと思います LLMのアプリケーション開発の多少の事前知識を仮定します
  4. (C)PharmaX Inc. 2023 All Rights Reserve 8 医療アドバイザーに体調 のことをいつでも気軽に相 談できる

    相談型医療体験 30種類以上の漢方薬からあ なたに合ったものを月毎に 提案 パーソナライズ漢方薬 定期的に漢方をお届けし、 一人ひとりに寄り添うかか りつけ医療を提供 継続的なかかりつけ 一生涯にわたって寄り添うかかりつけ漢方薬局「YOJO」
  5. (C)PharmaX Inc. 2023 All Rights Reserve 9 ソフトウェアに閉じないプロダクト開発 独自の薬局オペレーションシステムを構築し、最適化されたオンライン薬局を実現 ×

    自社薬局をプロトタイプラボ化 ソフトウェア オペレーション リモート 薬剤師組織 薬局業務を効率化す るオペレーションシス テム(薬局OS) 質の高い患者さま対応 のためのオンライン特 化組織 対人業務の質を高め るための対物業務効 率化 「ソフトウェア×オペレーション×薬剤師組織」を プロダクトとして開発
  6. (C)PharmaX Inc. 2023 All Rights Reserve 11 今回対象とするアプリケーション • 管理画面上でボタンを押す(ショートカットキーをタイプする)とチャットがサジェストされる

    ◦ Chat Completions APIで対象ユーザーによってプロンプトを切り替えてサジェストさせている • 最終的には薬剤師が内容をチェック&修正して送ることを想定しており、完全な自動化を目指して いるわけではない ◦ GithubのCopilotのようなイメージで使いたい • 将来的にかなりの精度でサジェストすることができて、薬剤師がほとんど修正しなくてもいいような レベルまで達すれば、ユーザーとのトーク画面に入った時点でサジェッションを始めるようにしたい ◦ 現時点ではそこまでの精度ではないので、薬剤師の自由意志で使用して FBを集めている段階 薬剤師にチャットの返答をサジェッションするために LLMを活用している
  7. (C)PharmaX Inc. 2023 All Rights Reserve 12 プロンプト一部抜粋 薬剤師にチャットの返答をサジェッションするために LLMを活用している

    Systemプロンプト 以下の条件に従って返信してください。 前提: ・あなたの役割は、PharmaX株式会社のYOJOというサービスのかかりつけ薬剤師です。健康や漢方の専門家として、常にユーザーの 感情に寄り添いアドバイスをします。 ...(略) Userプロンプト 対応の基本方針: ・おすすめの漢方薬をよりきちんと提案できるように適宜質問を行ってください。 ・「検討します」とすぐに購入意欲がないような返答をされた方には、それ以上強く営業しすぎないようにしてください。 …(略)… 上記に気をつけながら私があなたが提案する漢方の選択について納得が行くように、共感しながら深掘り質問を行ってください。
  8. (C)PharmaX Inc. 2023 All Rights Reserve 13 プロンプト一部抜粋 Chat Completion

    APIに過去の会話履歴を与えることで、文脈を理解したサジェストを可能にしている
  9. (C)PharmaX Inc. 2023 All Rights Reserve 16 • LLMに与えるプロンプトやパラメータの変更履歴と、プロンプトやパラメータの変更前後で出力が どのように変化したのかを管理することを実験管理という

    • LLMの出力結果の”良し悪し”を定量的・定性的に判断することを評価という • 実験管理と評価をセットで行うことで、プロンプトやパラメータを変更したことで出力が良くなった のか悪くなったのかを判断することができる ◦ 評価と実験管理はセットで運用されることが望ましいが、実験管理すらないとパラメーターの変更履 歴が分からなくなるので、最低限実験管理から導入してみることはオススメ LLMアプリケーションの改善に必要なこと LLMアプリケーションを改善していくためには、特に実験管理と評価が必要
  10. (C)PharmaX Inc. 2023 All Rights Reserve 17 • ①PromptLayerによるプロンプトテンプレートの管理とテンプレートへの出力結果の紐づけ •

    ②プロンプトの全体への適用の前に誰でもプロンプトを実験できるように本番環境に実験環境を 用意したこと ◦ プロンプトを変更してしまうと全薬剤師の生産性に影響を及ぼすため、本番環境で入念な実験をおこ なってからプロンプトの変更をしたい • ③LLMの出力結果を様々な観点で評価し、 PromptLayerに記録したこと ◦ サジェスト内容が医学的に正しい内容だったか、マニュアルに従っているかなど、複数の観点で評価 している ◦ LLMがサジェストしたメッセージと実際に送ったメッセージの文章の類似度( Levenshtein-distance やembedding-distance)も評価している LLMアプリケーションの改善のためのPharmaXの工夫 LLMアプリケーションの改善のために PharmaXで行って特に効果があったのは以下のようなことです
  11. (C)PharmaX Inc. 2023 All Rights Reserve 19 実験管理とはなにか?なぜ実験管理が必要なのか? • LLMに与えるプロンプトやパラメータの変更履歴と、プロンプトやパラメータの変更前後で出力が

    どのように変化したのかを管理することを実験管理という ◦ 事前に準備したデータセットと評価項目を使って評価することもできるが、ビジネス指標への影響の評 価はしばらく運用しないとわからないので、履歴管理(いつどのようにプロンプトを修正したのか)が必 要 ◦ もちろんやり方次第では ABテストのようなことも可能 • 実際のLLMアプリケーションの現場では、開発者以外もプロンプト等を変更できるようなアーキテ クチャを取ることができれば、複数人で高速で PDCAを回すことが可能になる ◦ 複数人でプロンプト等を変更するには、誰いつどのようにプロンプト等を変更したのかを管理すること の重要性が増す 実験管理をすることで、パラメータを変更したことでどのような影響があったのかを振り返る事ができる
  12. (C)PharmaX Inc. 2023 All Rights Reserve 21 その他の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機能がないのが不便
  13. (C)PharmaX Inc. 2023 All Rights Reserve 36 PromptLayerを選定した理由 特にテンプレート機能の使い勝手が良いことが PromptLayerを選定した一番の理由

    • PromptLayerのようにテンプレートを登録することができて、管理画面から編集可能、テンプレー トをコード上で呼び出し、入出力をテンプレートに紐づけることのできる機能が便利 ◦ どのテンプレートのどのバージョンを使っている時にその出力結果が出たのかが分かる ◦ 出力の評価と組み合わせれば、テンプレート変更の前後でどの程度出力が改善したのかが分かる ◦ やり方次第ではテンプレートの ABテストすることも可能になる • 管理画面から編集可能なことで、開発者以外のメンバーもプロンプトの変更履歴を確認、変更でき るようになる ◦ 開発者以外がプロンプトを変更して実験を行うことができるようになれば、実験管理の民主化が起こ り、テンプレート改善の PDCAを回す速度が速くなる
  14. (C)PharmaX Inc. 2023 All Rights Reserve 39 本番でもPromptLayerで実験ができるようにした理由 PharmaXの今回対象としている機能では、利用者が内部のメンバーなので、本番環境でも実験可能 •

    新しい機能を作るときは開発者がローカルで実験してからリリースする ◦ 一方で、ローカルでできるのは事前に準備したデータセットで評価することだけ ◦ 特に新機能の場合は、データセットを新しく準備する必要もある • ローカルでは開発者以外のメンバーが実験しようとしても、環境構築を行わなければならず、本番 さながらのデータ、状況で実験することもできない ◦ 本番で実際の状況で実験するのが一番 PDCAが回る • 本番でプロンプトテンプレートを変更し、 PSチーム全体に適用されてしまうと生産性に悪影響を及 ぼす可能性もあるので、PdMやPSチームのリーダーなど一部のメンバーが実験用のプロンプトを 使って入念に実験する ◦ 実験してよかったテンプレートを全体のプロンプトに適用させる
  15. (C)PharmaX Inc. 2023 All Rights Reserve 41 評価と実験管理の考え方 • PharmaXのように必ずしも評価指標が完全に確立されていなくても、実験管理から導入してみ

    ることはできるしオススメ ◦ 特にPharmaXの場合は、ユーザーが内部にいるので、まずは定性的な評価・ FBだけでもアプリケー ションの改善は進む ◦ どのようなパラメータのときにどのような出力結果だったのかが紐づいて可視化されているだけでも エンジニア以外のメンバーも改善案を出しやすい ◦ 一方でユーザーがtoCの場合など、直接FBを集めづらい場合は、評価と実験管理はある程度セット が望ましいが、実験管理すらないとパラメーターの変更履歴が分からなくなるので、実験管理からの 導入はオススメ • 特に今回紹介したプラクティスのように本番環境でプロンプトやパラメータをエンジニア以外のメ ンバーが実験できるようになっていると改善速度が劇的に上がる 評価指標の確立や可視化が進んでいなくとも、実験管理だけでも始めてみるのはいかがでしょうか
  16. (C)PharmaX Inc. 2023 All Rights Reserve 43 評価とはなにか?なぜ評価が必要なのか • AIの評価とは、AIの出力結果の”良し悪し”を定量的・定性的に判断すること

    • 特にLLMの評価は、例えば、画像認識などの分類問題などとは異なり、正解が 1つに定まるわ けでないので難しい ◦ 例えば、「日本で一番高い山は?」という質問に「富士山」「富士山です」「富士山に決まってんだろー が!」「富士山。標高 3776.12 m。その優美な風貌は …(略)」と答えるのはどれも正解 • LLMの出力は毎度ばらつくため、運用しながら都度評価を行って、運用期間を通じてそのプロン プトやパラメータがよかったのかどうかを判断する必要がある ◦ 定量的な評価ができていれば、プロンプトやパラメータの変更前後で評価の平均点を比べるというよ うな統計的な比較も可能になる AIの評価に関するプラクティス自体は LLMの発展の前から存在していたが、 LLM特有の論点もある
  17. (C)PharmaX Inc. 2023 All Rights Reserve 44 • LLMの評価というときに①事前学習した LLMのモデルそのものや②fine-tuningしたモデルの

    評価を指すこともあれば、③LLMを使ったアプリケーションでの評価(プロンプトや RAGにフォー カス)を指すこともあるので注意が必要 ◦ ①では、そもそも様々な分野で日本語の質問に正しく答えられるか?と言ったことを評価する ▪ 例えば、医学的な問いに正しく答えれるか?というように特定のドメインを扱うことはある一方 で、特定のアプリケーションの評価ではない ◦ ②、③では、特定のユースケースで正しく答えられているか?と言ったことが問われている ▪ ②は特定のドメインに特化させてはいるが比較的一般的な知識を問うもの、特定のアプリケー ションのユースケースに特化させたもののどちらも言うことがある ▪ 特に③はプロンプトを工夫した場合や RAGでデータを与えた場合の出力が、特定のアプリケー ションの特定のユースケースで良い出力であるかが問われている • ③では、アプリケーション開発者がモデル内部のパラメータを変化させられるわけではないの で、temperatureや与えるプロンプトなどが評価するパラメータにあたる 評価とはなにか?なぜ評価が必要なのか ここではモデルそのものの評価ではなく、③の LLMを使ったアプリケーションの評価について扱う
  18. (C)PharmaX Inc. 2023 All Rights Reserve 47 • 特定のユースケースを想定したLLMアプリケーションでは、回答が妥当だったかだけではなく、 実際にどの程度ユーザーに”役立ったか”やどの程度ビジネス上の数値を向上させたのかも評

    価の対象 ◦ 例えば、薬剤師の返信速度化がどの程度高まったか、その結果、どの程度購入率が高まったのか や、薬剤師の生産性をどの程度高めたか、その結果、どの程度人件費が少なくなったかというビジ ネス指標までを最終的には評価する必要がある • 一方で、KGIとなるビジネス指標への影響は様々な要因が混ざり合う上に、評価できるまでの時 間軸も長くなるので、現実的にはその手前の評価軸でも評価する必要がある ◦ 例えば、出力結果がマニュアルなどに沿っているかか、医学的に間違っていないかといった実際の ユースケースに照らし合わせた妥当性の観点で評価 ◦ 例えば、生産性を高めるためには、受入率(どの程度修正せずに受け入れられたか)などの観点で も評価 LLMアプリケーションの評価 ここではモデルそのものの評価ではなく、 LLMを使ったアプリケーションの評価について扱う
  19. (C)PharmaX Inc. 2023 All Rights Reserve 49 様々な観点でLLMの出力結果の評価を記録 薬剤師が実際に文章を送ったタイミングで サジェストした文章と

    薬剤師が送った文章との類似度を評価 サジェストが生成されたタイミング、薬剤師が実際に文章を送ったタイミングでそれぞれ評価し記録 サジェストされた タイミングで 様々な観点で評価
  20. (C)PharmaX Inc. 2023 All Rights Reserve 51 評価の課題と今後の展望 特に評価周りの課題が多いため、順次解決していく必要がある •

    プロンプトの運用期間を通しての評価の可視化を行いたい ◦ 現在はPromptLayerに記録している評価スコアを出力ごとに 1つずつ手動で見ており不便なため、 評価スコアを定期的に BigQueryにインポートして分析、可視化することを想定 ◦ プロンプトの変更前後でどの程度評価結果が変わったのかを統計データで比較できるようにしたい • 類似度計算以外の評価はLLMで評価を行っている以上、その評価が意図した通りの scoreを出 しているのか(直感に則した結果になっているか)を評価し、評価用のプロンプトそのものも改善 していく必要がある ◦ 出力された評価が評価者の直感に反していれば(明らかに医学的に間違ったことを出力しているの に点数は高くなっているなど)、評価用のプロンプトを改善して意味ある評価にする必要がある
  21. (C)PharmaX Inc. 2023 All Rights Reserve 53 まとめ 実験管理・評価周りの知見はまだ少ないのでどんどん出てくると嬉しい •

    評価項目の確立・自動化・可視化などができていなくても実験管理から取り組んでみるのはオス スメ ◦ 実験管理はチームで使用できる簡単なツールから始めてみるのがオススメ • 開発者以外もプロンプトを修正できるようにすることで、プロンプトエンジニアリングの民主化を起 こし、PDCAサイクルを爆速で回すことができる • LLMアプリケーションの評価では、実際のユースケースでどの程度役に立ったかを評価する必要 があるが、KGIとなるビジネス指標への影響は様々な要因が混ざり合ってしまうので、その手前の 指標から評価していくことが望ましい ◦ 自社のユースケースに取って意味のある評価かどうか、想定通りの評価結果になっているかをチェッ クして、評価そのものも改善して行く必要がある