LESSON 40分

ストーリー

月曜朝のアーキテクチャ会議。佐藤CTOが画面にプロジェクト概要を映した。

佐藤CTO
先月までに我々はクラウドネイティブな基盤を構築した。今月はいよいよ、その基盤の上にAIを載せる。具体的には、社内ナレッジベースを活用したRAGシステムを本番投入する
あなた
LLMはどれを使いますか?GPT-4?Claude?

佐藤CTOは首を横に振った。

佐藤CTO
“どれが最強か”ではなく、“我々のユースケースに何が最適か”を考える。コスト、レイテンシ、品質、セキュリティ。全てのトレードオフを理解した上で選定しよう。まずはLLMの現在地を正確に把握するところから始める

LLMの全体像

主要モデルファミリー

2024-2025年時点で、本番システムに採用される主要なLLMファミリーは以下の通りです。

プロバイダモデル特徴コンテキスト長
OpenAIGPT-4o / GPT-4o-miniマルチモーダル、高い汎用性128K
AnthropicClaude 3.5 Sonnet / Claude 3 Opus長文理解、指示追従性200K
GoogleGemini 1.5 Pro / Flash超長コンテキスト、マルチモーダル1M+
MetaLlama 3.1 (8B/70B/405B)オープンソース、カスタマイズ自由128K
MistralMistral Large / Mixtralヨーロッパ発、高コスパ32K-128K
CohereCommand R+RAG特化、エンタープライズ向け128K

クローズドモデル vs オープンモデル

graph TD
    Title["モデル選択マトリクス"]

    subgraph Closed["クローズドモデル(API提供)"]
        C1["初期コスト: 低い(従量課金)"]
        C2["運用コスト: 利用量に比例"]
        C3["データ管理: 外部送信あり"]
        C4["カスタマイズ: ファインチューニング"]
        C5["レイテンシ: ネットワーク依存"]
        C6["最新性: 自動的に最新"]
    end

    subgraph Open["オープンモデル(自前ホスティング)"]
        O1["初期コスト: 高い(GPU/インフラ必要)"]
        O2["運用コスト: 固定費(推論インフラ)"]
        O3["データ管理: 完全自社管理"]
        O4["カスタマイズ: フルカスタマイズ可能"]
        O5["レイテンシ: 自社インフラ次第"]
        O6["最新性: 手動アップデート必要"]
    end

    Title --- Closed & Open

    classDef title fill:#1e40af,stroke:#1e40af,color:#fff,font-weight:bold
    classDef closed fill:#fee2e2,stroke:#ef4444
    classDef open fill:#dbeafe,stroke:#3b82f6
    class Title title
    class C1,C2,C3,C4,C5,C6 closed
    class O1,O2,O3,O4,O5,O6 open

トークンエコノミクス

トークンとは何か

LLMはテキストをトークンという単位で処理します。トークンは単語や文字の断片です。

// トークンカウントの概算
// 英語: 1 token ≈ 4文字 ≈ 0.75単語
// 日本語: 1 token ≈ 1-2文字(モデルにより異なる)

interface TokenUsage {
  promptTokens: number;    // 入力トークン数
  completionTokens: number; // 出力トークン数
  totalTokens: number;     // 合計トークン数
}

// コスト計算の例
function calculateCost(usage: TokenUsage, pricing: ModelPricing): number {
  const inputCost = (usage.promptTokens / 1_000_000) * pricing.inputPerMillion;
  const outputCost = (usage.completionTokens / 1_000_000) * pricing.outputPerMillion;
  return inputCost + outputCost;
}

interface ModelPricing {
  model: string;
  inputPerMillion: number;  // USD per 1M input tokens
  outputPerMillion: number; // USD per 1M output tokens
}

主要モデルの価格比較(2025年時点の参考値)

モデル入力 ($/1M tokens)出力 ($/1M tokens)品質スコア目安
GPT-4o$2.50$10.00
GPT-4o-mini$0.15$0.60中-高
Claude 3.5 Sonnet$3.00$15.00
Claude 3 Haiku$0.25$1.25
Gemini 1.5 Pro$1.25$5.00
Gemini 1.5 Flash$0.075$0.30
Llama 3.1 70B (self-hosted)インフラ固定費インフラ固定費中-高

