LESSON 30分

ストーリー

田中VPoE
ユースケース特定、データガバナンス、セキュリティ、コスト管理 — 設計は揃った。だが「作って終わり」では意味がない。AIシステムを継続的に運用し、品質を維持する仕組みが必要だ
あなた
従来のソフトウェアならCI/CDとモニタリングで運用を回せますが、AIシステムは何が違うんですか?
田中VPoE
いい質問だ。従来のソフトウェアは「コードが変わらなければ動作も変わらない」。だがAIシステムは違う。モデルの挙動は入力データに依存する。世の中の変化でモデルの精度は劣化する。プロンプトの微修正が出力を劇的に変える。これらを管理するのがLLMOpsだ
あなた
MLOpsの発展形ということですか?
田中VPoE
そうだ。MLOpsが機械学習モデルのライフサイクル管理なら、LLMOpsはLLM固有の課題 — プロンプト管理、出力品質の評価、ハルシネーション対策、コスト最適化 — に対応した運用基盤だ。今日はその全体像を掴もう

MLOpsからLLMOpsへの進化

MLOpsの振り返り

MLOps(Machine Learning Operations)は、機械学習モデルの開発から運用までのライフサイクルを管理するプラクティスです。LLMOpsはこの延長線上にありつつ、LLM固有の課題に対応します。

観点MLOpsLLMOps
モデル管理自社学習モデルのバージョン管理外部APIモデル + ファインチューニングの管理
データ管理学習データのパイプラインRAG用ナレッジベース + プロンプトテンプレート
評価精度・再現率等の定量指標定量指標 + 出力品質の定性評価
デプロイモデルファイルのデプロイプロンプト・RAG構成・モデルバージョンの統合デプロイ
コストGPU/計算リソースAPI従量課金(トークン数)
固有の課題データドリフト、特徴量管理ハルシネーション、プロンプトインジェクション
MLOpsの進化:

DevOps(ソフトウェア)

  ├── CI/CD、モニタリング、IaC


MLOps(機械学習)

  ├── モデルバージョニング、実験管理、特徴量ストア


LLMOps(大規模言語モデル)

  ├── プロンプト管理、RAGパイプライン、出力品質評価
  ├── トークンコスト最適化、ガードレール
  └── ハルシネーション検出、安全性フィルタ

LLMOpsの4つの柱

柱1: モデル管理

LLMを活用するシステムでは、外部APIモデルとファインチューニングモデルの両方を管理する必要があります。

管理対象内容具体例
モデルバージョン使用するモデルとバージョンの管理gpt-4o-2024-11-20, claude-3.5-sonnet
モデル切り替えベンダーやモデルの切り替え戦略OpenAI → Anthropic へのフォールバック
ファインチューニングカスタムモデルの学習と管理社内用語に特化したモデル
モデルレジストリ利用可能なモデルの一覧管理承認済みモデル、非推奨モデル
# モデル管理の設定例
model_registry:
  production:
    primary:
      provider: "openai"
      model: "gpt-4o"
      version: "2024-11-20"
      max_tokens: 4096
      temperature: 0.1
    fallback:
      provider: "anthropic"
      model: "claude-3-5-sonnet"
      version: "20241022"
  staging:
    primary:
      provider: "openai"
      model: "gpt-4o"
      version: "2025-01-15"  # 新バージョンの検証

柱2: プロンプト管理

プロンプトはLLMシステムの「ソースコード」に相当します。バージョン管理、テスト、レビューが必要です。

プラクティス説明ツール/手法
バージョン管理プロンプトの変更履歴を追跡Git、専用プロンプトレジストリ
テンプレート化再利用可能なプロンプトテンプレートJinja2、Mustache形式
A/Bテストプロンプト変更の効果測定新旧プロンプトの並行実行
レビュープロセスプロンプト変更のピアレビューPRベースのレビューフロー
プロンプト管理のライフサイクル:

作成 → レビュー → テスト → ステージング → 本番
  │       │        │         │           │
  │       │        │         │           └── モニタリング
  │       │        │         └── カナリアリリース
  │       │        └── 自動評価スイート実行
  │       └── ピアレビュー(PRベース)
  └── プロンプトテンプレート + 変数定義

柱3: 評価パイプライン

LLMの出力品質を継続的に評価する仕組みです。

