{
  "format": "agent-article-v0",
  "article_id": "EA-798",
  "canonical_url": "/tools/ea-798-batch-inference-execution-tier",
  "page_type": "reference",
  "claim_ids": [],
  "evidence_ids": [
    "EVD-EA-798-URL-41FE60B53A13",
    "EVD-EA-798-URL-B88C4950BBF3",
    "EVD-EA-798-URL-5770757567C6",
    "EVD-EA-798-URL-7EF0664F2DE9",
    "EA-798-CURRENT-APPROVAL",
    "EA-798-CURRENT-BODY-READBACK"
  ],
  "unknown_ids": [
    "EA-798-UNKNOWN-01"
  ],
  "operational_object_ids": [],
  "provider": [],
  "models": [],
  "plans": [],
  "surfaces": [],
  "regions": [],
  "current_status": "CURRENT",
  "observation_status": "SPEC_ONLY",
  "freshness": "CURRENT",
  "last_verified": "2026-10-22",
  "supersedes": [],
  "superseded_by": [],
  "provenance": [
    "EA798-CANDIDATE-20261022-1901JST-C1",
    "SRC-EA-798-URL-41FE60B53A13",
    "SRC-EA-798-URL-B88C4950BBF3",
    "SRC-EA-798-URL-5770757567C6",
    "SRC-EA-798-URL-7EF0664F2DE9",
    "BODY-SHA256:ef261aa10b40ec9b79a808a05f5bb6fd8c4268c2dc2e97c421eeb33e6c53bb96"
  ],
  "article_sources": [
    {
      "id": "EVD-EA-798-URL-41FE60B53A13",
      "evidence_class": "RESEARCH",
      "title": "Google Gemini API optimization and inference:",
      "href": "https://ai.google.dev/gemini-api/docs/optimization",
      "supports": [],
      "limit": "元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。",
      "origin_class": "SOURCE_PACKET_REFERENCE",
      "source_or_experiment_ids": [
        "SRC-EA-798-URL-41FE60B53A13"
      ],
      "supporting_locators": [
        "SOURCE_PROVENANCE",
        "- Google Gemini API optimization and inference: https://ai.google.dev/gemini-api/docs/optimization"
      ],
      "scope": "SOURCE_PROVENANCE",
      "provenance_status": "SOURCE_PACKET_REFERENCE_PROJECTED"
    },
    {
      "id": "EVD-EA-798-URL-B88C4950BBF3",
      "evidence_class": "RESEARCH",
      "title": "Google Gemini Developer API pricing:",
      "href": "https://ai.google.dev/gemini-api/docs/pricing",
      "supports": [],
      "limit": "元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。",
      "origin_class": "SOURCE_PACKET_REFERENCE",
      "source_or_experiment_ids": [
        "SRC-EA-798-URL-B88C4950BBF3"
      ],
      "supporting_locators": [
        "SOURCE_PROVENANCE",
        "- Google Gemini Developer API pricing: https://ai.google.dev/gemini-api/docs/pricing"
      ],
      "scope": "SOURCE_PROVENANCE",
      "provenance_status": "SOURCE_PACKET_REFERENCE_PROJECTED"
    },
    {
      "id": "EVD-EA-798-URL-5770757567C6",
      "evidence_class": "RESEARCH",
      "title": "Anthropic Pricing — Batch processing:",
      "href": "https://docs.anthropic.com/en/docs/about-claude/pricing",
      "supports": [],
      "limit": "元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。",
      "origin_class": "SOURCE_PACKET_REFERENCE",
      "source_or_experiment_ids": [
        "SRC-EA-798-URL-5770757567C6"
      ],
      "supporting_locators": [
        "SOURCE_PROVENANCE",
        "- Anthropic Pricing — Batch processing: https://docs.anthropic.com/en/docs/about-claude/pricing"
      ],
      "scope": "SOURCE_PROVENANCE",
      "provenance_status": "SOURCE_PACKET_REFERENCE_PROJECTED"
    },
    {
      "id": "EVD-EA-798-URL-7EF0664F2DE9",
      "evidence_class": "RESEARCH",
      "title": "Anthropic API Errors — Batch endpoint request-size/network guidance:",
      "href": "https://docs.anthropic.com/en/api/errors",
      "supports": [],
      "limit": "元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。",
      "origin_class": "SOURCE_PACKET_REFERENCE",
      "source_or_experiment_ids": [
        "SRC-EA-798-URL-7EF0664F2DE9"
      ],
      "supporting_locators": [
        "SOURCE_PROVENANCE",
        "- Anthropic API Errors — Batch endpoint request-size/network guidance: https://docs.anthropic.com/en/api/errors"
      ],
      "scope": "SOURCE_PROVENANCE",
      "provenance_status": "SOURCE_PACKET_REFERENCE_PROJECTED"
    },
    {
      "id": "EA-798-CURRENT-APPROVAL",
      "evidence_class": "RESEARCH",
      "title": "現行本文の監査・revision対応",
      "supports": [
        "現行台帳のAUDIT_PASSと候補・revision・本文ハッシュの対応を確認しています。"
      ],
      "limit": "監査状態と来歴の記録です。外部根拠の最新性や本文の全主張を追加保証しません。",
      "origin_class": "AUDITED_CANONICAL_RESEARCH_PACKET",
      "source_or_experiment_ids": [
        "EA798-CANDIDATE-20261022-1901JST-C1"
      ],
      "supporting_locators": [
        "1KqhJtiSb2S84rWmeYVwKcT_76dBwZ_B0ZZuAWQqH0rQ/EA_REVISION_LEDGER#ea_id=EA-798&revision_id=EA-798-FIRST-20261022-R1&candidate_id=EA798-CANDIDATE-20261022-1901JST-C1",
        "EA-798-FIRST-20261022-R1"
      ],
      "provenance_status": "CURRENT_CANONICAL_APPROVAL_READBACK"
    },
    {
      "id": "EA-798-CURRENT-BODY-READBACK",
      "evidence_class": "IMPL",
      "title": "現行本文の収録照合",
      "supports": [
        "公開生成入力の本文SHA-256が、監査済み候補に結び付いたハッシュと一致しています。"
      ],
      "limit": "本文の同一性の検査です。外部システムの挙動や全主張の真偽を実証したものではありません。",
      "checked_at": "2026-10-22",
      "origin_class": "IMPLEMENTATION_READBACK",
      "source_or_experiment_ids": [
        "BODY-SHA256:ef261aa10b40ec9b79a808a05f5bb6fd8c4268c2dc2e97c421eeb33e6c53bb96"
      ],
      "supporting_locators": [
        "content/staging/EA-798.md",
        "ef261aa10b40ec9b79a808a05f5bb6fd8c4268c2dc2e97c421eeb33e6c53bb96",
        "EA-798-FIRST-20261022-R1"
      ],
      "provenance_status": "CURRENT_APPROVED_BODY_HASH_MATCH"
    }
  ],
  "research_sections": [
    {
      "heading": "概要",
      "text": "非対話・大量のLLM推論を、対話APIの単なる低優先度呼び出しではなく、独立した非同期execution tierとして扱う。Batch tierでは、submit、queue、processing、partial failure、expiry、cancellation、result retrieval、retry、reconciliationを明示的な状態として管理し、同期APIのlatency/SLOやretry設計をそのまま流用しない。\n\nGeminiの現行公式資料はBatchをasynchronous bulk processingとして位置付け、標準料金から50%低い価格と最大24時間のturnaround targetを示す。AnthropicもBatch APIを大量非同期処理として提供し、input/output tokenを50%割引する。providerごとにmodel eligibility、queue/rate limits、expiry、cancel、result retention、data handlingは異なるため、共通抽象化の下でもprovider-specific adapterとreadbackが必要である。"
    },
    {
      "heading": "主要claim",
      "text": "### 1. Batchは独立した状態機械として扱う\n\n最低限、LOCAL_CREATED、SUBMITTED、QUEUED/PROCESSING、SUCCEEDED、PARTIAL、FAILED、CANCEL_REQUESTED、CANCELLED、EXPIRED、RECONCILEDを区別する。providerの実際のstatus名へ一対一対応すると仮定せず、adapterで正規化する。\n\nsubmit APIが成功したことは個々のrequest成功を意味しない。job ID、input manifest hash、provider、model、created time、request countを保存し、providerから取得したjob/resultをreadbackして初めて処理結果を確定する。\n\n### 2. request単位のcorrelationを失わない\n\n各requestにstable local keyを付与し、batch job IDだけでなくrequest key→result/errorを照合する。再送時はoriginal job、retry generation、reasonをlineageとして保持し、結果の二重取込を防ぐ。\n\nproviderがexactly-once executionを保証すると仮定しない。client-side deduplicationとresult reconciliationを別controlとして設計する。\n\n### 3. partial failureをjob全体の失敗へ潰さない\n\n大量batchでは一部requestのみvalidation/model/content/errorとなる場合がある。成功・失敗・未確定をrequest単位で集計し、retry対象を限定する。全件再送はcost重複とduplicate side effectを生むため、batch inputは原則として副作用を伴わない推論へ限定するか、副作用処理を後段のidempotent commitへ分離する。\n\n### 4. cancellationとexpiryはrollbackではない\n\ncancelは未処理workの停止要求であり、既に完了したrequestや発生済みcostを巻き戻す保証ではない。expiryも「何も実行されなかった」ことを意味しない。cancel/expiry後もresult inventoryを再取得し、completed/failed/unprocessedを照合する。\n\n### 5. cost tierとlatency tierを同時に分離する\n\nBatchは低価格である一方、interactive latencyを要求するworkloadには不適切である。Geminiの現行資料ではBatchは50% discount、最大24時間のturnaround targetであり、offline evalやmassive datasets向けとされる。したがってrouting policyはdeadline、interactive dependency、data sensitivity、model eligibility、queue capacityを見てstandard/flex/batch等を選択する。"
    },
    {
      "heading": "failure modes",
      "text": "- SUBMIT-ACK-LOSS: provider側ではjob作成済みだがclientがackを失い、同一batchを再作成する。\n- PARTIAL-RESULT-LOSS: job-level completedだけを見てrequest-level errorを取りこぼす。\n- RETRY-DUPLICATION: failed/unknown requestを全件再送し、成功済みrequestを重複実行する。\n- EXPIRY-MISREAD: expired/cancelledを全件未実行と誤認する。\n- MODEL-DRIFT: queued中にmodel aliasやprovider behaviorが変化し、同期tierとの比較条件が崩れる。\n- COST-RECONCILIATION-GAP: request/result ledgerとprovider usage/billing exportが結び付かない。\n- RETENTION-OVERREACH: batch input/outputの保存期間やdata-use条件を同期APIと同一と仮定する。\n- DEADLINE-MISMATCH: 24h級の非同期tierへinteractive dependencyを投入する。"
    },
    {
      "heading": "control / implementation implication",
      "text": "1. immutable input manifestにprovider、model ID、request key、payload hash、created time、policy versionを保存する。\n2. submit後はprovider job IDを即時保存し、GET/readbackで存在・status・request countを確認する。\n3. request-level result/errorをlocal ledgerへupsertし、reconciliationを再実行可能にする。\n4. retryはfailed/expired/unprocessed subsetだけを新generationとして作成し、original lineageを保持する。\n5. cancel/expiry後にも最終resultを取得し、completed subsetとbillingを照合する。\n6. batchとstandardを同一SLOに混ぜず、deadline-aware routingとcapacity fallbackを設ける。\n7. provider/modelごとのbatch eligibility、quota、pricing、retention、region/data policyをdeployment時に再確認する。\n8. prompt/model/tool/retrieval/evaluator versionを固定し、offline eval用途では同期tierとの差を同一fixtureで検証する。"
    },
    {
      "heading": "適用境界・counterevidence",
      "text": "Batch tierは安価だから常に有利とは限らない。queue待ち、result polling、manifest生成、reconciliation、retry、storage、運用監視の追加コストがある。依存関係の強いagent loop、低latency UX、即時transactionには不向きである。\n\nprovider間で「Batch」という名称が同じでも、supported models、request/file limits、completion window、cancellation、expiry、pricing、data retentionは一致しない。共通control planeは最小共通状態だけを正規化し、provider固有条件を消さない。"
    },
    {
      "heading": "SECURITY",
      "text": "batch input fileやmanifestへsecretを埋め込まない。result ingestionはjob IDだけで信頼せず、provider/account、manifest hash、request keyを照合する。"
    },
    {
      "heading": "PRIVACY",
      "text": "input/outputの保存先、provider retention、region、training/data-use条件を確認し、必要ならPII redaction/tokenizationをsubmit前に行う。\n\nAUDIT: input manifest hash、provider job ID、model ID、request count、submit/readback時刻、final status、request-level outcome、retry lineage、usage/cost referenceを保持する。"
    },
    {
      "heading": "COST",
      "text": "token単価だけでなく、storage、polling、failed retry、expiry、duplicate submission、reconciliation laborを含めて評価する。"
    },
    {
      "heading": "OPERABILITY",
      "text": "queue age、oldest job、success/error/expired/cancelled count、reconciliation lag、unmatched result、billing mismatchを監視する。"
    },
    {
      "heading": "OPEN_UNKNOWN",
      "text": "- OpenAI Batchの2026-10-22時点のexact model eligibility、rate-limit、retention、cancel/expiry semanticsは本RUNで一次資料を十分取得できていない。\n- Anthropic Message Batchesのcurrent completion window、result retention、cancel semanticsの一次ページは本RUN検索で直接取得できていない。pricingの50% discountとBatch endpoint存在は公式資料で確認。\n- Gemini各modelのexact batch eligibility、file/request上限、region差はdeployment時に再確認が必要。\n- providerがjob creationにclient-supplied idempotency keyを提供するか、その保証範囲。\n- usage/billing exportとrequest-level resultのexact join key。\n- batchとstandardでのmodel backend/version同一性。\n\nUNKNOWNを推測で閉じない。"
    },
    {
      "heading": "SAFE_WORDING",
      "text": "非対話・大量のLLM推論は、同期APIとは別の非同期Batch execution tierとして管理できる。Batchは低価格・高throughputに向く一方、queue、partial failure、expiry、cancellation、retry、result reconciliationを伴う。submit成功を処理完了とみなさず、immutable input manifest、provider job ID、request-level correlation、readback、retry lineageを保存する。providerごとのmodel eligibility、料金、期限、retention、data policyは変動するため、導入時点の公式資料で再確認する。"
    }
  ],
  "human_url": "/tools/ea-798-batch-inference-execution-tier",
  "markdown_url": "/agent/article.md?path=%2Ftools%2Fea-798-batch-inference-execution-tier",
  "json_url": "/agent/article.json?path=%2Ftools%2Fea-798-batch-inference-execution-tier"
}