コストシミュレーション

// 月間コストのシミュレーション
interface UsageProjection {
  dailyRequests: number;
  avgInputTokens: number;
  avgOutputTokens: number;
}

function estimateMonthlyCost(
  projection: UsageProjection,
  pricing: ModelPricing
): { monthlyCost: number; costPerRequest: number } {
  const monthlyRequests = projection.dailyRequests * 30;
  const totalInputTokens = monthlyRequests * projection.avgInputTokens;
  const totalOutputTokens = monthlyRequests * projection.avgOutputTokens;

  const inputCost = (totalInputTokens / 1_000_000) * pricing.inputPerMillion;
  const outputCost = (totalOutputTokens / 1_000_000) * pricing.outputPerMillion;
  const monthlyCost = inputCost + outputCost;

  return {
    monthlyCost: Math.round(monthlyCost * 100) / 100,
    costPerRequest: Math.round((monthlyCost / monthlyRequests) * 10000) / 10000,
  };
}

// 例: 社内ナレッジベースRAG
const ragProjection: UsageProjection = {
  dailyRequests: 1000,       // 1日1000クエリ
  avgInputTokens: 3000,      // システムプロンプト + 検索結果 + ユーザー質問
  avgOutputTokens: 500,      // 回答
};

// GPT-4o の場合
// Input: 30,000 * 3000 / 1M * $2.50 = $225.00
// Output: 30,000 * 500 / 1M * $10.00 = $150.00
// 月間合計: $375.00(約1リクエスト$0.0125)

// GPT-4o-mini の場合
// Input: 30,000 * 3000 / 1M * $0.15 = $13.50
// Output: 30,000 * 500 / 1M * $0.60 = $9.00
// 月間合計: $22.50(約1リクエスト$0.00075)

モデル選定のフレームワーク

5つの評価軸

モデル選定は以下の5軸で評価します。

graph TD
    Center((モデル選定))
    Quality["品質 / Quality"] --- Center
    Cost["コスト / Cost"] --- Center
    Latency["レイテンシ / Latency"] --- Center
    Security["セキュリティ / Security"] --- Center
    Scalability["スケーラビリティ / Scalability"] --- Center

    style Center fill:#1e293b,stroke:#475569,color:#f8fafc
    style Quality fill:#dbeafe,stroke:#2563eb,stroke-width:2px,color:#1e40af
    style Cost fill:#d1fae5,stroke:#059669,color:#065f46
    style Latency fill:#fef3c7,stroke:#d97706,stroke-width:2px,color:#92400e
    style Security fill:#fee2e2,stroke:#dc2626,color:#991b1b
    style Scalability fill:#f3e8ff,stroke:#7c3aed,color:#5b21b6

評価マトリクス

interface ModelEvaluation {
  model: string;
  quality: {
    accuracy: number;       // 回答の正確性 (1-10)
    coherence: number;      // 文脈の一貫性 (1-10)
    instructionFollowing: number; // 指示追従性 (1-10)
    japaneseQuality: number;     // 日本語品質 (1-10)
  };
  performance: {
    ttft: number;           // Time to First Token (ms)
    tokensPerSecond: number; // 出力速度 (tokens/sec)
    contextWindow: number;   // コンテキスト長
  };
  cost: {
    inputPer1M: number;
    outputPer1M: number;
    monthlyEstimate: number;
  };
  security: {
    dataResidency: string[];     // データ保存地域
    soc2Compliant: boolean;
    hipaaCompliant: boolean;
    onPremiseOption: boolean;
  };
}

ユースケース別推奨モデル

ユースケース推奨モデル理由
社内FAQ/ナレッジ検索GPT-4o-mini / Claude 3 Haikuコスパ重視、大量リクエスト
コード生成・レビューClaude 3.5 Sonnet / GPT-4o高い推論能力が必要
文書要約・分析Gemini 1.5 Pro超長コンテキスト対応
機密データ処理Llama 3.1 (self-hosted)データが外部に出ない
マルチモーダル分析GPT-4o / Gemini 1.5 Pro画像・音声対応
リアルタイムチャットGPT-4o-mini / Gemini Flash低レイテンシ

モデル選定の実践プロセス

Step-by-Step ガイド