評価手法説明適用場面
LLM-as-a-Judge別のLLMで出力品質を判定回答の正確性・関連性の評価
ルールベース評価正規表現・キーワードチェックフォーマット準拠、禁止語の検出
人間による評価専門家がサンプリング評価高リスク回答の品質確認
リファレンス比較期待される回答との類似度FAQなど正解が明確なケース
# 評価パイプラインの例
class LLMEvaluationPipeline:
    def __init__(self):
        self.evaluators = [
            FormatChecker(),        # フォーマット準拠チェック
            SafetyFilter(),         # 安全性フィルタ
            FactualityChecker(),    # 事実性チェック(RAGソースとの照合)
            RelevanceScorer(),      # 質問との関連性スコア
            LLMJudge(),             # LLMによる総合品質判定
        ]

    def evaluate(self, query, response, context):
        results = {}
        for evaluator in self.evaluators:
            results[evaluator.name] = evaluator.score(
                query=query,
                response=response,
                context=context
            )
        return EvaluationResult(
            passed=all(r.passed for r in results.values()),
            scores=results,
            timestamp=datetime.now()
        )

柱4: フィードバックループ

ユーザーからのフィードバックをシステム改善に反映する仕組みです。

フィードバックループ:

ユーザー入力 → LLM応答 → ユーザー評価(👍/👎)


                         フィードバック収集

                    ┌─────────┴─────────┐
                    ▼                   ▼
              定量分析              定性分析
           (評価スコア推移)    (低評価回答の分析)
                    │                   │
                    └─────────┬─────────┘

                         改善アクション
                    ┌─────────┼─────────┐
                    ▼         ▼         ▼
              プロンプト   RAGデータ   モデル
              改善        更新        変更
フィードバック種別収集方法活用方法
明示的フィードバックいいね/わるいね、星評価品質スコアの算出、低品質回答の特定
暗黙的フィードバック再質問率、セッション継続時間ユーザー満足度の推定
エスカレーション人間オペレーターへの転送対応困難なケースの特定
修正フィードバックユーザーによる回答修正ファインチューニングデータの収集

CI/CDパイプラインのAI拡張

従来のCI/CDとの違い

AIシステムのCI/CDは、コードだけでなくプロンプト、RAGデータ、モデル構成もデプロイ対象になります。

# AI拡張CI/CDパイプラインの例
name: AI System CI/CD

on:
  push:
    paths:
      - "prompts/**"          # プロンプト変更
      - "rag/knowledge/**"    # ナレッジベース変更
      - "src/**"              # アプリケーションコード変更
      - "model-config.yaml"   # モデル設定変更

jobs:
  prompt-test:
    name: "プロンプトテスト"
    runs-on: ubuntu-latest
    steps:
      - name: プロンプト構文チェック
        run: python scripts/validate_prompts.py
      - name: 評価スイート実行
        run: python scripts/run_eval_suite.py --suite=regression
      - name: コスト見積もり
        run: python scripts/estimate_token_cost.py

  rag-validation:
    name: "RAGデータ検証"
    runs-on: ubuntu-latest
    steps:
      - name: ドキュメント形式チェック
        run: python scripts/validate_documents.py
      - name: エンベディング生成テスト
        run: python scripts/test_embeddings.py
      - name: 検索精度テスト
        run: python scripts/test_retrieval.py

  integration-test:
    name: "統合テスト"
    needs: [prompt-test, rag-validation]
    runs-on: ubuntu-latest
    steps:
      - name: E2E評価テスト
        run: python scripts/run_e2e_eval.py
      - name: 安全性テスト
        run: python scripts/run_safety_tests.py
      - name: レイテンシテスト
        run: python scripts/run_latency_tests.py

  deploy:
    name: "デプロイ"
    needs: [integration-test]
    if: github.ref == 'refs/heads/main'
    steps:
      - name: カナリアデプロイ(10%)
        run: ./deploy.sh --canary --percentage=10
      - name: カナリア評価(30分)
        run: python scripts/monitor_canary.py --duration=30m
      - name: フルデプロイ
        run: ./deploy.sh --full

デプロイ戦略

