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

[20240220 第38回MLOps勉強会] MLflowを用いたLLMモデル開発と評価

[20240220 第38回MLOps勉強会] MLflowを用いたLLMモデル開発と評価

2024年2月20日にMLOps勉強会にて発表させていただいた内容の資料です。

MLflow: https://mlflow.org/
イベントページ: https://mlops.connpass.com/event/309348/
発表動画: https://www.youtube.com/watch?v=SV8xSOSemDc

Yuki Watanabe

March 11, 2024
Tweet

Other Decks in Programming

Transcript

  1. ©2024 Databricks Inc. — All rights reserved 2 自己紹介 •

    2023年10月にDatabricks ML OSSチームに参加 • 業務の9割方はMLflowの開発 • 前職ではMLチームのSDE • 趣味:テニス・イラスト Your subtitle here Yuki Watanabe Harutaka Kawamura • 2019年に MLflow にコントリビュートし始める • 2020年に Databricks に入社 • 趣味:韓国語(初心者)
  2. ©2024 Databricks Inc. — All rights reserved 4 本日の内容 MLflowとは?

    LLMOpsとMLflow デモ: MLflowと進めるLLM開発 MLflowの最近とこれから 1 2 3 4
  3. ©2024 Databricks Inc. — All rights reserved 6 モデル学習やハイパラチューニン グの実験管理を行いたい

    複数モデルの評価/比較を 効率的に行いたい プロジェクト間で異なるライブラリや 開発環境を整理したい (DSが訓練した)モデルを安全に 本番環境にデプロイしたい モデルのバージョン管理や ロールバックを簡単に行いたい デプロイや運用を含んだ 包括的なシステム管理をしたい チームのコラボレーションを 円滑にしたい モデルやコードなどのチームの資 産を一元管理したい 開発チームの生産性を ビジネスゴールに集中させたい データサイエンティスト ML エンジニア マネージャー ML開発プロセス全体の課題を解決するプラットフォーム
  4. ©2024 Databricks Inc. — All rights reserved 7 MLflowの最近 MLflow

    2.10.2 「MLflowといえばTraditional MLだよね」 • DLやLLM向けの機能がかなり増えました • ~50%のユーザはDLやLLMに使っています • MosaicMLも使っています
  5. ©2024 Databricks Inc. — All rights reserved 9 LLMOps 従来のML開発プロセスとの違い

    学習はより手軽に、評価はより難しく ※Zero-shotやFine-tuningを含めた広義の「学習」フェーズ
  6. ©2024 Databricks Inc. — All rights reserved 10 LLMOps 従来のML開発プロセスとの違い

    学習はより手軽に • 訓練せずにプロンプトのみでタスクへの適用が可能 • 基盤モデルへのアクセスはSaaSやHuggingFace経由で簡単に • リサーチ・エンジニアリング知識なしでもPOCが行える 評価はより難しく • 非構造で非決定的 • タスクの多様化と複雑化によるベンチマーク評価の難しさ • 基盤モデル+プロンプトの膨大な組み合わせ ※Zero-shotやFine-tuningを含めた広義の「学習」フェーズ
  7. ©2024 Databricks Inc. — All rights reserved 11 従来のモデル評価方法 データセット

    評価指標 ベンチマーク (MS COCO, ImageNet, ..) 自作データセット ヒューリスティック (Accuracy, AUC, …)
  8. ©2024 Databricks Inc. — All rights reserved 12 LLMの評価方法 データセット

    評価指標 公開ベンチマーク (GLUE, ANLI, ..) ヒューリスティック (Accuracy, AUC, …) • 基盤モデルの様々なタスクに対する 性能を測れる • 一方で、解決したいタスクに対する性 能とは必ずしも一致しない
  9. ©2024 Databricks Inc. — All rights reserved 13 LLMの評価方法 データセット

    公開ベンチマーク (GLUE, ANLI, ..) 自作データセット • 最も信頼がおける方法 • アノテーションにも高度なドメイン知識 が必要だとスケールしづらい • 情報の更新で繰り返し行う必要
  10. ©2024 Databricks Inc. — All rights reserved 14 LLMの評価方法 データセット

    公開ベンチマーク (GLUE, ANLI, ..) 自作データセット 生成データセット • 既存のドキュメントやサンプル から質問と回答を自動生成 • Hard Sampleは生成されづらい • 生成そのものがMLシステム
  11. ©2024 Databricks Inc. — All rights reserved ヒューリスティック (ROUGE, GLUE,

    …) 15 LLMの評価方法 公開ベンチマーク (COCO, ImageNet, ..) 自作データセット • LLMで解決したいタスクに比べると複 雑さや難易度が低い • ROUGEのように指標そのものにバイ アスが存在するものも 評価指標
  12. ©2024 Databricks Inc. — All rights reserved 人手での評価 ヒューリスティック (ROUGE,

    JGLUE, …) 16 LLMの評価方法 公開ベンチマーク (COCO, ImageNet, ..) 自作データセット • 初手としてはやはり最善 • それでも再現性/一貫性の担保やス ケーラビリティは問題 評価指標
  13. ©2024 Databricks Inc. — All rights reserved LLM-as-a-Judge (LLMでの評価) 人手での評価

    ヒューリスティック (ROUGE, JGLUE, …) 17 LLMの評価方法 自作データセット • 比較的低コストで良くスケール • バイアスがあり評価の質は劣る E.g. 同じモデルや長い出力を好む 評価指標
  14. ©2024 Databricks Inc. — All rights reserved 18 LLMの評価方法 データセット

    公開ベンチマーク (GLUE, ANLI, ..) 自作データセット 生成データセット プロダクションログ オンライン評価(A/Bテスト) 人手での評価 ヒューリスティック (ROUGE, JGLUE, …) 18 評価指標 LLM-as-a-Judge • ユーザーのニーズを反映した 分布のデータが得られる • フィードバックをアノテーション代 わりに • 最低限世の中に出せるという 保証は必要
  15. ©2024 Databricks Inc. — All rights reserved 19 LLMの評価方法 現状の(おそらく)最善手

    1. オフライン評価でなるべく効率よく候補を絞る 2. 評価の高いモデルに対して(UXの基準をパスした上で) 高速にオンライン評価のイテレーションを行う
  16. ©2024 Databricks Inc. — All rights reserved 20 LLMの評価方法 1.

    オフライン評価でなるべく効率よく候補を絞る    -> MLflow LLM Evaluation / Prompt Engineering UI 2. 評価の高いモデルに対して(UXの基準をパスした上で) 高速にオンライン評価のイテレーションを行う -> MLflow Models / MLflow Deployment Server -> Databricks Model Serving / Inference Table 現状の(おそらく)最善手
  17. ©2024 Databricks Inc. — All rights reserved 22 MLflow Evaluation

    オフライン評価を効率化する標準API • 従来の評価指標 - Rouge, 有害性 • LLM-as-a-Judge - 正確性, Faithfulness • Retriever - コンテキストのPrecition/Recall • 非機能要件 - Latency, トークン使用数 • カスタム指標も実装可能
  18. ©2024 Databricks Inc. — All rights reserved 24 MLflow Models

    可搬性の要となる標準フォーマット • モデルと推論に必要なメタデータを まとめてパッケージ ◦ 依存ライブラリとバージョン ◦ 入出力形式 (Model signature) ◦ プロンプト • 単一のAPIで推論 • ローコードでデプロイ ◦ コンテナ化してクラウドやk8sに ◦ Databricks Model Serving
  19. ©2024 Databricks Inc. — All rights reserved 26 Databricks Model

    Serving ScalabilityとObservabilityを実現する 推論インフラ • MLflow Modelをノーコードでデプロイ • Scale-to-zero オートスケーリング • 複数モデルのルーティング • Inference Table ◦ 推論ログを即SQL可能 ◦ モデルの性能やデータドリフト が自動でダッシュボード化
  20. ©2024 Databricks Inc. — All rights reserved 28 MLflowによるLLM開発 仮想シナリオ:SaaS

    API・Public Modelを用いた日本食QAボット開発 ステップ 1. 評価用データセットを用意 2. OpenAIやMixtral8x7bとプロンプトの組み合わせでMLflow Models作成 3. 各モデルをMLflow Evaluationで評価 4. 最も良いモデルをDatabricks Model Servingにデプロイ
  21. ©2024 Databricks Inc. — All rights reserved 29 Step 1.

    評価用データセットの用意 Wikipediaの日本食ページ(例)を元にGPT3.5で生成した100ペアのQAセット • MLflow RAG Tutorialsに大凡同じデータセットの作り方が載っています. Context から質問と回答のペアを生成
  22. ©2024 Databricks Inc. — All rights reserved 30 Step 2.

    モデル準備 (1) Direct (2) Verbose (3) Conciseの3種類のシステムプロンプトを用意
  23. ©2024 Databricks Inc. — All rights reserved 31 Step 2.

    モデル準備 MLflow OpenAI Flavorを用いて3種類のモデルを作成
  24. ©2024 Databricks Inc. — All rights reserved 32 Step 2.

    モデル準備 同様にMixtral8x7B (Foundation Model APIs)についても3種類のモデルを作成
  25. ©2024 Databricks Inc. — All rights reserved 33 Step 3.

    モデルの評価 MLflow Evaluation (mlflow.evaluate) を用いて6種類のモデルを一括評価
  26. ©2024 Databricks Inc. — All rights reserved 34 Step 3.

    モデルの評価 記録された評価結果を確認 ☝☝☝ 評価結果
  27. ©2024 Databricks Inc. — All rights reserved 35 Step 3.

    モデルの評価 Answer Correctnessはいずれのプロンプト でもOpenAIモデルが高得点.その中でも 特に簡潔な回答を求めた場合が最も良い結果. Latencyも全体的にOpenAI が優位、Mixtralも簡潔な回答 を求めれば十分早い
  28. ©2024 Databricks Inc. — All rights reserved 36 Step 3.

    モデルの評価 Evaluationビューで詳細な生成結果やLLM-as-a-Judgeの理由も確認可能 Mixtralはそもそも日本語が あまり得意でない Correctness: 3 Correctness: 5 Correctness: 5 Correctness: 2 Correctness: 4 Correctness: 3 Correctness: 2 Correctness: 2 Correctness: 1 情報を足そうとして間違った回答を生 み出してしまうパターン (味噌カツは鶏ではない ) LLMによると2点をつけた理由は 「Natto-kinを入れている」ことだ が、正直微妙なライン
  29. ©2024 Databricks Inc. — All rights reserved 37 Step 4.

    デプロイメント ① Model Registryにモデルを登録 ② “Serve Model”を実行 複数モデルにTrafficを 振り分けることも可能 カタログ名とモデルを指定して mlflow.register_model() 自動でバージョンが作成される. コメントやエイリアスも任意で設定. Inference Tableを有効化
  30. ©2024 Databricks Inc. — All rights reserved 38 Step 4.

    デプロイメント 通常数分でエンドポイントが立ち上がってリクエスト可能になります エンドポイントが立ち上がってから程なくして Inference Tableも利用可能になります.
  31. ©2024 Databricks Inc. — All rights reserved 40 MLflowのこれから 開発メンバーも増え(󰐵

    2 󰏦 2 󰎩 1 󰑔 1)、非常にアクティブに開発しています • LLM・Deep Learningへのサポートをさらに強化 • より分かりやすいドキュメントやチュートリアルの拡充 • 新しいML開発パラダイムに向けた大規模な機能追加・刷新 • Prompt Engineering - 学習を行わずにモデルをコントロール • RAG - モデル開発だけでなく、システムの一部としてモデルを運用する
  32. ©2024 Databricks Inc. — All rights reserved 41 MLflowのはじめ方 MLflow、始めやすくなっています

    • まずは新しい公式サイトに • ドキュメントも刷新されました • すぐに動かせるNotebookが大量に増えました(LLM全般の学習にも) • Databricks Community Edition で環境やストレージの設定なしで無料で試せ ます • Contributionも大歓迎です!!(good-first-issueも沢山あります)