エンジニア選書 MLflowで実践するLLMOp s ――生成AIアプリケーションの実験管理と品質保証
- 弥生隆明,渡辺祐貴,大内山浩,平田東夢,河村春孝 著
- 定価
- 3,960円(本体3,600円+税10%)
- 発売日
- 2026.4.20
- 判型
- B5変形
- 頁数
- 376ページ
- ISBN
- 978-4-297-15573-5 978-4-297-15574-2
サポート情報
概要
本書は、LLMアプリケーションの開発・運用に必要な一連のプロセス――可観測性の確保、品質評価、プロンプト管理、本番展開――を、オープンソースプラットフォーム「MLflow」を使って体系的に実践する技術書です。
LLMアプリケーションは、従来の機械学習システムとは異なる難しさを持ちます。プロンプトのわずかな変更が品質に大きく影響し、エージェントの挙動は複雑で追跡が難しく、コストは見えにくい場所で膨らみます。MLflow 3はこうした課題に正面から向き合い、トレーシング、評価(LLM-as-a-Judge)、Prompt Registry、AI Gatewayといった機能を1つのプラットフォームに統合しました。
本書では、シンプルなLLMアプリケーションから始め、RAGシステム、マルチエージェントまで段階的にカバーしています。実際に動くPythonコードとともに、「作って終わり」ではなく「運用し続けられる」LLMアプリケーションの構築方法を提供します。
こんな方にオススメ
- LLMアプリケーションの開発に興味がある人
- LLMアプリケーションを運用しているが、課題を感じている人
目次
第1章 LLMOpsの世界へようこそ
1.1 なぜ今LLMOpsが必要なのか
- 1.1.1 生成AIアプリケーションの急速な普及
- 1.1.2 LLM導入の失敗から学ぶ教訓
- 1.1.3 従来の開発手法の限界
- 1.1.4 LLMOpsによる成功事例
- 1.1.5 LLMOpsの登場背景
- 1.1.6 規制動向とコンプライアンス要件
1.2 従来のMLOpsとLLMOpsの決定的な違い
- 1.2.1 アーキテクチャの根本的な違い
- 1.2.2 開発サイクルの劇的な変化
- 1.2.3 イテレーション速度の違い
- 1.2.4 実験の性質の変化
- 1.2.5 バージョン管理対象の変化
- 1.2.6 評価手法の根本的な違い
- 1.2.7 セキュリティとプライバシーの新パラダイム
- 1.2.8 運用面での違い
- 1.2.9 チーム構成と役割の変化
1.3 MLflowが解決するMLOps/LLMOpsの課題
- 1.3.1 従来のMLOpsにおける課題
- 1.3.2 LLM時代の新たな課題
- 1.3.3 MLflowのLLM対応機能の全体像
- 1.3.4 LLMOpsの課題とMLflowの4つのコアコンポーネント
1.4 本書の構成と読み方ガイド
- 1.4.1 本書の全体構成
- 1.4.2 読者層別の読み方ガイド
- 1.4.3 サンプルコードとリソース
- 1.4.4 効果的な学習のためのヒント
- 1.4.5 学習目標とマイルストーン
1.5 まとめ
- 1.5.1 本章の重要ポイント
- 1.5.2 次章への準備
- 1.5.3 最後に
第2章 MLflowとは
2.1 MLflowの進化を知る
2.2 MLflow以前の機械学習プロジェクトにおける課題(~2018年)
- 2.2.1 実験の散逸
- 2.2.2 チーム共有の障壁
- 2.2.3 本番環境でのギャップ
2.3 MLOpsプラットフォームとしてのMLflowの誕生・発展(2018~2022年)
- 2.3.1 実験管理
- 2.3.2 Model Registry
- 2.3.3 MLflowがもたらした変化
2.4 LLMのブレークスルーと課題の変化(2023~2024年)
- 2.4.1 ChatGPTによるLLMの爆発的な普及
- 2.4.2 モデル中心からシステム中心へ
2.5 MLflowの誕生(2025年)
2.6 まとめ
第3章 MLflowのインストールと初期設定
3.1 前提条件の確認
- 3.1.1 Python環境の準備
- 3.1.2 uvのインストール
3.2 サンプルプロジェクトのセットアップ
- 3.2.1 サンプルエージェントの概要
- 3.2.2 リポジトリのクローン
- 3.2.3 依存パッケージのインストール
- 3.2.4 MLflowのインストール
- 3.2.5 Tracking Serverの起動
3.3 サービスの設定とエージェントのテスト実行
- 3.3.1 APIキーの取得
- 3.3.2 環境変数の設定
- 3.3.3 ドキュメントデータの取り込み
- 3.3.4 エージェントの実行
3.4 応用(1):OpenAI以外のLLMを使用する場合
- 3.4.1 Anthropic
- 3.4.2 Google Gemini
- 3.4.3 Azure OpenAI
- 3.4.4 Amazon Bedrock
3.5 応用(2):より高度なTracking Serverの設定
3.6 応用(3):マネージドMLflowの活用
- 3.6.1 Databricks
- 3.6.2 Amazon SageMaker
- 3.6.3 Nebius
- 3.6.4 Red Hat OpenShift AI
3.7 まとめ
第4章 可観測性の確保──トレーシングの導入
4.1 可観測性・トレーシングとは
- 4.1.1 LLMアプリケーションの複雑化
- 4.1.2 アプリケーションのブラックボックス化
- 4.1.3 可観測性とトレーシング
4.2 LLMアプリケーションにおけるトレーシング
- 4.2.1 プロンプトとレスポンスの内容
- 4.2.2 トークン使用量とコスト管理
- 4.2.3 モデルのパラメータとデフォルト値の可視化
- 4.2.4 ツール呼び出しの詳細
- 4.2.5 処理の階層構造と並列実行の可視化
- 4.2.6 データとしてのトレースの価値
4.3 トレーシングを有効にする
4.4 MLflow QAエージェントへのトレーシング導入
- 4.4.1 自動トレーシングの有効化
- COLUMN 実験(Experiment)とは
- 4.4.2 実行してトレースを確認
- 4.4.3 エラーのデバッグと修正
4.5 トレースに追加情報を付与する
- 4.5.1 タグの追加
- 4.5.2 タグを使ったトレースの検索
- 4.5.3 会話セッションの管理
4.6 トレーシングの仕組みと実装
- 4.6.1 自動トレーシング(Autolog)
- 4.6.2 手動トレーシング
- 4.6.3 自動トレーシングと手動トレーシングの組み合わせ
4.7 応用(1):TypeScriptアプリケーションのトレーシング
- 4.7.1 MLflow TypeScript SDKでのトレーシング
- 4.7.2 Vercel AI SDKでのトレーシング
4.8 応用(2):トレースの検索
4.9 応用(3):OpenTelemetryとの連携
- 4.9.1 MLflowトレースのエクスポート
- 4.9.2 MLflowへのOTLPトレースの取り込み
- 4.9.3 OpenTelemetry Collectorの使用
4.10 応用(4):並行実行とスレッド安全性
- 4.10.1 非同期処理(async/await)
- 4.10.2 マルチスレッド環境
4.11 まとめ
第5章 改善サイクルを加速する ──評価の仕組み
5.1 LLMアプリケーションの品質保証の難しさ
- 5.1.1 LLMエージェントの複雑性
- 5.1.2 評価をする=開発が遅くなる?
5.2 評価の始め方:まずは実際に動かしてみる
- 5.2.1 テスト用の質問を用意
- 5.2.2 推論を実行し、人手で評価
5.3 ドメイン専門家によるレビュー
5.4 評価基準を決定する
- 5.4.1 自然言語の出力を評価することの難しさ
- 5.4.2 LLM-as-a-Judgeとは
- 5.4.3 LLMジャッジを利用する際の注意点
- 5.4.4 MLflowにおけるスコアラーの実装
- 5.4.5 組み込みスコアラー(ルールベース/LLMジャッジ)
- COLUMN MLflowの評価プロンプトを読む
- 5.4.6 カスタムスコアラーとGuidelinesスコアラー
- 5.4.7 スコアラーのバージョン管理
5.5 評価データセットの準備
5.6 自動評価の実行
- 5.6.1 評価の実行
- 5.6.2 評価結果の確認
- 5.6.3 評価ランの比較
- 5.6.4 分析の次のステップ
5.7 応用(1):会話セッションのシミュレーションと評価
- 5.7.1 単発の評価 vs. 会話の評価
- 5.7.2 会話セッション向けの組み込みスコアラー
- 5.7.3 会話セッションのカスタムスコアラー
- 5.7.4 シミュレーターによる会話の生成と評価
- 5.7.5 ペルソナや目標を実際の会話ログから作成する
- 5.7.6 テストケースのデータセット管理
5.8 応用(2):LLMジャッジのアライメント
- 5.8.1 アライメントのワークフロー
- 5.8.2 MemAlign:メモリによるアライメント
5.9 応用(3):サードパーティ評価ライブラリとの連携
5.10 まとめ
第6章 プロンプトエンジニアリング──プロンプトの運用と管理
6.1 プロンプト管理の課題とPrompt Registryの価値
- 6.1.1 プロンプト管理の課題
- 6.1.2 Prompt Registryの価値
6.2 プロンプトのバージョニングとライフサイクル管理
- 6.2.1 プロンプトの登録
- 6.2.2 バージョン更新と不変性
- 6.2.3 エイリアス管理とライフサイクル
- 6.2.4 タグとメタデータ
- 6.2.5 プロンプトの性能分析
- 6.2.6 モデルパラメータの保存
- 6.2.7 構造化出力(Structured Output)の利用
6.3 プロンプトの運用・改善戦略
- 6.3.1 プロンプトのオフライン評価
- 6.3.2 プロンプトの段階的デプロイ
- 6.3.3 プロンプトのA/Bテスト
- 6.3.4 プロンプトの自動最適化
6.4 まとめ
第7章 本番環境で動かす──サービングとデプロイメント
7.1 LLMサービングの課題
- 7.1.1 従来のMLサービングとの違い
- 7.1.2 エージェントサービング固有の課題
- 7.1.3 MLflowのサービング機能
- 7.1.4 サービング方式の選択
7.2 エージェントのサービング準備
- 7.2.1 Agent Server用エージェント定義
- 7.2.2 Prompt Registryとの統合
- 7.2.3 Agent Serverの起動と動作確認
- COLUMN Models from CodeとModel Registry
7.3 バージョン管理とサービング評価
- 7.3.1 Gitベースのバージョントラッキング
- 7.3.2 サービング環境での評価
7.4 AI Gatewayによるプロバイダー管理
- 7.4.1 AI Gatewayの役割とアーキテクチャ
- 7.4.2 AI Gatewayのセットアップ
- 7.4.3 エージェントからAI Gatewayを利用する
- 7.4.4 A/Bテストとフォールバック
- 7.4.5 使用状況の追跡とコスト管理
7.5 本番デプロイメント
- 7.5.1 デプロイ前チェックリスト
- 7.5.2 Dockerコンテナとしてのデプロイ
- 7.5.3 Kubernetesへのデプロイ
- 7.5.4 Databricks Model Servingによるデプロイ
- 7.5.5 ロールバック戦略
7.6 応用(1):ストリーミングとResponsesAgent
- 7.6.1 ストリーミングレスポンスの実装
- 7.6.2 ResponsesAgentによるカスタム実装
7.7 応用(2):カスタムアプリケーション統合
- 7.7.1 FastAPIラッパー
- 7.7.2 Gradioによるデモインターフェース
7.8 まとめ
第8章 監視と運用──LLMアプリケーションの健全性管理
8.1 本番環境でのトレースベース監視
- 8.1.1 本番環境におけるトレーシングの重要性
- 8.1.2 効果的なトレース設計の指針
- 8.1.3 MLflow軽量トレーシングSDK
- 8.1.4 本番トレーシングの基本設定
- 8.1.5 トレースデータの保存先と戦略
- 8.1.6 トレースへのメタデータ追加
- 8.1.7 サンプリング戦略
8.2 トークン使用量とコストの可視化
- 8.2.1 トークン使用量追跡の重要性
- 8.2.2 Overviewダッシュボード
- 8.2.3 トークン使用量の自動追跡
- 8.2.4 コストの可視化と監視
- 8.2.5 コスト最適化戦略
8.3 品質メトリクスのリアルタイム追跡
- 8.3.1 LLMアプリケーションの品質課題
- 8.3.2 監視すべき品質メトリクス
- 8.3.3 ユーザーフィードバックの収集
- 8.3.4 LLMジャッジによる自動評価
- 8.3.5 継続的評価パイプラインの構築
8.4 アラート設定とインシデント対応
- 8.4.1 アラート戦略の設計
- 8.4.2 アラート閾値の設定
- 8.4.3 アラート通知システム
- 8.4.4 インシデント対応フロー
- 8.4.5 ロールバック戦略
8.5 OpenTelemetryとの統合
- 8.5.1 OpenTelemetryが必要になる場面
- 8.5.2 OpenTelemetryの概要
- 8.5.3 MLflow TracingのOTLP設定
- 8.5.4 OpenTelemetry Collectorの設定
- 8.5.5 主要な可観測性プラットフォームとの統合
- 8.5.6 GenAI Semantic Conventions
8.6 まとめ
- 8.6.1 監視・運用チェックリスト
- 8.6.2 次のステップ
- COLUMN LLMアプリケーション監視の成熟度モデル
第9章 実践ケーススタディ
9.1 非構造文書からの情報抽出アプリケーション
- 9.1.1 実際の活用事例
- 9.1.2 アプリケーションの処理の流れ
- 9.1.3 MLflowの使いどころ
- 9.1.4 実装例
- 9.1.5 サービングまでの手順
- COLUMN MLflow PyFuncとは
- 9.1.6 本番運用に向けた工夫
- 9.1.7 本節のまとめ
9.2 社内技術文書検索システム(エージェント型RAG)
- 9.2.1 実際の活用事例
- 9.2.2 アプリケーションの処理の流れ
- 9.2.3 MLflowの使いどころ
- 9.2.4 実装例
- 9.2.5 サービングまでの手順
- 9.2.6 本番運用に向けた工夫
- 9.2.7 本節のまとめ
9.3 技術レポート作成マルチエージェント
- 9.3.1 実際の活用事例
- 9.3.2 アプリケーションの処理の流れ
- 9.3.3 MLflowの使いどころ
- 9.3.4 実装例
- 9.3.5 サービングまでの手順
- 9.3.6 本番運用に向けた工夫
- 9.3.7 本節のまとめ
9.4 まとめ
第10章 エンタープライズ環境でのMLflow活用
10.1 エンタープライズ環境におけるLLMOpsの要件
- 10.1.1 エンタープライズLLMOpsの全体像
- 10.1.2 技術要件
- 10.1.3 ガバナンスとコンプライアンス
- 10.1.4 セキュリティとアクセス制御
- 10.1.5 コスト管理と最適化
10.2 Databricksプラットフォームの概要
- 10.2.1 Databricksとは
- 10.2.2 統合データレイクハウスアーキテクチャ
- 10.2.3 Unity Catalogによるデータガバナンス
- 10.2.4 Delta Lakeとの統合
10.3 DatabricksにおけるMLflow実装
- 10.3.1 OSS MLflowとマネージドMLflowの違い
- 10.3.2 Databricksワークスペースでの設定
- 10.3.3 Mosaic AI Agent Frameworkとの統合
- 10.3.4 Agent Bricksによる自動最適化
- 10.3.5 ResponsesAgentインターフェースによるエージェント開発
- 10.3.6 エージェント評価機能による品質保証
- 10.3.7 ベクトル検索との統合
- 10.3.8 Feature StoreとModel Registryの統合
- 10.3.9 AutoMLとの連携
- 10.3.10 移行パスと互換性
10.4 エンタープライズ環境での実践
- 10.4.1 マルチワークスペース戦略とRBAC
- 10.4.2 CI/CDパイプラインの構築
- 10.4.3 モデルサービングとスケーリング
- 10.4.4 LLMアプリのモニタリング
- 10.4.5 モデルガバナンスのベストプラクティス
10.5 まとめ
第11章 LLMOpsの未来とベストプラクティス
11.1 最後の章にあたり
11.2 LLMOpsの進化の方向性
- 11.2.1 AIエージェントの台頭とMLflowの対応
- 11.2.2 Model Context Protocolとエージェントエコシステム
- 11.2.3 マルチエージェントシステムの管理
- 11.2.4 規制環境の整備とコンプライアンス
11.3 MLflowエコシステムの拡張
- 11.3.1 MLflowの主要な新機能
- 11.3.2 フレームワーク統合の拡大
- 11.3.3 Databricksエコシステムとの統合深化
- 11.3.4 マルチプラットフォーム対応
11.4 組織におけるLLMOps文化の醸成
- 11.4.1 LLMOps成熟度モデル
- 11.4.2 役割と責任の明確化
- 11.4.3 ベストプラクティスの共有と標準化
- 11.4.4 継続的な学習と改善
11.5 今後の学習リソース
- 11.5.1 公式ドキュメントとリファレンス
- 11.5.2 コミュニティリソース
- 11.5.3 関連ツールとフレームワーク
- 11.5.4 今後のキャリアパス
11.6 まとめ
Appendix 付録
付録A MLflow CLIリファレンス(LLM関連)
付録B トラブルシューティングガイド
付録C 用語集
プロフィール
弥生隆明
Databricks Japan
大手製造業にてインフラ管理・システム開発、大手ITメーカーにて自然言語処理の研究開発・ITコンサルティング・サービス開発運用・海外赴任を経て、外資系コンサルティングファームでデータ分析プロジェクトに従事。現在はDatabricks Japanにて、生成AIおよびデータエンジニアリングを専門にDatabricksの導入支援に取り組む。2026年4月より青山学院大学特別研究員を兼務。興味・得意分野は生成AI、データエンジニアリング、Webアプリ、Databricks。趣味はジョギング、読書、iPhoneアプリ開発。読書アプリなど日常の小さな不便を解消するアプリを気が向いたときに作っている。
渡辺祐貴
Databricks Japan
Amazon Japanにて機械学習エンジニアとして従事したあと、現在はDatabricksにてオープンソースMLflowのテックリードを務め、LLMOps領域の開発を推進している。とくにLLMアプリケーションの可観測性および評価機能の設計・開発をリードし、MLflowのGenAI対応を牽引。興味・得意分野は機械学習・AI、プラットフォーム開発。趣味はテニス。学生時代にはイラスト制作にも取り組み、その知識を活かして画像・3DCG分野での機械学習の研究に取り組んだ。
大内山浩
Databricks Japan
大手外資系ITメーカーにてソフトウェア開発や戦略コンサルティングに従事。その後、大手外資系ソフトウェアベンダーにてクラウドを活用したデータ・AI導入を推進し、大手半導体メーカーではAIスペシャリストとして技術営業やエバンジェリズム活動に携わる。現在はDatabricks JapanにてAI領域の専門家として企業のAI導入・活用支援に取り組む。専門学校の教育顧問も兼務。興味・得意分野はAI、クラウドアーキテクチャ、データ活用戦略。趣味は旅行、音楽、サッカー、SUP。とくに沖縄が好きで、年に何度も足を運んでいる。
平田東夢
Databricks Japan
Databricksソフトウェアエンジニア。大学院で深層学習を用いた動画認識などの研究をしたあと、Indeed Japanで広告モデルの分析や推薦システムの開発を行う。DatabrickではMLflowやAIエージェントフレームワークDSPyの開発に従事。興味・得意分野は機械学習、因果推論、統計。趣味は旅行とスポーツ観戦。小学生から12年間柔道を続け、大学時代は体育会ラクロス部に所属。
河村春孝
Databricks Japan
Databricksソフトウェアエンジニア。元データサイエンティスト。業務内でMLflowを利用していたことをきっかけに2019年にMLflowへのコントリビューションを開始。2020年にDatabricksに入社し、メンテナーとしてプロジェクトの開発・発展に取り組んでいる。興味・得意分野は生成AI、バックエンド開発、CI/CD。趣味はバスケ観戦。都内で開催される高校・大学生の大会をよく観戦に行く。