karawaci.kode

2026-06-11 · 6 min

Cloudflare Workers AI vs Replicate: Cost di 100k Inference

Klien warung kuliner Tangerang minta fitur otomatis classify foto menu yang user upload (apakah ini foto makanan, atau foto non-makanan / asal-asalan). Saya benchmark dua opsi: Cloudflare Workers AI (built-in vision model) vs Replicate (akses ke model custom). Test selama 30 hari dengan 100k inference real.

Setup

App: backend menerima upload image dari kasir warung, classify kategori (Makanan / Minuman / Bukan-makanan / Burem). Untuk auto-tag menu di POS supaya bisa di-search.

Volume: ~3,300 inference/hari (3 cabang × ~1100 menu upload + edit/hari).

Model option:

  • Workers AI: @cf/microsoft/resnet-50 untuk image classification (pre-trained, generic)
  • Replicate: model yorickvP/clip-vit-large custom fine-tuned untuk konteks Indonesia (saya train singkat dengan dataset 800 foto warung)

Deployment:

  • Workers AI: dipanggil dari Cloudflare Worker
  • Replicate: dipanggil dari Bun server di Hetzner VPS

Cost (30 hari, 100k inference)

Cloudflare Workers AI:

  • Pricing: $0.011 per 1k neurons (resnet-50 ~3 neurons/inference)
  • 100,000 × 3 = 300,000 neurons
  • Cost: 300 × $0.011 = $3.30
  • Plus Workers request: 100k × $0.30/million = $0.03
  • Total: $3.33 (~Rp 53k)

Replicate:

  • Pricing: $0.00010 per second × inference time
  • Average inference time clip-vit-large di Replicate T4 GPU: ~1.4 detik
  • 100,000 × 1.4 detik × $0.00010 = $14.00
  • Total: $14.00 (~Rp 224k)

Workers AI 4,2x lebih murah untuk volume ini. Bahkan kalau saya pakai Replicate model yang lebih kecil (e.g., yolov8n, ~0.4 detik), tetap ~$4 vs $3,33. Workers AI tetap leading di cost untuk small-model use case.

Latency

Workers AI (dipanggil dari Worker di JKT POP):

  • P50: 380ms
  • P95: 1,2 detik
  • P99: 2,4 detik

Replicate (dipanggil dari Bun server Hetzner Singapore → Replicate US/EU):

  • P50: 1,8 detik
  • P95: 3,4 detik (warm)
  • P99: 12 detik (cold start GPU)

P50 Workers AI lebih cepat 4,7x. P95 lebih cepat 2,8x. Source: model resnet-50 lebih kecil + dipanggil dari edge (no extra hop).

Workers AI P99 spike ke 2,4 detik biasanya saat Cloudflare migrate model ke POP berbeda. Tidak predictable.

Accuracy

Saya manual annotate 500 sample image untuk ground truth.

Workers AI resnet-50 (out-of-box):

  • Accuracy: 73%
  • False positive: 18% (foto non-makanan diklasifikasi sebagai makanan)
  • False negative: 9%

Replicate clip-vit-large fine-tuned:

  • Accuracy: 89%
  • False positive: 6%
  • False negative: 5%

Replicate menang accuracy karena fine-tuning. Untuk Workers AI saya tidak bisa fine-tune (model fixed). Worth-noting: kalau saya pakai Workers AI vision model yang lebih besar (@cf/llava-1.5-7b-hf untuk multimodal description), accuracy bisa naik ke ~84% tapi cost naik 8x.

Trade-off real

Untuk klien warung, akurasi 73% berarti 27 dari 100 foto auto-classify salah, dan harus manual koreksi kasir. Effort manual: 30 detik per koreksi = 13,5 menit per 100 foto.

Akurasi 89% berarti 11 koreksi = 5,5 menit per 100 foto.

Time saving: 8 menit per 100 foto = 264 menit/bulan (3,300 inference/hari ÷ 100 × 8 menit). Sekitar 4,4 jam kasir time.

Kalau kasir di-bayar Rp 25k/jam: saving Rp 110k/bulan dengan akurasi lebih tinggi.

Net cost analysis:

  • Workers AI: Rp 53k/bulan + Rp 110k manual labor (lower accuracy) = Rp 163k/bulan
  • Replicate: Rp 224k/bulan + Rp 0 extra labor = Rp 224k/bulan

Workers AI tetap lebih murah keseluruhan untuk klien ini, meskipun akurasi lower. Sekitar Rp 60k/bulan saving.

Apa yang saya pilih

Workers AI untuk klien warung ini. Reasoning:

  1. Cost lebih rendah net (termasuk manual labor)
  2. Latency lebih bagus (kasir tidak nunggu lama)
  3. Tidak perlu maintain training pipeline custom

Untuk klien lain dengan use case beda (e.g., medis image classification yang false positive mahal): pilih Replicate atau model dedicated.

Yang break

  1. Workers AI cold start di POP Jakarta: kadang model belum loaded di POP Jakarta, request route ke POP Singapore. P99 latency spike. Tidak ada control.

  2. Replicate quota: free tier limit 50 inference/menit. Saya pernah hit limit saat bulk import 5000 menu lama. Switch ke paid tier on-demand.

  3. Image size: Workers AI default limit input 6MB. Untuk foto HP modern bisa lebih (Samsung S23 raw ~10MB). Saya resize client-side sebelum upload, max 1024x1024px.

  4. Model versioning Replicate: clip-vit-large saya update version, output schema berubah subtle. Test break. Saya pin specific version hash sekarang.

Memory

Workers AI: no infrastructure dari saya. Cloudflare yang manage.

Replicate: dipanggil dari Bun server Hetzner. Memory overhead minimal (~5MB per inference karena cuma fetch + parse JSON response).

Verdict

Untuk klasifikasi image bulk di app SMB Indonesia: Workers AI default pilihan. Cheap, fast enough, accuracy acceptable.

Replicate untuk use case yang butuh model custom atau state-of-the-art (LLM, diffusion, fine-tuned vision). Lebih flexible, ekosistem model raksasa.

Bukan magic — accuracy 73% di Workers AI artinya kasir tetap harus koreksi. Komunikasi expectation ke klien penting. Untuk app yang accuracy critical (medis, legal): pakai model dedicated, bayar lebih.

Pattern serupa dengan comparison Drizzle vs Prisma saya: pilih tool yang fit problem, bukan default ke yang paling hyped.

Ditulis oleh Reza Pradipta