배치 API: 안 쓰면 손해인 LLM 50% 할인

최종 업데이트: 2026-05-27 · 10분 분량

toksum.dev 가이드 시리즈의 일부.

월 100만 요청 워크로드 (2K 입력 + 500 출력 / 요청) 표준 가격 (실시간) $22,500/월 배치 API (최대 24h) $11,250/월 → 월 $11,250 절감
Claude Sonnet 4.6 기준. 같은 작업, 같은 결과, 절반 가격 — 단 비동기 처리.

배치 API란 무엇인가

배치 API는 OpenAI와 Anthropic이 제공하는 별도 엔드포인트로, JSONL 형식으로 요청 묶음을 업로드하면 비동기로 처리해 결과를 반환합니다. 처리 시간은 SLA상 최대 24시간이며 표준 가격 대비 50% 할인이 적용됩니다. 동기 API와 결과 품질은 완전히 동일합니다 — 같은 모델, 같은 토크나이저, 같은 추론. 차이는 단지 처리 시점만 보장되지 않는다는 것입니다.

왜 이렇게 큰 할인이 가능할까요? 공급자 입장에서 배치는 GPU 클러스터의 한가한 시간대(미국 새벽, 유럽 점심시간 등)에 묶어서 처리할 수 있어 실시간 트래픽이 몰리는 시간을 피할 수 있습니다. 클러스터 활용률이 시간대에 따라 30~90%로 출렁이는데, 한가한 시간에 배치를 채워 넣으면 동일 인프라로 더 많은 처리량을 뽑아낼 수 있습니다 — 50% 할인은 그 효율의 일부를 사용자에게 돌려주는 것입니다.

언제 배치를 써야 하나

"24시간 안에만 결과가 나오면 되는" 모든 워크로드에 배치를 써야 합니다. 거의 모든 비실시간 LLM 사용 사례가 여기에 해당합니다:

배치가 부적합한 경우는 명확합니다: 사용자가 화면 앞에서 응답을 기다리는 모든 사례 — 챗봇, 검색 자동완성, 대화형 어시스턴트, 코드 자동완성, 라이브 번역 등. 이런 워크로드에는 표준 동기 API를 사용하되, 비대화 부분(분석/요약 등)은 별도로 배치로 분리하세요.

OpenAI Batch API — 실용 가이드

OpenAI 배치는 JSONL 파일을 업로드 → 배치 생성 → 폴링/웹훅으로 결과 수신의 3단계입니다. 한 줄에 하나의 요청을 JSONL로 작성하면 됩니다:

{"custom_id": "req-1", "method": "POST", "url": "/v1/chat/completions",
 "body": {"model": "gpt-5.4-mini", "messages": [{"role":"user","content":"Hello"}]}}

파일 업로드는 /v1/files, 배치 생성은 /v1/batches 엔드포인트를 사용합니다. completion_window: "24h" 파라미터로 SLA를 명시하며 — 현재는 24시간이 유일한 옵션입니다. 배치 상태는 validating → in_progress → finalizing → completed 순서로 진행되며, completed 상태가 되면 결과 JSONL 파일을 다운로드할 수 있습니다.

지원 모델: GPT-5.5, GPT-5.4 및 GPT-5.4 mini, GPT-5.4 nano, GPT-5.3-codex, 그리고 일부 구버전 GPT-4 계열. 모든 임베딩 모델(text-embedding-3-small, -large)도 지원합니다. o1/o3 추론 모델은 배치 비지원 (실시간 추론 토큰 처리 특성 때문). 가격 페이지의 "Batch" 컬럼이 정확한 적용 모델 목록입니다.

제한: 한 배치당 최대 50,000 요청, 파일 크기 100MB. 더 큰 워크로드는 분할 — 분할 자체에는 비용/지연 페널티가 없습니다. 큐 깊이는 enqueued tokens 기준 모델별 한도가 있어 (예: GPT-5.4-mini는 50M 토큰까지 큐 대기 가능) 매우 큰 작업은 시간 분산 제출 필요.

Anthropic Message Batches API

Anthropic 배치는 OpenAI보다 더 단순한 API입니다. JSONL 파일 업로드 단계 없이, 요청 배열을 직접 단일 POST로 제출하면 됩니다 (배치당 100,000 요청, 256MB 한도):

{
  "requests": [
    {"custom_id": "req-1",
     "params": {"model": "claude-sonnet-4-6", "max_tokens": 1024,
                "messages": [{"role":"user","content":"Hello"}]}},
    {"custom_id": "req-2", "params": {...}}
  ]
}