戦略説明AIシステムでの適用
カナリアリリース一部のトラフィックで新バージョンを検証プロンプト変更、モデル変更時に必須
ブルー/グリーン2環境を切り替えモデルバージョンの切り替え
フィーチャーフラグユーザー単位で機能を切り替え新プロンプトの段階的展開
シャドーモード本番と並行して新バージョンを実行新モデルの品質比較

実験管理とA/Bテスト

実験管理の重要性

LLMシステムでは、プロンプトの微修正、モデルの変更、RAG設定の調整など、多くの実験が必要です。

実験対象変更パラメータ評価指標
プロンプト指示文、Few-shot例、出力形式回答品質スコア、ユーザー満足度
モデルモデル種類、バージョン、temperature品質、レイテンシ、コスト
RAG設定チャンクサイズ、検索件数、リランカー検索精度、回答の根拠性
ガードレールフィルタ閾値、禁止パターン安全性スコア、偽陽性率
# 実験管理の例
experiment = Experiment(
    name="prompt-v3-vs-v2",
    description="システムプロンプトにCoT指示を追加",
    variants={
        "control": PromptConfig(version="v2", template="base"),
        "treatment": PromptConfig(version="v3", template="base_with_cot"),
    },
    traffic_split={"control": 50, "treatment": 50},
    metrics=[
        "response_quality_score",
        "user_satisfaction",
        "avg_latency_ms",
        "avg_token_cost",
    ],
    duration_days=7,
    min_sample_size=1000,
)

# 実験結果の分析
results = experiment.analyze()
print(f"品質スコア: control={results.control.quality:.2f}, "
      f"treatment={results.treatment.quality:.2f}")
print(f"統計的有意性: p={results.p_value:.4f}")

LLMOpsツールチェーン

主要ツールの比較

ツールカテゴリ主な機能適用場面
LangSmithトレーシング・評価LLMコールのトレース、評価、デバッグLangChain利用プロジェクト
Weights & Biases実験管理実験追跡、モデル比較、データセット管理ML/LLM実験の統合管理
MLflowモデル管理モデルレジストリ、実験追跡、デプロイオンプレミス/マルチクラウド
Langfuseオープンソーストレーシングトレース、評価、プロンプト管理コスト重視、セルフホスト
Arize Phoenix可観測性LLMトレース、評価、ドリフト検出本番環境のモニタリング
PromptFlow (Azure)ワークフロープロンプト開発、評価、デプロイAzure環境

ツールチェーン統合の例

LLMOpsツールチェーン統合:

開発フェーズ:
  IDE → LangSmith/Langfuse(トレース) → W&B(実験管理)

CI/CDフェーズ:
  GitHub Actions → 評価スイート → MLflow(モデルレジストリ)

本番フェーズ:
  アプリケーション → LangSmith/Langfuse(トレース)
       │                    │
       ▼                    ▼
  Arize Phoenix        ダッシュボード
  (ドリフト検出)      (品質メトリクス)

ツール選定の判断基準

判断軸考慮ポイント
ホスティングSaaS vs セルフホスト(データ主権の要件)
エコシステムLangChain、LlamaIndex等との統合性
スケールトレース量、評価データ量に対応できるか
コスト無料枠、トレース単価、チーム規模での費用
セキュリティデータの保存場所、暗号化、アクセス制御

まとめ

ポイント内容
MLOps → LLMOpsLLMOpsはMLOpsの進化形。プロンプト管理、出力品質評価、ハルシネーション対策が加わる
4つの柱モデル管理、プロンプト管理、評価パイプライン、フィードバックループ
CI/CDの拡張プロンプトテスト、RAG検証、安全性テストをパイプラインに統合
実験管理A/Bテストと統計的有意性の検証で、変更の効果を定量的に判断
ツールチェーンLangSmith、W&B、MLflow等を目的に応じて組み合わせる

チェックリスト

  • MLOpsからLLMOpsへの進化の背景を理解した
  • LLMOpsの4つの柱(モデル管理、プロンプト管理、評価パイプライン、フィードバックループ)を理解した
  • CI/CDパイプラインへのAI固有テストの統合方法を理解した
  • 実験管理とA/Bテストの重要性を理解した
  • LLMOpsツールチェーンの選定基準を理解した

次のステップへ

次は「AI品質モニタリング」です。LLMの出力品質を継続的に監視し、品質劣化を早期に検出する手法を学びましょう。


推定読了時間: 30分