graph TD
    S1["1. 要件定義"] --> S2["2. 候補の絞り込み"]
    S2 --> S3["3. ベンチマーク評価"]
    S3 --> S4["4. 最終選定"]

    S1 --- S1a["入力/出力の形式は?"]
    S1 --- S1b["許容レイテンシは?
(リアルタイム or バッチ)"] S1 --- S1c["月間リクエスト見込みは?"] S1 --- S1d["データの機密性レベルは?"] S1 --- S1e["対応言語は?
(日本語品質の重要度)"] S2 --- S2a["セキュリティ要件でフィルタ"] S2 --- S2b["コンテキスト長でフィルタ"] S2 --- S2c["予算でフィルタ"] S3 --- S3a["自社データでの品質評価"] S3 --- S3b["レイテンシ計測"] S3 --- S3c["コスト試算"] S4 --- S4a["プライマリモデル決定"] S4 --- S4b["フォールバックモデル決定"] S4 --- S4c["将来のスケーリング計画"] style S1 fill:#dbeafe,stroke:#2563eb,stroke-width:2px,color:#1e40af style S2 fill:#d1fae5,stroke:#059669,color:#065f46 style S3 fill:#fef3c7,stroke:#d97706,stroke-width:2px,color:#92400e style S4 fill:#f3e8ff,stroke:#7c3aed,color:#5b21b6 style S1a,S1b,S1c,S1d,S1e fill:#f3f4f6,stroke:#9ca3af,color:#374151 style S2a,S2b,S2c fill:#f3f4f6,stroke:#9ca3af,color:#374151 style S3a,S3b,S3c fill:#f3f4f6,stroke:#9ca3af,color:#374151 style S4a,S4b,S4c fill:#f3f4f6,stroke:#9ca3af,color:#374151

マルチモデル戦略

本番システムでは、単一モデルに依存せず、用途に応じて複数モデルを使い分けるのが推奨されます。

// マルチモデルルーター
interface ModelRouter {
  route(request: LLMRequest): ModelConfig;
}

class SmartModelRouter implements ModelRouter {
  route(request: LLMRequest): ModelConfig {
    // 複雑な推論が必要な場合 → 高性能モデル
    if (request.requiresReasoning) {
      return { model: 'claude-3-5-sonnet', provider: 'anthropic' };
    }

    // 単純な分類・抽出タスク → 軽量モデル
    if (request.taskType === 'classification' || request.taskType === 'extraction') {
      return { model: 'gpt-4o-mini', provider: 'openai' };
    }

    // 超長文の処理 → Gemini
    if (request.inputTokens > 100_000) {
      return { model: 'gemini-1.5-pro', provider: 'google' };
    }

    // デフォルト
    return { model: 'gpt-4o-mini', provider: 'openai' };
  }
}
オープンソースモデルのデプロイ選択肢

セルフホスティングの選択肢

方式ツール特徴
vLLMvLLM高スループット推論エンジン
TGIText Generation InferenceHugging Face公式
OllamaOllamaローカル開発向け
AWS SageMakerSageMaker Endpointsマネージド推論
AWS BedrockBedrockサーバーレス推論

GPU要件の目安

モデルサイズ必要VRAM推奨GPU
7B-8B16GB+A10G x1
13B32GB+A10G x2
70B140GB+A100 80GB x2
405B800GB+H100 x8

まとめ

ポイント内容
モデルの多様化クローズド/オープン、大小様々なモデルが共存する時代
トークンエコノミクスコストは入出力トークン数に比例。事前のシミュレーションが必須
選定基準品質・コスト・レイテンシ・セキュリティ・スケーラビリティの5軸
マルチモデル戦略用途に応じて複数モデルを使い分けるのが本番の王道

チェックリスト

  • 主要LLMファミリーの特徴を把握した
  • トークンエコノミクスとコスト計算を理解した
  • モデル選定の5つの評価軸を理解した
  • マルチモデル戦略の考え方を理解した

次のステップへ

LLMの全体像を把握しました。次のセクションでは、LLMを活用する最も重要なアーキテクチャパターンであるRAG(Retrieval-Augmented Generation)の基礎を学びます。

LLMの力を最大化する鍵は、適切な文脈を与えることにあります。


推定読了時間: 40分