지원 모델: Claude Opus 4.7/4.6/4.5/4.1, Claude Sonnet 4.6/4.5, Claude Haiku 4.5. 거의 모든 현재 Claude 모델이 배치를 지원합니다. 가격은 표준 대비 50% 일률 할인 — 입력, 출력, 캐시 쓰기 모두 절반 가격. 캐시 읽기 단가는 이미 매우 낮아서 배치에서도 동일하게 유지됩니다.

가장 강력한 조합: 배치 + 프롬프트 캐싱. 큰 시스템 프롬프트를 캐시에 두고 배치로 여러 사용자 메시지를 처리하면, 캐시 prefix는 캐시 읽기 단가($0.30/1M), 사용자 메시지와 출력은 배치 단가(표준의 50%)로 처리됩니다. 5만 토큰 시스템 프롬프트 + 1만 사용자 메시지 워크로드의 경우 표준 가격 약 $1,500 → 캐시 + 배치 적용 약 $90 — 약 94% 절감.

실제 절감액: 워크로드 규모별 시뮬레이션

GPT-5.4 mini ($0.75 입력 / $4.50 출력) 기준, 요청당 2,000 입력 + 500 출력 토큰의 워크로드:

플래그십 모델(Claude Opus 4.7, GPT-5.5)에서는 절감액이 5~6배 커집니다. 월 100만 요청 워크로드에서 GPT-5.5 표준 $40,000/월 → 배치 $20,000/월 — 월 $20,000 절감. 일부 워크로드(분석/리포트)는 충분히 비동기로 옮길 수 있으므로, 배치를 안 쓰는 것은 가장 큰 무료 최적화를 무시하는 셈입니다.

배치 + 동기 하이브리드 아키텍처

대부분 프로덕션 시스템은 100% 동기도 100% 배치도 아닙니다. 워크로드를 라우터로 분리하세요:

  1. 실시간 큐: 사용자 대면 요청은 표준 동기 API. 지연이 답변 품질의 일부.
  2. 배치 큐: 백그라운드 작업(요약, 분류, 리포트) — Cron이나 큐 워커가 N분마다 모아서 배치 제출.
  3. 폴백: 배치 작업이 SLA 만료(24h) 직전인데도 완료되지 않으면 표준 API로 재제출. 매우 드물지만 안전장치로 필요.

배치 큐 워커의 핵심은 "지연 허용 시간"입니다. 5분 이내 결과가 필요한 작업은 동기, 24시간까지 허용되면 배치. 그 사이(예: 1시간 이내)는 동기로 처리하되 비용 측면에서는 손실. 워크로드 분류를 명시적으로 하지 않으면 모든 비실시간 작업이 동기 API로 흘러가 무료 50% 할인을 영구히 놓치게 됩니다.

자주 묻는 함정

자주 묻는 질문

배치 API의 처리 시간이 정말 24시간이나 걸리나요?

항상 그런 것은 아닙니다. 24시간은 SLA(보증되는 최대 시간)이며 실제로는 대부분 작업이 10분~2시간 안에 끝납니다. OpenAI와 Anthropic 모두 한가한 시간대에는 거의 즉시 처리되기도 합니다. 다만 SLA가 24시간이므로 실시간 사용 사례에는 부적합하며, 그 사이 어떤 보증도 없다는 점을 인지하고 설계해야 합니다.

배치 작업 중간에 취소할 수 있나요?

예. OpenAI와 Anthropic 모두 진행 중인 배치를 취소할 수 있는 엔드포인트를 제공합니다. 이미 처리된 부분은 청구되지만, 아직 처리되지 않은 부분은 청구되지 않습니다. 잘못된 요청 파일을 제출했을 때 빠르게 정정할 수 있어 유용합니다.

배치 API에서도 프롬프트 캐싱이 적용되나요?

Anthropic은 예 — 배치 요청에도 cache_control 브레이크포인트를 사용할 수 있으며, 비캐시 토큰은 배치 할인(50%), 캐시 토큰은 캐시 읽기 단가가 별도 적용됩니다. 이 둘을 결합하면 가장 유리한 종합 단가가 나옵니다. OpenAI는 배치 처리에 자동 캐싱이 동일하게 적용됩니다.

배치 요청 한 번에 얼마나 많은 작업을 넣을 수 있나요?

OpenAI는 한 배치당 최대 50,000개 요청, JSONL 파일 크기 100MB 제한. Anthropic은 한 배치당 최대 100,000개 요청, 256MB 제한. 더 큰 워크로드는 여러 배치로 분할하면 됩니다. 분할 자체는 추가 비용이 없습니다.