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

LLMアプリケーションの継続的改善のためのFine-tuningの活用

 LLMアプリケーションの継続的改善のためのFine-tuningの活用

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

Other Decks in Technology

Transcript

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

    好きな料理はオムライスと白湯とコーラ マイブームはLLMとRust X:@ueeeeniki
  2. (C)PharmaX Inc. 2024 All Rights Reserve 5 医療アドバイザーに体調 のことをいつでも気軽に相 談できる

    相談型医療体験 30種類以上の漢方薬からあ なたに合ったものを月毎に 提案 パーソナライズ漢方薬 定期的に漢方をお届けし、 一人ひとりに寄り添うかか りつけ医療を提供 継続的なかかりつけ 一生涯にわたって寄り添うかかりつけ漢方薬局「 YOJO」
  3. (C)PharmaX Inc. 2024 All Rights Reserve 7 今回対象とするアプリケーション • ユーザーからのメッセージを受信したタイミングで

    LLMによる返信のサジェストが作られ、一部の メッセージは自動送信&必要があれば薬剤師が確認・修正して送る ◦ 自動で送る場合は当然精度が重要 ◦ サジェストされる場合も、そのまま送信することができれば、返信速度が速くなる&生産性が 高くなるので精度が高いことはやはり重要 • 管理画面上でボタンを押す(ショートカットキーをタイプする)ことでもチャットがサジェストされる 薬剤師にチャットの返答をサジェッションするために LLMを活用している
  4. (C)PharmaX Inc. 2024 All Rights Reserve 9 YOJOにおけるフローエンジニアリング ① ②

    ④ • ①ルールベースでLLM処理可能かを 判定 • ②LLMで会話を分類しLLM処理可能 かを判定 • ③LLMで次のフェーズに移るべきかど うかを判定 • ④LLMでメッセージを作成 • ⑤LLMで作成されたメッセージを評価 (LLM-as-a-Judge)し、一定の水準を 下回ったら再生成して、クリアしたもの のみをサジェストする 現時点では精度高く メッセージ提案できない ため薬剤師が対応 ③ ⑤ ※②〜⑤: GPT-4o
  5. (C)PharmaX Inc. 2024 All Rights Reserve 10 LangGraphで実際に構築したグラフ ルール1 ルール2

    LLM-メッセージ作成 _ 分類4 LLM-会話分類 LLM-メッセージ作成 _ 分類1 LLM-メッセージ作成 _ 分類2 LLM-メッセージ作成 _ 分類3 LLM-フェーズ切替 LangGraphで作成したグラフはmermaidで出力しテストにも使用している
  6. (C)PharmaX Inc. 2024 All Rights Reserve 11 LangSmithによるトレーシング rule1 ①

    ② ③ ④ ⑤ ・・・ rule2 ④ ⑤ ① ② ④ ③ ⑤ ※②〜⑤: GPT-4o
  7. (C)PharmaX Inc. 2024 All Rights Reserve 13 評価とはなにか?なぜ評価が必要なのか • AIの評価とは、AIの出力結果の”良し悪し”を定量的・定性的に判断すること

    • 分類問題や回帰問題などであれば、単純に正答率や誤差を評価すればいい • 一方で自由度の高いLLMの出力の評価は、分類問題などとは異なり、正解が 1つに定まるわけ でないので難しい ◦ 例えば、「日本で一番高い山は?」という質問に「富士山」「富士山です」「富士山に決まってんだろー が!」「富士山。標高 3776.12 m。その優美な風貌は …(略)」と答えるのはどれも正解 • LLMの出力を定量的に評価できれば、プロンプトやパラメータの変更前後で評価の平均点を比 べるというような統計的な比較も可能になる AIの評価に関するプラクティス自体は LLMの発展の前から存在していたが、 LLM特有の論点もある
  8. (C)PharmaX Inc. 2024 All Rights Reserve 14 評価指標のパターン LLMアプリケーションの出力結果の評価という時にも、複数の評価指標を指すことがあるので注意 •

    期待するアウトプット(Grand Truth)と実際のアウトプットを比較してスコアリングする ◦ 例えば、2つの文字列間の距離をembedding distanceやlevenshtein distanceでスコ アリングする • LLMエージェントの出力の妥当性をLLMでスコアリング(合格/不合格判定)する LLM-as-a-Judgeも有効 ◦ 特に信頼性担保の観点からは下記のような観点に注意する ▪ 真実性、安全性、公平性、堅牢性、プライバシー、機械倫理 ◦ 上記のような一般的な観点だけではなく、下記のようなアプリケーション独自の観点でも評 価する必要がある ▪ 自社の回答のライティングマニュアルに従っているか ▪ (VTuberなどが)キャラクター設定に合っているか
  9. (C)PharmaX Inc. 2024 All Rights Reserve 15 LLM-as-a-Judgeの必要性 LLMアプリケーションの出力結果を LLMで評価することをLLM-as-a-Judgeという

    • LLMの出力を人が評価するのは、工数・コスト・速度の観点から限界があるので、 LLMにLLMの 出力を評価をさせようというアイディア ◦ 人で評価する場合、異なる評価者の間で評価基準を一致させるのは難しいが、 LLMなら 可能 ◦ LLMであればプロンプトを作り込めば、専門家にしかできない評価も高精度にさせることが できる
  10. (C)PharmaX Inc. 2024 All Rights Reserve 16 評価用のプロンプトのイメージ LLMからのメッセージ提案を評価させるためのプロンプトを定義し、 LLMにLLMの評価をさせる

    System あなた(assistant)には、別のassistant(chat-assistant)のメッ セージを評価していただきます。 ## chat-assistantの前提 chat-assistantの役割は、PharmaX株式会社のYOJOという サービスのかかりつけ薬剤師です。健康や漢方の専門家とし て、常にユーザーの感情に寄り添いアドバイスをします。 ...(略) User chat-assistantの最後の返答がどの程度下記の文章作成マニュ アルに従っているかで0〜100点のスコアを付けて下さい ## 文章のライティング方針 ・丁寧に対応する ・謝罪では絵文字を使わずに、文章だけで表現する ・難しい漢字はひらがなで書く ・細かい説明は箇条書きで書く ...(略) 評価用プロンプト
  11. (C)PharmaX Inc. 2024 All Rights Reserve 18 LLMアプリケーションのオンライン評価 • LLMアプリケーションでは、実際にどの程度ユーザーに

    ”役立ったのか”やどの程度”ビジネス上 の数値を向上させたのか”を評価すべき ◦ 例えば、 ・薬剤師の返信速度がどの程度速まったり、どの程度購入率が向上したか ・薬剤師の生産性をどの程度高め、どの程度人件費が減少したか というビジネス指標までを最終的には評価する必要がある • 一方で、KPIとなるビジネス指標への影響は様々な要因が混ざり合う上に、評価できるまでの時 間軸も長くなるので、現実的にはその手前の評価軸でも評価する必要がある ◦ 例えば、出力結果がマニュアルなどに沿っているかか、医学的に間違っていないかといっ た実際のユースケースに照らし合わせた妥当性を LLM-as-a-Judgeで評価 ◦ 例えば、ユーザーの返信率などの実際の反応で評価 リリース後のオンライン評価では様々な観点で LLMアプリケーションの”有用性”を評価する必要がある
  12. (C)PharmaX Inc. 2024 All Rights Reserve 19 プロンプトの変更前後での 評価スコアの変化をモニタリング LLM-as-a-Judgeでの評価結果を日次で可視化

    各LLM-as-a-Judgeのスコアを可視化することで、プロンプト変更による改善の可否を判断する
  13. (C)PharmaX Inc. 2024 All Rights Reserve 20 実際のユーザーの反応でも評価する ユーザーからの返信数・割合 返信ありの件数

    返信なしの件数 返信ありの件数 返信なしの件数 LLMのサジェストをそのまま投稿 薬剤師が1から作成して投稿 ユーザーからの返信速度 LLMのサジェストをそのまま投稿したメッセージに対するユーザーの返信速度 薬剤師が1から作成して投稿したメッセージに対するユーザーの返信速度
  14. (C)PharmaX Inc. 2024 All Rights Reserve 22 本番でのLLMの出力をアノテーションしてデータセットに蓄積 xxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx

    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx LangSmithのAnnotation Queuesに蓄積してアノテーションしたデータをデータセットとして蓄積 修正する必要があれば修 正してデータセットに追加
  15. (C)PharmaX Inc. 2024 All Rights Reserve 25 モデルへのベンダーロックインは発生する • PharmaXの実験では、新しいモデルが出るたびに複数のプロンプトで実験するが、

    GPTシリー ズのスコアを”何故か”超えてこない ◦ プロンプトは変えていないので、我々の改善しているプロンプトが GPTシリーズに最適化さ れているからだと想定している ◦ 体感的には、ベンチマークで出ているスコアと自社のユースケースに当てはめたときのス コアは”ほとんど相関がない”ように感じる 実務的にはモデルへのロックインは想定しているよりも発生してしまうものだと感じている
  16. (C)PharmaX Inc. 2024 All Rights Reserve 28 ファインチューニングしたモデルのコスト削減効果 gpt-4o-2024-08-06 


    $2.50 / 1M input tokens 
 $10.00 / 1M output tokens 
 gpt-4o-2024-05-13 
 $5.00 / 1M input tokens 
 $15.00 / 1M output tokens 
 gpt-4o-mini 
 $0.150 / 1M input tokens 
 $0.600 / 1M output tokens 
 fine-tuned gpt-4o-mini 
 $0.30 / 1M input tokens 
 $1.20 / 1M output token 
 ファインチューニングすることで劇的にコストを下げることができる 約1/10
  17. (C)PharmaX Inc. 2024 All Rights Reserve 29 OpenAIの蒸留機能 DevDayで発表された蒸留機能を使えば、上位モデル出力で GPT-4miniなどの安価なモデルを蒸留できる

    xxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx outputは 修正できない
  18. (C)PharmaX Inc. 2024 All Rights Reserve 30 • OpenAIのダッシュボード上に簡単にデータを溜めて、そのデータを使って安価なモデルをファイ ンチューニング=蒸留することができる

    ◦ 現時点では、データを貯めることそのものには値段がかからない理解 (※ 公式ドキュメントをご確認ください) • 一方で、蓄積したデータのoutputを修正する機能は付いていないので、精度は元データを生成 した上位のモデルを超えることはない ◦ 上位モデルよりも精度も向上させたければ、 LangSmithのようにアノテーション機能を備 えたツールを使って出力を修正する必要がある ◦ データ数さえ確保できれば元データを生成した上位のモデル弱の精度にはなるので、すで に運用中のアプリケーションがあり、精度がミッションクリティカルでなければ、蒸留して安 価なモデルに置き換えて損はないのではないか 蒸留の運用まとめ OpenAIのネイティブの蒸留機能では、現時点では outputの修正は出来ないことに注意
  19. (C)PharmaX Inc. 2024 All Rights Reserve 32 LLM Opsまとめ •

    LLMアプリケーションのリリース前に実験することでプロンプトエンジニアリングとフローエンジニ アリングの設計を行っている ◦ オフライン評価としてLLM-as-a-Judgeを導入している • LangSmithによる実験管理とトレースの可視化を行っている • オンライン評価として、LLM-as-a-Judgeによる評価、ユーザーの返信率や返信速度、最終的な ビジネス指標として購入率や継続率まで日次・モニタリングしている • 本番での出力結果をLangSmithでアノテーションすることで、本番での出力の正答率を評価す るだけではなく、データセットを蓄積することでオフライン評価、ファインチューニングに活用して いる LLMアプリケーションのライフサイクルを管理し、継続的な改善ループを回し続けている
  20. (C)PharmaX Inc. 2024 All Rights Reserve 35 チャットアプリケーションにおける返信速度の重要性 • LINEというインターフェースの特性上、数分〜

    10分程度の待ち時間は許容されると考えていた ◦ アンケートでも返信速度に対する不満は多くはなかった • 実際には、LLMのサジェスト機能を導入して返信速度が早くなった結果、ユーザーからの返信 率・返信速度、さらには購入率までもが向上した ◦ 感覚的には、ユーザーは10秒以内でLINEを閉じず、30秒以内でスマホを閉じないという 境界があるのではないか? • チャットアプリケーションであってもある程度の返信速度の担保の重要性を悟った チャットアプリケーションでは、 LLMを活用して返信速度を向上できればポジティブな影響がある
  21. (C)PharmaX Inc. 2024 All Rights Reserve 39 まとめ マルチエージェントLLMチャットボットの精度 &レスポンス速度向上戦略についてお話した

    • LLMチャットボットでも精度と速度を高次元で両立させることは重要 ◦ YOJOの例では、ユーザーからの返信率・返信速度、購入率が明確に向上した • フローエンジニアリングを実践することで、精度は向上するが、処理系全体のレスポンス速度は 遅くなってしまう可能性がある • 投機的な並列処理を行うことで処理時間を短縮することができる ◦ 投機的な処理を行うことで、コストは割高になるので、リリース後にデータセットを収集し、 一部の処理のML化、あるいは安価のモデルのfine-tuningを行うことでコストダウンも狙 う