Python-urllib User-Agent를 403 차단 → "기동 실패" 오탐. 정상 UA로 전부 200.ai-engine → pod)까지 왕복 검증 완료. 테스트 후 전 리소스 정리(과금 0).Docker + compose 프로필 방식. 모델별 Dockerfile → compose 서비스(profile) → ./scripts/up.sh --<model>. 각 모델 GPU 1장·tensor-parallel-size 1, on-prem DGX에서 프로필 스위칭 전제. LLM 5종 + Vision 4종(Chandra 포함) + 임베딩 3종.
| 역할 | 모델 | 엔진 | 핵심 서빙 인자 |
|---|---|---|---|
| LLM | kakaocorp/kanana-2-30b-a3b-instruct | vLLM | --quantization fp8 --dtype auto · 0.95 · 32K · chunked-prefill |
| OCR | datalab-to/chandra (9B) | vLLM | --dtype bfloat16 · 0.90 · 32K · served-name chandra |
| 임베딩 | nlpai-lab/KURE-v1 | TEI | --dtype float16 --max-batch-tokens 8192 · 이미지 태그 GPU cap 종속 |
기존 추정과 다른 2가지: kanana는 FP8(BF16 아님), 임베딩은 vLLM이 아닌 TEI(GPU compute-cap에 맞는 이미지 태그 필수 — A4000=86-1.8).
| 역할 | VRAM 실수요 | 최적 GPU | 과금 | 근거 |
|---|---|---|---|---|
| LLM (FP8) | ~30GB + KV | L40S 48GB | ~$0.86/hr | FP8 → 80GB 불필요. Ada native FP8 가속 |
| OCR (BF16 9B) | ~24–30GB | A6000 / L40S 48GB | ~$0.49/hr | vision 버퍼 여유. 24GB는 빠듯 |
| 임베딩 (TEI) | ~2.3GB | A4000 16GB | ~$0.25/hr | TEI 경량. 이미지 태그를 GPU에 맞춤 |
LLM VRAM은 "활성 3B"가 아니라 전체 30B 파라미터 기준(MoE는 전 expert 상주). 단, 이 레포는 FP8 양자화라 ~30GB로 떨어져 A100 80GB가 과함 → L40S 48GB가 최적. BF16 가정으로 A100을 잡던 이전 판단이 뒤집힌 지점.
RunPod 프록시 {podId}-8000.proxy.runpod.net는 Python-urllib/3.x User-Agent 요청을 403 Forbidden으로 차단한다. raw 프로브가 전부 403을 받아 "컨테이너 기동 실패"로 오판했으나, 실제 pod는 정상이었음. 브라우저 UA(Mozilla/5.0…)로 붙으니 3개 모두 200 + 실추론 성공. vLLM 어댑터·ai-engine(정상 UA)은 처음부터 통과.
# 오탐 (403)
urllib.request.urlopen("https://<pod>-8000.proxy.runpod.net/v1/models")
# → HTTP 403 Forbidden
# 정상 — 브라우저 UA 헤더 추가
Request(url, headers={"User-Agent": "Mozilla/5.0 ..."})
# → 200 OK
OrbStack docker로 postgres·redis·minio·ai-engine 기동 → .env의 LLM URL 9곳을 pod로 리포인트 → ai-engine 라우팅 파이프라인 왕복 확인.
POST http://localhost:8200/online/llm/complete (purpose=rfp-structure)
→ {"text":"서울","model":"kakaocorp/kanana-2-30b-a3b-instruct",
"input_tokens":18,"output_tokens":2,"finish_reason":"stop"}
경로: ai-engine(Docker) → purpose 라우팅 → RunPod kanana(vLLM) → 응답 복귀. /online/health·/online/eval-chatbot/health 모두 ok.
docker compose down..env 원복(pod URL → 원래 DGX IP 9곳) — .env.bak-localtest에서 복원.L40S(LLM·FP8) + A6000(OCR·chandra) + A4000(임베딩·KURE TEI) ≈ $1.6/hr
· vLLM 프로브는 반드시 브라우저 UA · 임베딩 TEI 이미지 태그는 GPU cap 매칭