think
16px
820px

DI Engine (OCR) for Kementerian Lingkungan Hidup — Infra Sizing & 2-Year Costing

Prepared: 2026-07-16 · Scope: Document Intelligence (OCR) Engine only — not the full AHU AI platform
FX planning rate: Rp 18.000 / USD (spot ~Rp 18.060 on 15-Jul-2026; rupiah −10,88% YoY → budget an FX buffer)


1. Headline numbers (recommended)

Item 2-Year Amount
DI Engine (incl. tax) Rp 4.500.000.000
Maintenance — 2 yr @ 20%/yr of engine Rp 1.800.000.000
Infrastructure — 2 yr (lean, data-resident, owned + hosted) ~Rp 1.000.000.000
TOTAL (2 years) ≈ Rp 7.300.000.000

Range across infra options: Rp 6,8 – 7,8 miliar. See §6–7. Two numbers you must confirm can swing this by ~Rp 0,9 miliar each: (a) maintenance = 20%/year vs 20% total, and (b) who owns/hosts the infra ("rent to us").


2. GPU decision: RTX PRO 6000 Blackwell, not DGX Spark

Your stack is capacity-light but bandwidth-heavy. All candidate cards have enough VRAM; the differentiator for a public, concurrent endpoint is memory bandwidth (drives VLM + LLM token throughput and per-request latency).

Spec 1× DGX Spark (GB10) 2× DGX Spark 1× RTX PRO 6000 Blackwell
Memory 128 GB LPDDR5X 2× 128 GB 96 GB GDDR7 ECC
Bandwidth 273 GB/s 2× 273 (not pooled) 1.792 GB/s (Server Ed. 1.600)
Compute ~1 PFLOP FP4 24.064 CUDA / 5th-gen Tensor, 600 W
Street price ~$4.000 ~$8.000 ~$11.500 (was $8.565 MSRP; GDDR7 shortage)
Concurrency Pins at higher batch Pins per-box Real production batching
ECC / HA story No ECC, single unit 2 indep. boxes ECC; add 2nd node for HA
Role Pilot / dev / DR Budget pilot only Production primary

Why not Spark for production: independent benchmarks converge — Spark is excellent for small-to-mid models at low concurrency and "gets bandwidth-pinned at higher batch sizes or larger models." A public endpoint (even gated) sees bursts; the 273 GB/s wall throttles MinerU's VLM and the LLM decode, and per-request latency degrades several-fold. 2× Spark gives you HA + ~2× aggregate throughput on prototyping hardware, but still slow per request — I'd take 1× RTX PRO 6000 over 2× Spark.

Why RTX PRO 6000 wins: 6,5× the bandwidth, ECC, 96 GB runs the entire stack co-resident with room for a 30B LLM if you ever need it, and one card sustains real concurrency. It's a genuine production inference card, not a dev kit.

Naming note: the "A6000 Blackwell" you're thinking of = RTX PRO 6000 Blackwell (lineage: RTX A6000 Ampere → RTX 6000 Ada → RTX PRO 6000 Blackwell). For a rack/colo build, pick the Server Edition (passive-cooled, 1.6 TB/s); Workstation Edition (fan, 1.8 TB/s) for a tower.


3. VRAM budget — the whole stack on one card

Component Role VRAM (typical → peak)
PaddleOCR PP-OCRv5 Detect + recognize text ~4 GB (text) → ~8 GB (full: layout/table/formula)
MinerU 2.5 (1.2B VLM) — invoked only when needed High-fidelity layout / tables / formulas ~6 GB → ~25 GB on complex multi-page docs
Extraction/cleanup LLM 7–8B (AWQ INT4) OCR → clean structured JSON ~6 GB weights + ~4–8 GB KV cache
Total co-resident ~20–40 GB typical, ~50 GB under load
  • Fits comfortably in 96 GB with headroom for batching and a bigger LLM. Would be tight on a 48 GB card (L40S) and would force capped MinerU concurrency.
  • LLM pick: default Qwen2.5-7B-Instruct (AWQ) or a SEA-tuned model (Sailor2 / SEA-LION) for stronger Bahasa Indonesia; step up to 14B for hard docs (still fits easily). 3B only if latency is critical and fields are simple.
  • Cost-saver ("make it light"): gate MinerU behind a "complex-layout detected" trigger. Simple letters/forms → PaddleOCR + LLM only (skip the VLM). This is where most of your GPU savings come from.

Serve everything with vLLM (MinerU 2.5 + the LLM) for batching + queue admission.


4. Throughput — one RTX PRO 6000 has large headroom

Path Rate (1× RTX PRO 6000)
PaddleOCR OCR-only ~430 pages/min ≈ ~25.000 pages/hr
MinerU 2.5 VLM (when invoked) ~2–4 pages/sec ≈ 7.000–14.000 pages/hr
Full pipeline (OCR + selective MinerU + LLM extract) conservatively ~3.000–8.000 pages/hr

A ministry document-intake workload is realistically hundreds to low-thousands of documents/day, bursty. One card covers that many times over. The gates (below) cap concurrency so peak load queues instead of crashing the engine.


5. Architecture & the "1–2 gates" (don't get obliterated)

Reuse the AHU platform's existing gateway + queue pattern — it already solves this:

Public users
   │
 ┌─▼─ GATE 1 — Edge/API gateway ────────────────┐
 │  TLS · auth (API key / gov SSO) · WAF ·       │
 │  per-tenant rate-limit + quota · IP allowlist │
 └─┬─────────────────────────────────────────────┘
   │
 ┌─▼─ GATE 2 — Async job queue + admission ──────┐
 │  bounded GPU concurrency · 429/503 Retry-After │
 │  "Dalam antrean — posisi N" (never a bare spin)│
 └─┬─────────────────────────────────────────────┘
   │
   ▼  DI Engine on GPU: PaddleOCR → [MinerU 2.5] → LLM → JSON
  • Gate 1 = authentication + rate limiting at the edge (stops abuse/DDoS-lite).
  • Gate 2 = the queue in front of the GPU with bounded concurrency (protects the engine; excess load waits, per your CONVENTIONS.md queue semantics: GPU_QUEUE_WAIT_MS, 429/503 + Retry-After). This is the mechanism that stops the public from obliterating you.
  • Supporting (CPU) tier: public web/upload front-end, object storage for docs + extracted JSON (audit), Postgres (job/audit state), Redis (queue + audit stream), Prometheus/Grafana.

6. Data residency — this pushes you to own + host in Indonesia

KLH is a government ministry; Indonesian government data under UU PDP (Indonesia's PDP Law) strongly favors on-shore processing. That means on-prem at KLH or an Indonesian Tier-3 colo — not global GPU clouds (Runpod/Lambda/etc.) for production data. This is a compliance argument and it makes buy-and-host economically better than 24/7 global cloud rental.


7. Infrastructure options & 2-year cost

Hardware landed-Indonesia = US street × Rp 18.000 × ~1,30 (PPN 11% + import/PPh22 + logistics + distributor margin).

Design 1 — Lean production (RECOMMENDED — matches "make it light")

Line Cost
1× RTX PRO 6000 Blackwell (Server Ed.) node (GPU Rp 270jt + host Rp 180jt) Rp 450jt
1× DGX Spark — dev/staging + warm DR/failover Rp 95jt
Networking, UPS, PDU, spares Rp 55jt
CapEx (one-time) Rp 600jt
Colo (Indonesian Tier-3, data-resident, ~2–2,5 kW) — Rp 10jt/mo × 24 Rp 240jt
Supporting infra (web/API VMs, object storage, DB, backup, monitoring) — Rp 4jt/mo × 24 Rp 96jt
FX / contingency buffer Rp 64jt
OpEx (24 mo) Rp 400jt
INFRA TOTAL (2 yr) ≈ Rp 1,0 miliar

Design 2 — HA production (in-box redundancy, SLA-grade)

Line Cost
2× RTX PRO 6000 nodes (active-active behind the queue) Rp 900jt
Networking, UPS, PDU, spares Rp 70jt
CapEx Rp 970jt
Colo (~3,5–4 kW) — Rp 16jt/mo × 24 Rp 384jt
Supporting infra — Rp 4jt/mo × 24 Rp 96jt
Buffer Rp 80jt
OpEx (24 mo) Rp 560jt
INFRA TOTAL (2 yr) ≈ Rp 1,5 miliar

Design 3 — KLH hosts / provides the DC ("rents infra to us")

If KLH supplies datacenter + power (or hosts on their own facility) and we bring the GPUs:
| Line | Cost |
|---|---|
| 1–2× RTX PRO 6000 (hardware we supply) + integration + 24-mo ops | ≈ Rp 0,4 – 0,6 miliar |

Cloud-rental reference (for comparison only — likely fails gov data-residency): a dedicated RTX PRO 6000 runs ~$1,7–2,1/hr (committed ~$1,3/hr); an L40S ~$0,9–1,5/hr. A 2-node 24/7 setup ≈ Rp 0,7–1,4 miliar / 24 mo. Owning is cheaper for a steady 24/7 workload and keeps data on-shore — hence Designs 1–2 are preferred.


8. Total deal cost — 2 years

Scenario Engine Maint. (2yr) Infra (2yr) TOTAL
Recommended — lean infra, maint 20%/yr 4.500 1.800 ~1.000 ≈ Rp 7,3 mrd
HA infra (Design 2), maint 20%/yr 4.500 1.800 ~1.500 ≈ Rp 7,8 mrd
KLH-hosted infra (Design 3), maint 20%/yr 4.500 1.800 ~500 ≈ Rp 6,8 mrd
If maintenance = 20% total (not per year) 4.500 900 (as above) subtract Rp 0,9 mrd

(All figures Rp juta unless noted; "mrd" = miliar.)

Recommended headline: ≈ Rp 7,3 miliar for 2 years = Engine Rp 4,5 mrd + Maintenance Rp 1,8 mrd + Lean data-resident infra ~Rp 1,0 mrd.


9. Assumptions to confirm (each moves the number)

  1. Maintenance basis — 20% of engine per year (Rp 1,8 mrd) vs 20% total for 2 yr (Rp 0,9 mrd). [assumed per year]
  2. Infra ownership/hosting — "they rent infra to us": does KLH provide the DC/hardware (Design 3, ~Rp 0,5 mrd), or do we procure + host in an Indonesian colo (Design 1, ~Rp 1,0 mrd)? [assumed we procure + host]
  3. Data residency — assumed mandatory on-shore (gov + UU PDP) → rules out global cloud.
  4. Volume & SLA — expected docs/day + peak, and uptime target. Low/medium volume → Design 1 (1 GPU + Spark DR). SLA-grade HA → Design 2 (2× RTX PRO 6000).
  5. Tax treatment — engine is quoted incl. tax; maintenance + infra shown here should have PPN 11% treatment aligned (quote all-in to match).

10. Sources


11. Buy + self-host — GPU count & A/B/C infra costing (×3 markup)

Decision (2026-07-16): buy hardware, self-host in Indonesia (data residency mandatory, UU PDP).

How many RTX PRO 6000 Blackwell? →

Throughput needs only one card (one 96 GB / 1.8 TB/s card runs the full stack with large headroom — §3–4). The second card is resilience, not compute: since we host and own the uptime/SLA, a single GPU is a single point of failure with multi-week RMA lead time in Indonesia. 2× = N+1 (active-active behind the queue, or active + warm standby), ideally in two separate hosts so a host failure can't take both.
- 1× GPU = budget option — fine on throughput, but accept the SPOF (mitigate with a cold-spare card or the DGX Spark as fallback).

Costing basis (all figures Rp juta = millions of Rp)

FX Rp 18.000/USD · hardware landed = US street × 18.000 × ~1,30 (PPN 11% + import/PPh22 + logistics + distributor margin) · colo ~Rp 5jt/mo per ~1 kW GPU node (Indonesian Tier-3, data-resident) · GPU card ≈ Rp 270jt each (GDDR7 shortage + FX → volatile; lock early).

Per-node building blocks: GPU card 270 · Full host (dual-EPYC-class, 512 GB ECC, 2× enterprise NVMe, redundant PSU) 245 · Min-spec self-contained host (24-core, 256 GB, 2× NVMe) 150 · Min-to-run-GPU host (16-core, 128 GB, 1× 2 TB NVMe) 90.

  • A — Full, self-contained: generous GPU hosts + full supporting tier (2× app/DB nodes, object storage, backup, monitoring) — all owned. Over-spec for a light workload.
  • B — GPU compute only: minimum host just to run each GPU; web/API, DB, queue, storage, monitoring run on existing (in-country) infra. Cheapest — but adds a dependency and the non-GPU tier must already exist on-shore.
  • C — Minimum spec, self-contained: modest-but-sufficient GPU hosts running a lean local supporting stack — independent, cost-optimized. (recommended balance)

2× GPU (recommended, HA)

Scenario GPU Hosts Support Net/UPS CapEx Colo 24mo Buffer OpEx Our cost (2yr) ×3 (list/nego)
A Full 540 490 220 60 1.310 360 80 440 1.750 5.250
B GPU-only 540 180 0 25 745 240 40 280 1.025 3.075
C Min self-contained 540 300 35 40 915 264 50 314 1.229 3.687

1× GPU (budget / accept SPOF)

Scenario CapEx OpEx (2yr) Our cost (2yr) ×3 (list/nego)
A Full 790 324 1.114 3.342
B GPU-only 380 174 554 1.662
C Min self-contained 490 208 698 2.094

×3 meaning: our all-in 2-yr infra cost × 3 = opening/list price. It absorbs profit + margin + negotiation headroom — you can concede down toward ~2× and still keep healthy margin. (Engine & maintenance are already sell-side numbers; the ×3 applies to infra only. Note OpEx/colo is recurring pass-through — if KLH pushes back, bill colo near-cost and keep the ×3 on hardware+setup.)

Total deal value per scenario (Engine 4.500 + Maint 1.800 + Infra×3)

A B C
2× GPU Rp 11,55 mrd Rp 9,38 mrd Rp 9,99 mrd
1× GPU Rp 9,64 mrd Rp 7,96 mrd Rp 8,39 mrd

Recommendation: Scenario C at 2× GPU — self-contained, minimum viable, HA. Our cost Rp 1,23 mrd, list Rp 3,69 mrd, total contract ≈ Rp 10 mrd. Pick B (2×) only if in-country existing infra can carry the non-GPU tier (cheapest at Rp 3,08 mrd list); A is over-spec for this workload.


12. FINAL CONFIGURATION (selected 2026-07-16) — Full package, NO HA, 1× GPU

Complete self-contained stack (Scenario A spec), single-instance (no HA), 1× RTX PRO 6000 Blackwell. Priced for the Indonesian market (landed, data-resident). This supersedes §11's matrix for the chosen path.

Bill of materials — CapEx (Rp juta)

# Item Spec Cost
1 GPU 1× RTX PRO 6000 Blackwell 96 GB 270
2 GPU compute server EPYC 32c, 512 GB DDR5 ECC, 2× 7,68 TB U.2 NVMe, redundant PSU, IPMI, 25 GbE, 2U 245
3 App/DB server web/API + Postgres + Redis + monitoring; EPYC 24c, 256 GB ECC, 2× 3,84 TB NVMe 150
4 Storage + backup docs + audit JSON, 2-yr retention (~15 TB usable + backup target) 120
5 Network / UPS / rack managed 25/10 GbE switch, UPS, PDU, cabling, KVM, spares kit 75
CapEx subtotal 860

Operating — 24 months (Rp juta)

Item Basis Cost
Colocation Indonesian Tier-3, data-resident, ~1,6 kW, redundant bandwidth, remote hands (~Rp 10jt/mo) 240
FX / hardware-price contingency GDDR7 shortage + rupiah volatility buffer 60
OpEx subtotal 300

Price

Amount
Our all-in cost (2 yr) Rp 1.160 juta ≈ Rp 1,16 mrd
×3 — list / negotiation price Rp 3.480 juta ≈ Rp 3,48 mrd

Optional (not HA — a safety net): keep a cold-spare RTX PRO 6000 on the shelf → +Rp 270jt cost / +Rp 810jt at ×3. Cuts RMA downtime from weeks to hours without paying for a full 2nd node.

Total deal — 2 years

Line Amount
Engine (incl. tax) Rp 4,50 mrd
Maintenance 2 yr @ 20%/yr Rp 1,80 mrd
Infrastructure (×3 sell) Rp 3,48 mrd
TOTAL ≈ Rp 9,78 mrd

(If maintenance is 20% total for 2 yr, subtract Rp 0,9 mrd → ≈ Rp 8,88 mrd. ×3 sell is shown tax-aligned with the engine; back out ÷1,11 if you quote DPP + PPN separately.)

No-HA caveat: a GPU/host failure = downtime until RMA (weeks in Indonesia for a pro card). The async queue absorbs short blips, but quote a maintenance-window SLA, not 24/7 — or take the cold-spare add-on.


13. Pricing formula (corrected 2026-07-16)

Sell price = (our cost + PPN 11% on cost) × 3. PPN is applied to our input cost before the ×3 margin.

DI-only: (1.160.000.000 + 11%) × 3 = 1.287.600.000 × 3 = Rp 3.862.800.000 (supersedes the Rp 3,48 mrd in §12)
→ DI-only total deal: 4.500 + 1.800 + 3.862,8 = Rp 10,16 mrd


14. Build option — OCR + Chatbot (DI + Knowledge Intelligence)

GPU count: 2× — workload separation, NOT redundancy. Still no HA.

The two workloads have opposite latency profiles and fight each other on one card:

OCR / DI Chatbot
Character Batch, async Interactive, streaming
Latency tolerance Seconds–minutes (queueable) First token <1–2s, or it feels broken
GPU behaviour Saturates SM in bursts Needs steady, predictable share

A MinerU pass on a complex 50-page document pins the GPU; chatbot tokens stall mid-answer for a user who is watching them stream. Queueing is invisible for OCR and unacceptable for chat. So: one card per workload.

VRAM budget

GPU Resident Load
GPU 1 — batch/DI OCR ~8 GB + layout VLM ~10–25 GB + extraction LLM ~12 GB ~30–45 GB / 96 GB
GPU 2 — interactive/chat Chat LLM (~32B quantized) ~20 GB + KV cache ~15–25 GB + embedding ~3 GB + reranker ~3 GB ~40–50 GB / 96 GB

Both keep headroom for concurrency spikes and a larger model later.

Spec delta vs DI-only

Component DI only + Chatbot
GPU 1× 96 GB 2× 96 GB (split by workload)
GPU server single-GPU, 32c / 512 GB dual-GPU capable, 32c / 512 GB, larger PSU + cooling
App/DB 24c / 256 GB / 2× 3,84 TB 32c / 384 GB / 2× 7,68 TB — vector DB, chat sessions, SQL agent
Storage ~15 TB ~25 TB — knowledge base, vector index, conversation logs
Colo power ~1,6 kW ~2,1 kW

Both GPUs sit in one dual-GPU server — with no HA required there's no reason to pay for a second chassis.

Costing (Rp juta)

Line Cost
2× GPU 96 GB 540
Dual-GPU compute server (32c, 512 GB ECC, 2× 7,68 TB NVMe, redundant PSU) 290
App/DB server (32c, 384 GB ECC, 2× 7,68 TB NVMe) 190
Storage + backup (~25 TB usable + backup target) 150
Network / UPS / rack / spares 85
CapEx 1.255
Colo 24 mo (~2,1 kW, Tier-3 ID, redundant BW, remote hands · ~Rp 13jt/mo) 312
FX / contingency buffer 75
OpEx 387
Our cost (2 yr) 1.642
+ PPN 11% 1.822,62
× 3 → sell 5.467,86 ≈ Rp 5,47 mrd

Cheaper variant — 1× GPU shared (compromised)

Chat model capped ~14B instead of ~32B, OCR batches throttled, chat latency degrades during batch runs.
CapEx 930 + OpEx 300 = cost 1.230 → ×1,11 → 1.365,3 → ×3 = Rp 4,10 mrd.
Saves ~Rp 1,37 mrd of sell price — but stakes a Rp 7 mrd engine on a stuttering chatbot. Not recommended.

Total deal — OCR + Chatbot (2× GPU)

Line Amount
Document Intelligence Engine (perpetual) Rp 4,50 mrd
Knowledge Intelligence Engine / Chatbot (perpetual) Rp 7,00 mrd
Maintenance 20%/yr × 2 yr — (900jt + 1.400jt) × 2 Rp 4,60 mrd
Infrastructure 24 mo Rp 5,47 mrd
TOTAL ≈ Rp 21,57 mrd

15. REVISED (2026-07-16) — KI scoped to INTERNAL REPORTING (Dash) only

Efran: "We are going to only serve KI for internal report (Dash)." This supersedes §14 — the workload is a text-to-SQL data agent, not a public streaming chatbot.

GPU count reverts to 1×

My 2× recommendation in §14 was predicated on a public, streaming chatbot whose tokens a user watches appear. An internal dashboard is a different animal:

Public chatbot (§14) Internal Dash (this)
Users Public, unbounded, bursty ~5–30 internal, <10 concurrent
Interaction Streaming conversation, watched token-by-token Click → wait a few seconds for a report
OCR batch contention Visible stall mid-answer — unacceptable Adds seconds to a report — tolerable
Scheduled reports n/a Can run off-peak (overnight) when OCR is idle

1× GPU. No public burst risk, small KV cache, latency-tolerant.
Trigger to revisit: if KI is ever opened to the public (the original 3-engine proposal envisioned exactly that — public status self-service), the 2nd GPU returns.

Model stack

Role Model VRAM
NL → SQL XiYanSQL-QwenCoder-32B (specialist fine-tune; 69,03% EX BIRD test, 81,42% Spider test; native SQLite/PostgreSQL/MySQL dialects, M-Schema) ~18–20 GB (INT4) + ~8–10 GB KV
Narration (SQL rows → Bahasa Indonesia report prose) Reuse the DI extraction LLM (7–8B) — already resident; turning result rows into an Indonesian summary is an easy task ~0 (shared)
Schema linking (retrieve relevant tables/columns) Embedding model ~3 GB

Why the specialist: XiYanSQL-QwenCoder-32B ≈ 69 BIRD vs Llama-3.3-70B ≈ 49,2 under a matched protocol — the specialist beats a generalist at 2× its size, at <½ the VRAM. Wrap with self-correction (execute → on error, retry) and optionally self-consistency (N samples, vote); both trade tokens for accuracy, which a dashboard can afford.

Cost-down to evaluate: XiYanSQL-QwenCoder-14B halves the VRAM. Decide by A/B against KLH's real schema in Discovery — not from benchmarks.

Benchmark caveat: BIRD scores are unreliable (documented annotation errors → relative shifts −3% to +31%, rank changes up to 3 places), and BIRD ≠ KLH's schema. The only number that matters is accuracy on their DB with their questions. Build a golden set of ~50–100 real leadership questions and gate on it — same pattern as the existing obs-golden-v1 / goldeneval tooling.

VRAM budget — single 96 GB card

Component VRAM
OCR ~8 GB
Layout VLM (peak, complex docs) ~10–25 GB
Extraction LLM 7–8B (doubles as report narrator) ~12 GB
XiYanSQL-32B + KV (low concurrency) ~28–30 GB
Embedding (schema linking) ~3 GB
Total ~61–78 GB / 96 GB

Costing (Rp juta)

Line Cost
1× GPU 96 GB 270
GPU server (single-GPU, 32c, 512 GB ECC, 2× 7,68 TB NVMe, redundant PSU) 245
App/DB server (32c, 384 GB ECC, 2× 7,68 TB NVMe) — dashboard, SQL agent, schema store 190
Storage + backup (~20 TB — docs, audit, report history) 140
Network / UPS / rack / spares 80
CapEx 925
Colo 24 mo (~1,7 kW, Tier-3 ID · ~Rp 11jt/mo) 264
FX / contingency 65
OpEx 329
Our cost (2 yr) 1.254
+ PPN 11% 1.391,94
× 3 → sell 4.175,82 ≈ Rp 4,18 mrd

Infra comparison

Build Our cost Sell
DI only 1.160 Rp 3,86 mrd
OCR + KI internal Dash (1× GPU) 1.254 Rp 4,18 mrd
OCR + public chatbot (2× GPU) 1.642 Rp 5,47 mrd

Adding the whole KI engine costs +Rp 94jt of our cost / +Rp 313jt of sell price — it rides the same card.

Total deal — OCR + KI (internal Dash)

Line Amount
Document Intelligence Engine Rp 4,50 mrd
Knowledge Intelligence Engine Rp 7,00 mrd
Maintenance 20%/yr × 2 — (900jt + 1.400jt) × 2 Rp 4,60 mrd
Infrastructure 24 mo Rp 4,18 mrd
TOTAL ≈ Rp 20,28 mrd

16. BUDGET FIT (2026-07-16) — Rp 20 mrd / 2 yr · Rp 10 mrd / 1 yr

The original 4× H200 spec is unfundable — by ~2,2×

Costing the Lampiran — Rekomendasi Hardware spec at our landed cost (H200 NVL confirmed $31–32k each):

Item US$ Rp juta landed
4× H200 NVL @ ~$31,5k 126.000 2.948
2× GPU inference node (2× EPYC 48c, 512 GB, 2×1,92 + 4×3,84 TB NVMe) 56.000 1.310
2× OCR/Doc-AI node (2× 48–64c, 256–512 GB, +L4) 32.000 749
2× Database node (2× 32c, 8× 3,84 TB NVMe RAID10) 36.000 842
2× App/API node 12.000 281
Object storage ~50 TB usable redundant 25.000 585
Backup 100–200 TB 20.000 468
Network: 2× ToR 25/100 GbE MLAG + OOB + NGFW HA pair + LB HA 45.000 1.053
Rack / UPS / PDU / cabling / spares 300
Total (our cost) ~$352k ≈ Rp 8.536 (8,54 mrd)

The math against the budget:
- Engines (DI 4,5 + KI 7,0) + maintenance 2 yr (4,6) = Rp 16,1 mrd — 80% of budget, before a single server.
- Remaining for infra: Rp 3,9 mrd.
- Original spec at ×1,11×3 = 8.536 × 3,33 = Rp 28,42 mrdmore than the entire Rp 20 mrd budget on its own. Full deal would be Rp 44,5 mrd = 2,2× over.
- Even giving the hardware away at zero margin: 16,1 + 8,54 = Rp 24,6 mrd — still over budget.

→ The 4× H200 configuration cannot be sold into this envelope under any margin structure.

The original spec's own principle says so

From §2 Prinsip Sizing of that same document:

"GPU mudah over-provisioning: seluruh pipeline inferensi muat dalam kapasitas memori satu GPU kelas terkini"
"Kapasitas ditentukan oleh lapisan pemrosesan dokumen (OCR), database, dan alur proses" — not GPU count.

The 4 GPUs exist there for role isolation + HA + public access + enterprise scale. Every one of those is now descoped: no HA, KI is internal-Dash only, no public channel, no Trust & Governance engine. Apply the document's own logic to the actual scope → 1 GPU.

Recommended hardware — fits the Rp 3,9 mrd infra envelope

Line Rp juta
1× GPU 96 GB (RTX PRO 6000 Blackwell class) 270
GPU server (32c, 512 GB ECC, 2× 7,68 TB NVMe, redundant PSU) 245
App/DB server (32c, 256 GB ECC, 2× 7,68 TB NVMe) 165
Storage + backup (~15 TB usable + backup target) 120
Network / UPS / rack / spares 75
CapEx 875
Colo 24 mo (~1,7 kW, Tier-3 ID · Rp 11jt/mo) 264
FX / contingency 35
OpEx 299
Our cost 1.174
+ PPN 11% → × 3 3.909,42 ≈ Rp 3,91 mrd

Package A — 2 years, fits Rp 20 mrd

Line Amount
Document Intelligence Engine Rp 4,50 mrd
Knowledge Intelligence Engine (internal Dash) Rp 7,00 mrd
Maintenance 20%/yr × 2 Rp 4,60 mrd
Infrastructure 24 mo Rp 3,91 mrd
TOTAL Rp 20,01 mrd

Bills at ~Rp 10,0 mrd/year — matching an annual ceiling if that's what the budget is.

Package B — 1 year, fits Rp 10 mrd → DI only

Both engines (4,5 + 7,0 = 11,5) exceed Rp 10 mrd before maintenance or hardware. A 1-year deal is therefore DI Engine only:

Line Amount
Document Intelligence Engine Rp 4,50 mrd
Maintenance 1 yr Rp 0,90 mrd
Infrastructure 12 mo (CapEx 875 + colo 132 + buffer 25 = cost 1.032) Rp 3,44 mrd
TOTAL Rp 8,84 mrd ✓ (Rp 1,16 mrd headroom)

Sales lever: hardware CapEx is one-time, so year 2 of infrastructure costs only +Rp 0,47 mrd (+13,8%) over the 1-year price (3,44 → 3,91). Two years of infra for 14% more than one. Push the 2-year deal.

The number that breaks this: documents/day

The original spec's own volume model (§7): 1 OCR replica ≈ 125 complex docs/hr at ~28 s/doc (CPU-based). GPU-accelerated OCR changes that by an order of magnitude — but the ceiling still matters:

Target Load (8 h) 1× GPU verdict
2.000 docs/day ~250/hr ✓ Comfortable (~300–800 docs/hr full-stack)
10.000 docs/day ~1.250/hr Needs 2–3 GPUs → +Rp 540jt cost → breaks the Rp 20 mrd budget

That document explicitly defers this: "Jumlah final ditetapkan setelah baseline wall-clock per dokumen dan target volume KLH dikonfirmasi." It still isn't confirmed, and it is the single variable that decides whether Package A is real.

If volume is 10.000/day: the budget cannot hold both engines + our-hosted infra. Levers, in order of preference — (a) KLH hosts on-prem and buys the hardware (original spec's actual framing; collapses our infra line), (b) discount the KI engine, (c) 24-hour processing window instead of 8, (d) gate the layout VLM harder.

Note: hosting model conflict

The original spec is on-premise at KLH; our current build assumes we buy + host in our colo. Under a budget squeeze, reverting to KLH-hosted is the biggest single lever available — it removes hardware CapEx and colo from our line entirely.


17. FINAL — SPEC-ONLY (2026-07-16). Supersedes §16 packaging

Efran's directives: (1) budget Rp 20 mrd / 2 thn adalah plafon; target realistis Rp 10–16 mrd / 2 thn. (2) Spec saja, TANPA merek/tipe — merek di kontrak = risiko BAST; harga pasar Indonesia dia yang pegang, estimasi USD-ku tidak dipakai. (3) Skeptis LLM 32B "takut ga ngangkat" → jawabannya VRAM headroom sampai kelas 70B, bukan janji model.

Spesifikasi hardware (BAST-safe: semua "minimal/≥", terukur, tanpa merek)

Node A — Komputasi AI (×1)
| Parameter | Minimum | Rekomendasi |
|---|---|---|
| Akselerator AI | 1× VRAM ≥96 GB | 2× VRAM ≥96 GB (total ≥192 GB) |
| Bandwidth memori akselerator | ≥1,5 TB/s per unit (datasheet) | sama |
| Presisi inferensi | FP16 + kuantisasi 8-bit & 4-bit | sama |
| ECC (VRAM & RAM) | ya | ya |
| CPU | ≥32 core server-class ≥2,4 GHz | sama |
| RAM | ≥512 GB ECC | sama |
| Storage | 2× ≥7,68 TB NVMe (mirror) | sama |
| PSU | redundan, chassis+PSU wajib sanggup akselerator ke-2 double-width tanpa ganti server | terisi 2 |
| Manajemen | BMC/IPMI, 2× ≥10 GbE | sama |

Node B — Aplikasi & Database (×1): CPU ≥32 core · RAM ≥384 GB ECC (min ≥256) · 2× ≥3,84 TB NVMe (mirror) · ≥10 GbE · BMC. Menjalankan web/API, antrian, DB relasional + vector index, dashboard pelaporan, monitoring.

Penyimpanan & backup: usable ≥15 TB (dokumen + audit + riwayat laporan) · target backup ≥30 TB · snapshot harian.

Jaringan & fasilitas: switch managed ≥10 GbE · firewall · UPS ≥3 kVA · rak · DC Tier-3 di Indonesia · bandwidth redundan · daya ~1,7–2,3 kW.

Kenapa spec ini menjawab keraguan 32B

  • Minimum (96 GB): DI stack + LLM 32B = ~61–78 GB — muat, tapi mentok di 32B.
  • Rekomendasi (2× 96 GB): GPU-1 = DI stack (~33–48 GB); GPU-2 = LLM KI — 32B (~30 GB) SAMPAI 70B INT4 (~50–65 GB) muat. Kalau 32B ternyata kurang, naik ke 70B tanpa beli server baru — tinggal model swap.
  • Jalur hemat: beli chassis dual-capable + 1 kartu dulu; kartu ke-2 = opsi tambah belakangan (klausa chassis di atas yang mengunci jalur ini).
  • Catatan: untuk text-to-SQL, specialist 32B ≈/> generalist 70B di benchmark (§15) — tapi keputusan tetap lewat golden-set uji di Discovery, dan spec ini memberi escape hatch apa pun hasilnya.

Bentuk paket 2 tahun (angka infra = placeholder formulaku (cost ×1,11 ×3); ganti dengan cost pasar riil)

Paket Isi Sell (≈)
1 — DI saja DI 4,5 + maint 1,8 + infra ~3,9* ~Rp 10,2 mrd
2 — DI + KI "Dash Edition" DI 4,5 + KI-Dash 3,5 + maint 20%/yr ×2 = 3,2 + infra ~3,9* ~Rp 15,1 mrd
(+ kartu GPU ke-2) opsi upgrade, +(harga kartu ×1,11×3) ≈ +0,9* Paket 2 → ~16,0
Referensi penuh (§16) KI full 7,0 Rp 20,0

KI "Dash Edition" @ Rp 3,5 mrd = usulanku (bukan angka yang pernah disepakati): lisensi KI dengan scope internal reporting saja — tanpa kanal publik, tanpa self-service status masyarakat, tanpa RAG publik. Price fence yang jujur (setengah harga untuk setengah scope), dan meninggalkan ruang upsell KI penuh nanti.


18. FINAL v2 (2026-07-16) — Rp 20 mrd KHUSUS INFRA · 3 engine full price · retain ≥4 tahun

Reframe Efran: budget Rp 20 mrd = infrastruktur saja; engine (DI 4,5 + T&G 3,5 + KI 7,0 = 15,0 full price, walau awalnya dipakai internal) dan maintenance di luar budget itu. Infra + engine di-retain ≥4 tahun. Pertanyaan: 2× 96 GB (192 GB) cukup, atau tambah?

Jawaban: TAMBAH → 4× ≥96 GB (total ≥384 GB) pada 2 node AI. Alasan struktural, bukan sekadar "mumpung ada budget":
1. Scope naik lagi — 3 engine full berarti KI penuh (kanal publik + RAG + self-service) dan T&G (gateway + guardrail + audit). Chat publik = interaktif/streaming → wajib terpisah dari batch OCR (§14); T&G butuh porsi inferensi kecil (guardrail/embedding).
2. 4 tahun — tren ukuran model naik; VRAM adalah satu-satunya hedge yang tak bisa ditambal belakangan tanpa beli besi baru.
3. 4 tahun layanan publik tanpa redundansi = janji yang tak bisa dipegang. N+1 kembali wajib (RMA kartu di Indonesia = mingguan). 2 node → node-level failover (degraded mode), persis arsitektur Lampiran hardware kita sendiri — hanya di kelas ekonomi 96 GB, bukan kelas HBM 141 GB yang terbukti memecahkan budget (§16: platform lengkap kelas HBM ≈ sell Rp 28 mrd).

Pembagian peran (mengikuti Lampiran §3, brand-free):
| Akselerator | Peran | Headroom 4 tahun |
|---|---|---|
| 0 (Node A1) | LLM ekstraksi DI | naik 70B INT4 satu kartu |
| 1 (Node A1) | OCR-assist + layout + klasifikasi | pelatihan terjadwal off-peak |
| 2 (Node A2) | KI: LLM + RAG + embedding (publik) | 32B→70B; TP 2-kartu dalam node = kelas ~100B+ kuantisasi |
| 3 (Node A2) | Failover / burst + guardrail T&G | menutup peran mana pun |

Spesifikasi (BAST-safe, semua "minimal/≥", tanpa merek)

Node AI ×2 (identik):
- 2× akselerator VRAM ≥96 GB per unit (per node 192; total sistem ≥384 GB) · bandwidth ≥1,5 TB/s per unit · FP16 + kuantisasi 8/4-bit · ECC
- CPU ≥48 core ≥2,4 GHz · RAM ≥768 GB ECC · 2× ≥3,84 TB NVMe (OS, mirror) + 2× ≥7,68 TB NVMe (data) · endurance ≥1 DWPD
- PSU redundan · chassis sanggup ≥4 akselerator double-width (jalur ekspansi ke 8 total) · BMC · 2× ≥25 GbE

Node OCR/worker ×2 (CPU): ≥48 core ≥2,6 GHz · ≥256 GB ECC · 2× ≥1,92 TB NVMe · ≥10 GbE. (replika OCR CPU per model sizing Lampiran §7: ±125 dok kompleks/jam/replika)

Node Database ×2 (HA): ≥32 core · ≥384 GB ECC · 8× ≥3,84 TB NVMe (RAID10, ±15 TB) · ≥25 GbE. (DB relasional + vector index, replikasi + pooling)

Node Aplikasi/API ×2 (HA): ≥24 core · ≥128 GB ECC · 2× ≥1,92 TB NVMe. (di belakang load balancer)

Object storage (arsip 4 thn): usable ≥60 TB redundant (erasure/replikasi) — dokumen + audit append-only + riwayat + KB.
Backup: target ≥120 TB · snapshot harian · uji restore berkala.
Jaringan: 2× ToR ≥25 GbE (MLAG) · switch manajemen OOB · firewall/NGFW pasangan-HA (kanal publik) · load balancer HA.
Fasilitas: DC Tier-3 Indonesia · UPS ≥10 kVA · daya ~5–7 kW · bandwidth redundan.
Garansi & suku cadang (klausa 4 tahun): garansi pabrikan ≥3 thn (target 5) atau unit cadangan on-site: 1× akselerator cold-spare + PSU/NVMe spare kit.

Envelope harga (placeholder cost-ku ×1,11×3 — ganti dengan cost pasar riilmu)

Blok Cost (Rp jt)
4× akselerator 96 GB + 1 cold-spare 1.350
2× node AI 700
2× OCR + 2× DB + 2× app 1.280
Object storage 60 TB + backup 120 TB 700
Network HA (ToR ×2, NGFW pair, LB, OOB) 600
Rack/UPS/PDU/spares 250
CapEx 4.880
Colo ~6 kW 24 bln + buffer 800
Total cost ~5.680
Sell (×1,11×3) ≈ Rp 18,9 mrd ✓ di bawah 20

Turun-spec bila mau ruang: pangkas cold-spare + kecilkan object storage → sell ~17. Naik-spec (isi plafon): +2 akselerator (6 total) → sell ~20,9 — lewat; jadi 4+spare adalah sweet spot plafon.

Kenapa bukan kartu VRAM lebih besar (kelas 141/192 GB HBM)? §16 sudah membuktikan: 4× kelas HBM + platform = cost ~8,5 mrd → sell 28+ mrd, pecah plafon. Dan beban kerja ini butuh jumlah kartu (isolasi peran + redundansi), bukan kartu tunggal raksasa. 96 GB × 4 = arsitektur Lampiran, ekonomi yang masuk.

Referensi nilai total (engine full price, di luar budget infra)

Engine 15,0 + maintenance (di luar, TBD) + infra ≤20 → total program ~Rp 35–41 mrd tergantung struktur maintenance.


19. Dua konfigurasi final — DI-only vs DI+KI+T&G (2026-07-16)

Horizon retain ≥4 tahun untuk keduanya. Semua spek "minimal/≥", tanpa merek (BAST-safe). Harga = placeholder unit-economics-ku; formula: raw → +PPN 11% → ×3.

Spek berdampingan

Blok DI only DI + KI + T&G (=§18)
Node AI ×1: 2× akselerator VRAM ≥96 GB (total ≥192), ≥1,5 TB/s/unit, FP16+8/4-bit, ECC · CPU ≥32c · RAM ≥512 GB ECC · 2× ≥3,84 + 2× ≥7,68 TB NVMe · PSU redundan · chassis sanggup ≥4 akselerator · 2× ≥25 GbE ×2 identik: masing-masing 2× ≥96 GB (total ≥384 GB) · CPU ≥48c · RAM ≥768 GB ECC · storage sama · chassis ≥4 slot
Peran akselerator 0: pipeline DI penuh (OCR-assist+layout+LLM ekstraksi) · 1: failover/burst + headroom 70B 0: LLM ekstraksi · 1: OCR-assist/layout · 2: KI publik (LLM+RAG+embedding) · 3: failover + guardrail T&G
Node OCR/worker (CPU) ×1: ≥48c ≥2,6 GHz · ≥256 GB ECC · 2× ≥1,92 TB NVMe ×2 (sama per unit)
Node Database ×2 HA: ≥32c · ≥256 GB ECC · 4× ≥3,84 TB NVMe RAID10 (±7,6 TB) ×2 HA: ≥32c · ≥384 GB ECC · 8× ≥3,84 TB RAID10 (±15 TB)
Node Aplikasi/API ×1: ≥24c · ≥128 GB ECC ×2 HA di belakang LB
Object storage (4 thn) usable ≥30 TB redundant usable ≥60 TB redundant
Backup ≥60 TB, snapshot harian ≥120 TB
Jaringan 1× ToR ≥25 GbE + mgmt OOB + firewall 2× ToR MLAG + NGFW pasangan-HA + LB HA + OOB
Cold-spare (klausa 4 thn) 1× akselerator + spare kit 1× akselerator + spare kit
Daya / UPS ~2,5–3 kW · UPS ≥5 kVA ~5–7 kW · UPS ≥10 kVA
Fasilitas Tier-3 Indonesia Tier-3 Indonesia

Harga (placeholder — ganti raw dengan cost pasar riil; struktur tetap)

Komponen (Rp juta) DI only DI + KI + T&G
Akselerator (2+spare / 4+spare) 810 1.350
Node AI 300 700
OCR + DB + App node 890 1.280
Object storage + backup 430 700
Network 250 600
Rack/UPS/PDU 150 250
CapEx 2.830 4.880
Colo 24 bln + buffer 440 800
RAW (cost) 3.270 5.680
+ PPN 11% 3.629,7 6.304,8
× 3 (sell) ≈ Rp 10,89 mrd ≈ Rp 18,91 mrd

Opsi turun DI-only: hapus cold-spare → raw 3.000 → sell ≈ 9,99 mrd (pas di bawah 10).
Keduanya di bawah plafon infra Rp 20 mrd; gap DI-only→full ≈ Rp 8 mrd sell = harga masuknya KI publik + T&G + HA penuh.


20. BENCHMARK EMPIRIS (2026-07-18) — Specialist 32B vs MoE 397B, text-to-SQL

Klaim §15 yang diuji: "specialist SQL model beats bigger generalists." Efran menantang klaim ini → benchmark riil dijalankan, bukan angka paper.

Setup (protokol identik untuk keduanya): BIRD Mini-Dev, 120 soal stratified (36 simple / 60 moderate / 24 challenging, seed 42, 11 database) · prompt sama: DDL schema + evidence + question · temperature 0 · single-shot (tanpa self-correction/self-consistency) · skor = execution accuracy (hasil query dieksekusi di SQLite, dibandingkan set-equality vs gold).
- Qwen3.5-397B-A17B (MoE, reasoning mode default) via gateway :8200 → DashScope cloud, header CONVENTIONS lengkap, prioritas batch.
- XiYanSQL-QwenCoder-32B-2504 (dense specialist) Q4_K_M GGUF (19,9 GB) di GPU-1 H100 ai-ahu, vLLM 0.24 + vllm-gguf-plugin, util 0.55 — berjalan BERDAMPINGAN dengan seluruh workload produksi; 35B Qwen tidak pernah disentuh. Host dibersihkan penuh setelah selesai (disk & GPU kembali ke keadaan awal).

Hasil

Qwen3.5-397B-A17B (cloud) XiYanSQL-32B Q4 (on-prem)
Overall EX 79/120 = 65,8% 79/120 = 65,8%
simple 86,1% 83,3%
moderate 61,7% 60,0%
challenging 45,8% 54,2%
Median latency 23,75 s 16,71 s
Median completion tokens 1.504 (incl. reasoning) 52 (~29× lebih hemat)
Error 0 api / 0 sql 0 api / 2 sql

Head-to-head: 66 sama-sama benar · 13 hanya 397B · 13 hanya specialist · 28 sama-sama salah. McNemar p≈1,0 → statistical dead tie.

Verdict — jujur

  • Klaim "specialist BEATS" TIDAK terbukti vs MoE reasoning modern — hasilnya seri persis. (Klaim §15 aslinya vs Llama-3.3-70B dense generalist; lawan 397B MoE + reasoning, keunggulan akurasi hilang.)
  • Klaim deployment TERBUKTI: file 20 GB ter-kuantisasi 4-bit, di satu GPU, menyamai model 397B cloud dengan reasoning — sambil 30% lebih cepat, ~29× lebih hemat token output, tanpa biaya cloud per-query, tanpa data keluar (residensi ✓). Untuk KI internal Dash, specialist 32B on-prem tetap pilihan yang tepat — bukan karena menang akurasi, tapi karena akurasi setara dengan biaya & kedaulatan yang jauh lebih baik.
  • Specialist unggul di challenging (54,2% vs 45,8%, n=24 — tidak signifikan, tapi arah yang menarik).

Caveats: specialist di-handicap Q4 (bf16 mungkin +1–3 pt); 397B diuntungkan reasoning mode (bayar 1.500 token/query); single-shot tanpa teknik; BIRD ≠ skema KLH → keputusan final tetap lewat golden-set di Discovery.

Artefak: bench-sql/ (bench.py, cfg_*.json, results_cloud.jsonl, results_specialist.jsonl).


21. SOTA SPECIALIST BARU + ARSITEKTUR 12× B200 (2026-07-18)

Konteks Efran: prod akan punya 16× B200, maksimal 12 untuk chatbot. Pertanyaan: specialist SQL yang lebih baru/SOTA?

Peta specialist text-to-SQL terkini

Model BIRD test (paper) Catatan
Arctic-Text2SQL-R1-32B (Snowflake) 71,83% — single-model SOTA RL/GRPO, reward = execution correctness; +2,8 pt di atas XiYanSQL-32B
Arctic-Text2SQL-R1-7B 68,5% "7B mengalahkan sistem kelas 70B"
XiYanSQL-QwenCoder-32B-2504 69,03% SOTA sebelumnya (yang kita ukur §20)
Agentar-Scale-SQL 81,67% BUKAN model — framework test-time scaling (kandidat majemuk + seleksi)
XiYan-SQL ensemble ~75% framework multi-generator

Benchmark tambahan (harness & 120 soal yang sama)

Arctic-R1-7B bf16 dijalankan di GPU-1 ai-ahu (prod tak tersentuh, host dibersihkan penuh):
| | 397B MoE | XiYanSQL-32B Q4 | Arctic-R1-7B |
|---|---|---|---|
| Overall EX | 65,8% | 65,8% | 62,5% |
| simple / mod / chall | 86,1/61,7/45,8 | 83,3/60,0/54,2 | 86,1/55,0/45,8 |
| Median latency | 23,75 s | 16,71 s | 2,47 s |

7B menempel 3 pt di bawah dua model raksasa dengan latency 7–10× lebih rendah. (Arctic-R1-32B belum termuat di sisa VRAM H100 hari ini — kandidat kuat #1 untuk diuji di B200.)

Angka yang mengubah strategi: oracle ensemble

Dari 3 run di atas, per-soal: union (min. 1 benar) = 95/120 = 79,2% · union 2 specialist saja = 75,0% · majority vote = 66,7% · Arctic uniquely correct = 3 soal.
→ Ceiling ensemble ~79% vs ~66% single-model — +13 pt tersedia lewat test-time scaling, dan itu persis resep Agentar-Scale-SQL (81,67% test). Dengan 12× B200, compute untuk N-kandidat + eksekusi + seleksi adalah pembulatan kecil.

Rekomendasi arsitektur chatbot 12× B200 (2.304 GB VRAM)

Alokasi Peran
4× B200 (TP4) MoE generalis flagship self-host (kelas 397B FP8) — chat publik, RAG, narasi, + generator SQL kandidat #3
2× B200 Pool specialist SQL: Arctic-R1-32B + XiYanSQL-32B bf16 (diversity generator #1/#2) + Arctic-7B untuk jalur latency-sensitif
2× B200 Embedding + reranker + guardrail T&G
2× B200 Selection-judge + burst konkurensi
2× B200 N+1 failover / headroom model growth

Alur SQL (execution-guided selection): N kandidat (2 specialist + MoE) → eksekusi semua di replika DB read-only → hasil sepakat → kirim; beda → selection judge memilih. Data kami: majority naif cuma 66,7%, tapi seleksi berbasis eksekusi bergerak menuju ceiling 79,2%.

Yang perlu diuji berikutnya (di B200 / setelah ruang tersedia): Arctic-R1-32B bf16 single-shot + konfigurasi ensemble 3-generator dengan selection judge, di-gate golden-set KLH.


22. ROUND FINAL (2026-07-18) — Arctic-32B tidak dirilis; Q8 test; ensemble TERUKUR

Otorisasi Efran: boleh matikan 35B di GPU 0 untuk bench Arctic-R1-32B "properly".

Temuan pertama: Arctic-Text2SQL-R1-32B (71,83% BIRD test) TIDAK PERNAH DIRILIS. Snowflake hanya mempublikasikan bobot 7B di HF; 14B/32B paper-only. Klaim SOTA-nya tidak bisa diverifikasi atau di-deploy. → §21 harus dikoreksi: specialist 32B ter-deploy terbaik yang benar-benar ada tetap XiYanSQL-QwenCoder-32B; Arctic hanya menyumbang 7B.

Substitusi yang dijalankan (pakai window downtime yang sama): XiYanSQL-32B Q8_0 (near-lossless, 34,8 GB) di GPU 0 kosong — menguji apakah Q4 menghandicap specialist pada hasil seri §20. Prosedur: build-cache docker di-prune (+38 GB, aman), 35B di-restart selama download (downtime diminimalkan ke ~25 menit), bench 120 soal identik, bersih-bersih penuh, 35B kembali healthy (verified).

Hasil Q8 vs Q4

Q4_K_M Q8_0
Overall EX 65,8% 65,8% — identik
simple/mod/chall 83,3/60,0/54,2 83,3/60,0/54,2
Kesepakatan correctness 118/120 soal sama; 98/120 SQL identik teks

Kuantisasi BUKAN penyebab seri. ~66% adalah ceiling asli specialist ini pada protokol single-shot. Seri vs 397B = hasil yang solid.

Ensemble TERUKUR (bukan oracle) — execution-guided selection offline

Kandidat dieksekusi → dikelompokkan berdasar kesamaan result-set → klaster terbesar menang (tanpa label gold):
| Konfigurasi | Selected-EX |
|---|---|
| Single model terbaik | 65,8% |
| 3-generator DIVERSE (XiYan-32B + 397B + Arctic-7B) | 69,2% (+3,4 pt) |
| 4-generator dengan Q4+Q8 (redundan) | 67,5% — TURUN |
| Oracle ceiling (§21) | 79,2% |

Dua pelajaran keras untuk desain B200: (1) diversity > jumlah generator — menambah generator kembar justru merusak voting; (2) gap 69→79 adalah ruang selection-judge (LLM judge saat kandidat berbeda, bukan sekadar klaster mayoritas).

Konsekuensi untuk §21 (alokasi 12× B200)

Pool specialist SQL = XiYanSQL-32B (bf16/FP8) + Arctic-7B + generator MoE — tiga keluarga berbeda, bukan varian sekeluarga. Arctic-32B dicoret sampai Snowflake merilis bobot. Selection-judge (2× B200 di §21) adalah komponen dengan ROI akurasi tertinggi: +3,4 pt sudah terbukti dengan klaster naif, ~+10 pt lagi tersedia menuju oracle.

Host: 35B healthy kembali, disk 50 GB free (build-cache prune netto +21 GB vs sebelum eksperimen), GPU baseline, semua artefak bench dihapus. Hasil: bench-sql/results_q8.jsonl, ensemble.py.


23. KEPUTUSAN MODEL PRODUKSI (2026-07-18) — 397B atau specialist?

Reframe: bukan either/or. Chatbot KLH punya DUA pekerjaan yang berbeda sifat, dan benchmark kita HANYA menguji satu (NL→SQL). Jawabannya = pakai keduanya, dibagi per peran.

Pekerjaan Menang Model produksi
NL→SQL (data agent / Dash / cek status) Specialist ensemble XiYanSQL-QwenCoder-32B (lead) + Arctic-R1-7B + MoE rumah sebagai generator ke-3, dengan execution-guided selection
RAG synthesis + percakapan + narasi baris SQL→prosa + klasifikasi/routing MoE generalis besar Qwen3.5-397B-A17B (FP8/NVFP4, self-host 4× B200 TP4) atau Qwen3-235B-A22B (~143 GB, 2× B200)

Kenapa specialist untuk SQL (data terukur):
- Akurasi SERI: XiYanSQL-32B = 397B = 65,8% (Q4 & Q8 identik → bukan artefak kuantisasi).
- Specialist ~3× lebih cepat (8,6 vs 23,8 s), ~29× lebih hemat token (52 vs 1.504), dan ~10× throughput/GPU (32B vs 397B) → di skala publik ini menentukan.
- 397B sebagai generator SQL tunggal = bayar mahal untuk hasil yang sama. Jangan.
- Ensemble 3-model DIVERSE + seleksi berbasis eksekusi = 69,2% (+3,4 pt terukur), ceiling 79,2%. Divergasi antar-generator = sinyal "tidak yakin" bawaan → untuk dashboard pimpinan, lebih baik lapor "perlu verifikasi" daripada angka salah dengan percaya diri.

Kenapa tetap butuh MoE besar: specialist SQL tidak bisa mengarang jawaban RAG, bercakap, atau menarasikan hasil. Itu ranah generalis. 397B open-weight → self-host di B200 (bukan DashScope cloud; prod menolak external_dev per CONVENTIONS §5, residensi UU PDP).

397B vs 235B untuk peran generalis: untuk SQL keduanya tak relevan (kalah dari 32B). Untuk kualitas RAG/percakapan — belum diukur di sini. Default efisien = 235B-A22B (2× B200, bebaskan 2 kartu untuk konkurensi/specialist); ambil 397B (4× B200) hanya jika mau kualitas jawaban publik maksimum dan kartu cukup. Putuskan lewat A/B RAG-quality di Discovery, bukan asumsi.

Rakitan akhir (SQL): fan-out 3 generator → eksekusi semua di replika DB read-only → klaster result-set, terbesar menang → jika divergen, selection-judge (MoE rumah) memilih atau tandai low-confidence → narasi ke Bahasa Indonesia oleh MoE. Gate final = golden-set pertanyaan pimpinan KLH (pola obs-golden-v1/goldeneval).


24. PROTOTIPE ENSEMBLE + SELECTION-JUDGE — DIBANGUN & DIUJI (2026-07-18)

Prototipe dibangun (bench-sql/ensemble_judge.py): 3 generator diverse (XiYanSQL-32B Q8 + Arctic-R1-7B + Qwen3.5-397B, di-replay dari prediksi temp=0 deterministik) → eksekusi di DB read-only → klaster result-set → judge LIVE (397B via gateway) saat divergen. Confidence tier = HIGH (semua sepakat) / MED / LOW.

Hasil — dan koreksi keras terhadap §21/§23

Kebijakan seleksi EX
Model tunggal terbaik 65,8%
Naive largest-cluster (vote count) 69,2%
+ LLM selection-judge (1 sample) 70,0% (+0,8)
+ LLM judge self-consistency (3 vote, shuffle anti-bias) 68,3% — LEBIH BURUK
Ceiling seleksi-sempurna ~77,5%
Oracle 3-way union 79,2%

Temuan (negatif, penting): LLM selection-judge TIDAK mengalahkan penghitungan suara naif. Pada 50 soal divergen: judge 22–24/50, naive 23/50 — setara noise. Koreksi: klaim §21/§23 "selection-judge = komponen ROI tertinggi" SALAH, dibantah oleh tes sendiri. Sebabnya fundamental: memilih jawaban benar saat kandidat berbeda sama sulitnya dengan menghasilkannya (kalau judge tahu mana yang benar, generator sudah menghasilkannya) — dan 397B adalah salah satu generator, jadi bias ke jawabannya sendiri.

Yang BENAR-BENAR bernilai: confidence gating

Tier Jumlah Akurasi Aksi produksi
HIGH (semua generator sepakat) 68/120 (57%) 85,3% auto-serve
MED (mayoritas / satu valid) 41/120 ~52% tampilkan + tandai "perlu verifikasi"
LOW (semua beda / semua error) 11/120 ~30% rute ke manusia / query templated

Divergasi antar-generator = sinyal ketidakpastian yang akurat. Untuk dashboard pimpinan, ini produk sesungguhnya: sistem tahu KAPAN ia benar. Auto-serve hanya tier HIGH → ~85% akurasi pada 57% pertanyaan; sisanya diarahkan, bukan ditebak.

Konsekuensi arsitektur (revisi §21 alokasi 12× B200)

  • Coret selection-judge sebagai lever akurasi. Pakai naive largest-cluster (tanpa latency/biaya judge).
  • 2× B200 yang tadinya untuk judge → realokasi ke (a) lebih banyak generator diverse (menaikkan ceiling 79% + kesepakatan) dan (b) jalur human-in-the-loop untuk tier MED/LOW.
  • Lever akurasi sebenarnya, berurutan: schema-linking + few-shot KLH (menaikkan base rate jauh di atas 65% BIRD yang sengaja sulit) > lebih banyak/lebih baik generator (menaikkan ceiling) > confidence gating (memutuskan kapan serve). Selection-judge: tidak.

Artefak: bench-sql/ensemble_judge.py, results_ensemble_judge.jsonl (single), results_ensemble_judge_sc3.jsonl (self-consistency).


25. REKAP KESEPAKATAN GPU + EVALUASI OPSI L40S (2026-07-18)

Yang sudah disepakati (rekap)

Ke KLH (spec-only, tanpa merek — §18/§19): akselerator VRAM ≥96 GB per unit, bandwidth ≥1,5 TB/s, FP16 + kuantisasi 8/4-bit, ECC. DI-only = 1 node AI × 2 unit (≥192 GB) + 1 cold-spare. DI+KI+T&G = 2 node AI × 2 unit (total ≥384 GB) + spare. Chassis wajib muat ≥4 unit.
Kelas acuan internal: RTX PRO 6000 Blackwell 96 GB (~270jt landed) — dipilih mengalahkan DGX Spark (bandwidth 273 GB/s = prototyping), dan menggantikan 4× H200 NVL dari Lampiran (cost ~8,54 mrd → sell 28+ mrd, memecahkan plafon §16).
(Terpisah: prod kita sendiri = 16× B200, 12 untuk chatbot — bukan konfigurasi KLH.)

L40S — data

L40S 96 GB-class (disepakati) H200 NVL (Lampiran)
VRAM 48 GB GDDR6 ECC 96 GB GDDR7 ECC 141 GB HBM3e
Bandwidth 864 GB/s ~1.792 GB/s 4,8 TB/s
Daya 350 W 600 W ~600 W
NVLink / FP4 tidak / tidak (Ada, max FP8) tidak / ya ya / tidak
Harga ~$7,5–10k (~200jt) ~$11,5k (~270jt) ~$31,5k (~737jt)

Inti ekonomi: L40S = 74% harga untuk 50% VRAM dan 48% bandwidth → per-GB ±1,5× LEBIH MAHAL.

Konsekuensi biaya (formula (raw+PPN)×3)

Skenario Akselerator Sell vs baseline
DI-only, 96GB-class (baseline §19) 3× 270 = 810 Rp 10,89 mrd
DI-only, L40S jumlah kartu sama (VRAM 192→96 GB) 3× 200 = 600 Rp 10,19 mrd −0,7 mrd
DI-only, L40S VRAM setara (5 kartu) 5× 200 = 1.000 Rp 11,52 mrd +0,63 mrd ✗
Full package, 96GB-class (baseline §19) 5× 270 = 1.350 Rp 18,91 mrd
Full, L40S jumlah sama (VRAM 384→192 GB) 5× 200 = 1.000 Rp 17,75 mrd −1,16 mrd, headroom hancur
Full, L40S VRAM setara (9 kartu) 9× 200 = 1.800 Rp 20,41 mrd LEWAT plafon 20

Daya: DI-only L40S hemat ~500 W; tapi pada VRAM setara (8 kartu) justru 2.800 W vs 2.400 W — lebih boros.

Apakah 48 GB cukup? (pakai angka terukur kita)

Beban VRAM 48 GB?
SQL specialist 32B Q4 19,9 GB ✓ lega — dan §22 membuktikan Q4 = Q8 (65,8% identik), jadi kuantisasi GRATIS secara akurasi
SQL specialist 32B Q8 34,8 GB ✓ (~13 GB sisa KV) — cukup untuk Dash internal konkurensi rendah
Stack DI penuh (OCR 8 + VLM peak 25 + LLM 12) ~45 GB ⚠ mepet di satu kartu; aman bila dipecah 2 kartu (mengorbankan kartu failover)
70B INT4 (hedge "kalau 32B ga ngangkat") ~40 GB + KV hedge 4-tahun MATI
MoE besar (235B/397B) 143 GB+ ✗ mustahil (tanpa NVLink, TP lewat PCIe lambat)

Rekomendasi

  1. DI-only → L40S LAYAK dan lebih murah (hemat ~Rp 700jt sell). Temuan Q4=Q8 kita membuat 32B muat nyaman. Ambil bila procurement mengutamakan ketersediaan/harga stabil.
  2. Full package (DI+KI+T&G, publik, 4 tahun) → JANGAN L40S. VRAM setara justru melewati plafon; jumlah kartu sama mengorbankan seluruh cerita headroom. Tetap 96 GB-class.
  3. Paling cerdas: armada campuran — L40S untuk tier OCR/DI (murah, hemat daya, pas ukuran), 96 GB-class untuk tier LLM/KI (butuh headroom). Ini konsisten dengan Lampiran sendiri, yang memang memisahkan node GPU-Inference (H200) dari node OCR/Doc-AI (0–1× L4) — jadi bukan menyalahi dokumen yang sudah dilihat KLH.

Keunggulan nyata L40S (jujur): ada di katalog OEM mana pun (server card pasif dual-slot, rack-friendly, sourcing Indonesia mudah = aman untuk BAST); tidak terpapar kelangkaan GDDR7 yang menaikkan harga kartu 96 GB sampai 55% — penting untuk kontrak harga tetap 2 tahun; daya per kartu lebih rendah.
Risikonya: rilis Agustus 2023 → sudah 3 tahun sekarang, 7 tahun di akhir kontrak; tanpa FP4/NVFP4 padahal distribusi model sudah bergerak ke sana (build NVFP4 resmi Qwen3.5-397B ada di HF).

KONSEKUENSI DOKUMEN: spek yang kita tulis ke KLH berbunyi "VRAM ≥96 GB per unit" — L40S (48 GB) TIDAK MEMENUHI. Bila pindah ke L40S, bahasa spek WAJIB diubah ke basis total (mis. "total ≥192 GB pada ≥4 unit, masing-masing ≥48 GB"), atau BAST akan mismatch.