SSD Nodes Learn 🎉 VPS mulai $5.50/bln
Panduan Matt ConnorOleh Matt Connor · Diperbarui 2026-08-13

GPU VPS vs Token API: Kapan Mulai Lebih Hemat?

GPU VPS seharga $0.50 per jam setara dengan API berdasarkan volume bulanan. Lihat rumus titik impas dan jumlah token saat biayanya berbalik.

Titik impas yang sebenarnya

GPU VPS mengungguli penagihan API per token pada satu titik: ketika biaya sewa bulanan tetap, dibagi dengan jumlah token output yang benar-benar Anda hasilkan pada bulan tersebut, lebih rendah daripada biaya API untuk token yang sama. Biaya sewa tetap. Tagihan API berubah pada setiap permintaan. Jadi, jawabannya selalu berupa volume bulanan, bukan sekadar ya atau tidak.

Gunakan GPU VPS kelas menengah dengan tarif $0.50 per jam, yaitu $365 untuk bulan dengan 730 jam. Dibandingkan dengan API model frontier, titik impas tercapai pada 24.3 juta token output per bulan. Dibandingkan dengan model komersial kecil, angkanya 73 juta. Dibandingkan dengan model open-weight ter-host dengan ukuran yang sama, Anda tidak pernah mencapai titik impas karena satu kartu tidak dapat menghasilkan cukup token dalam sebulan untuk mencapai titik perpotongan.

Studi titik impas yang telah dipublikasikan tidak menjawab pertanyaan ini. Dua studi yang diterbitkan pada awal 2026 menempatkan titik perpotongan di sekitar utilisasi berkelanjutan 72% pada H200, serta antara 22% dan 48% duty cycle pada MI300X. Keduanya membandingkan biaya dengan produk serverless milik vendor yang sama, dan keduanya menggunakan harga accelerator yang lebih mahal per jam daripada pengeluaran bulanan sebagian besar pembaca di sini. Perhitungannya sama. Bagian berikut menghitung ulang perbandingan tersebut untuk satu kartu, satu model open dalam rentang 7B hingga 30B, dan penagihan API bermeter biasa.

Setiap angka di bawah ini adalah input, bukan hasil. Ganti semuanya dengan angka Anda sendiri.

Rumusnya, sehingga Anda dapat mengganti angkanya sendiri

cost_per_million = (hourly_rate * 1000000) / (tokens_per_second * 3600 * duty_cycle)

breakeven_millions_per_month = (hourly_rate * hours_per_month) / api_price_per_million

capacity_millions_per_month = (tokens_per_second * 3600 * hours_per_month) / 1000000

required_duty_cycle = breakeven_millions_per_month / capacity_millions_per_month

Ada empat input, dan Anda dapat mengukur atau mencari keempatnya.

  • hourly_rate adalah biaya VPS GPU per jam, termasuk jam saat VPS tersebut menganggur. Jika Anda membayar bulanan, bagi harga bulanan dengan 730.
  • tokens_per_second adalah laju output agregat yang dapat dipertahankan server pada tingkat konkurensi nyata Anda. Ini bukan angka single-stream dari grafik vendor.
  • duty_cycle adalah proporsi waktu dalam sebulan saat GPU digunakan untuk menghasilkan token. Server yang Anda sewa selama sebulan penuh dan gunakan selama dua jam per hari memiliki tingkat penggunaan 8.3%.
  • api_price_per_million adalah harga terukur yang Anda gunakan sebagai pembanding untuk token output.

Contoh ini menghitung harga token output di kedua sisi karena output mendominasi biaya untuk pekerjaan chat dan agent. Jika prompt Anda panjang, tambahkan input pada kedua sisi. Pada sisi API, input tercantum sebagai baris terpisah pada faktur. Pada server Anda sendiri, prefill menggunakan waktu GPU, sehingga dampaknya sudah terlihat sebagai tokens_per_second yang terukur lebih rendah.

Cara mengukur token per detik sebelum mempercayai perhitungan

Semua perhitungan di atas bergantung pada satu angka hasil pengukuran. Jika angkanya meleset tiga kali lipat, hasilnya juga meleset tiga kali lipat. Ukur angka tersebut pada card yang Anda sewa, menggunakan model dan quantisation yang benar-benar akan Anda jalankan.

Ollama memberikan angka untuk satu stream dalam satu perintah:

ollama run qwen3:8b --verbose "Write 400 words about disk latency."

--verbose menampilkan blok waktu setelah jawaban selesai. Baris yang penting adalah eval rate, dalam token per detik, yang hanya menghitung proses generation. prompt eval rate adalah kecepatan prefill dan biasanya jauh lebih tinggi. Hasil pengukuran Anda akan berbeda dari contoh berikut:

eval count:       412 token(s)
eval duration:    9.612s
eval rate:        42.86 tokens/s

Single stream bukan angka yang tepat untuk model biaya, karena pengukuran ini hanya memproses satu request pada satu waktu, padahal satu card dapat melayani banyak request sekaligus. Untuk mendapatkan angka agregat, jalankan model dengan vLLM dan baca throughput yang dilaporkan server:

pip install vllm
vllm serve Qwen/Qwen3-8B --max-model-len 8192

Saat request sedang diproses, server mencatat baris status pada setiap interval pelaporan. Field yang tersedia dapat berubah antar-rilis vLLM, jadi gunakan hasil dari sistem Anda, bukan hasil saya:

Avg prompt throughput: 812.4 tokens/s, Avg generation throughput: 396.1 tokens/s, Running: 16 reqs, Waiting: 0 reqs, GPU KV cache usage: 21.7%

Avg generation throughput adalah angka yang diperlukan oleh formula. Angka ini meningkat saat Anda menambahkan request secara bersamaan sampai KV cache (key-value cache, yaitu state attention per request yang disimpan vLLM di VRAM) penuh. Setelah itu, angkanya tidak lagi meningkat. Jika Anda menambahkan request melebihi kapasitas tersebut, request akan masuk antrean, bukan diproses lebih cepat. Hal ini terlihat dari jumlah Waiting yang meningkat. vLLM juga menyediakan load generator bernama vllm bench serve. Flag-nya dapat berubah antarversi, jadi jalankan vllm bench serve --help pada versi yang Anda instal, bukan menyalin perintah dari posting blog.

Pantau card saat pengujian berjalan:

nvidia-smi --query-gpu=utilization.gpu,memory.used,power.draw --format=csv -l 5

Jika utilization.gpu berada mendekati 100% selama generation, Anda dibatasi oleh throughput dan angka yang diukur merupakan batas sebenarnya. Jika nilainya tetap rendah, ada batasan lain: jumlah request bersamaan terlalu sedikit, client lambat, atau model tidak muat di VRAM sehingga sebagian prosesnya di-offload ke system RAM. Ollama dan vLLM memiliki trade-off yang sangat berbeda dalam hal ini, dan selisih kinerja keduanya pada card yang sama cukup besar untuk mengubah titik impas hingga beberapa kali lipat.

Bentuk tagihan selama sebulan

Contoh perhitungan ini menggunakan satu GPU VPS 24 GB dengan tarif $0.50 per jam, model terbuka 8B yang dilayani oleh vLLM, serta throughput terukur sebesar 400 token output per detik secara agregat dengan 16 permintaan bersamaan. Biaya sewa tetap sama, baik kartu tersebut digunakan maupun tidak. Pada laju ini, kapasitasnya mencapai 1,051 juta token output per bulan. Jumlah itu adalah output yang dihasilkan kartu jika kartu terus berjalan tanpa henti.

ChartMonthly cost by output volume: one GPU VPS at $0.50 per hour against metered APIs (USD)
The data behind this chart
[
  {
    "output_tokens_millions": 5,
    "gpu_vps_usd": 365,
    "open_api_usd": 1,
    "small_api_usd": 25,
    "frontier_api_usd": 75
  },
  {
    "output_tokens_millions": 10,
    "gpu_vps_usd": 365,
    "open_api_usd": 2,
    "small_api_usd": 50,
    "frontier_api_usd": 150
  },
  {
    "output_tokens_millions": 25,
    "gpu_vps_usd": 365,
    "open_api_usd": 5,
    "small_api_usd": 125,
    "frontier_api_usd": 375
  },
  {
    "output_tokens_millions": 50,
    "gpu_vps_usd": 365,
    "open_api_usd": 10,
    "small_api_usd": 250,
    "frontier_api_usd": 750
  },
  {
    "output_tokens_millions": 100,
    "gpu_vps_usd": 365,
    "open_api_usd": 20,
    "small_api_usd": 500,
    "frontier_api_usd": 1500
  },
  {
    "output_tokens_millions": 250,
    "gpu_vps_usd": 365,
    "open_api_usd": 50,
    "small_api_usd": 1250,
    "frontier_api_usd": 3750
  },
  {
    "output_tokens_millions": 500,
    "gpu_vps_usd": 365,
    "open_api_usd": 100,
    "small_api_usd": 2500,
    "frontier_api_usd": 7500
  },
  {
    "output_tokens_millions": 1000,
    "gpu_vps_usd": 365,
    "open_api_usd": 200,
    "small_api_usd": 5000,
    "frontier_api_usd": 15000
  }
]

Biaya GPU tetap pada 365 dolar karena biaya sewa tidak dipengaruhi oleh penggunaan kartu. Setiap biaya API membentuk garis lurus yang berawal dari nol. Setiap pasangan garis berpotongan tepat satu kali.

Pada 25 juta token output per bulan, biaya API frontier adalah 375 dolar. Jadi, kedua pilihan tersebut berbeda kurang dari sepuluh dolar. Pada 50 juta token, biaya model komersial kecil adalah 250 dolar dan masih menjadi pilihan yang lebih murah. Pada 1000 juta token output, yang mengharuskan kartu bekerja selama 95% waktu dalam sebulan, biaya API open-weight terkelola adalah 200 dolar dibandingkan biaya sewa yang sama. Kartu tersebut hampir dua kali lebih mahal tepat pada volume ketika kartu bekerja paling keras.

Hasil terakhir ini mengejutkan banyak orang, tetapi bukan kebetulan. Endpoint open-weight terkelola adalah armada GPU yang dijalankan dengan utilisasi tinggi. Karena itu, harganya mendekati biaya kartu yang sudah jenuh. Anda tidak dapat mengalahkan biaya armada yang jenuh dengan menyewa satu kartu dan menjalankannya di bawah beban penuh. Yang dapat Anda kalahkan adalah harga frontier, yang ditentukan oleh kemampuan model, bukan oleh waktu penggunaan silikon.

Biaya per juta token output pada setiap duty cycle

Volume dan duty cycle adalah fakta yang sama jika dilihat dari dua sisi. Biaya sewa membeli waktu penggunaan. Jam idle tidak menghasilkan apa pun, tetapi tetap menimbulkan biaya.

ChartCost per million output tokens at each duty cycle (USD, list prices August 2026)
The data behind this chart
[
  {
    "label": "100% duty",
    "self_host_usd_per_million": "0.35",
    "open_api_usd_per_million": "0.20",
    "small_api_usd_per_million": "5.00",
    "frontier_api_usd_per_million": "15.00"
  },
  {
    "label": "50% duty",
    "self_host_usd_per_million": "0.69",
    "open_api_usd_per_million": "0.20",
    "small_api_usd_per_million": "5.00",
    "frontier_api_usd_per_million": "15.00"
  },
  {
    "label": "25% duty",
    "self_host_usd_per_million": "1.39",
    "open_api_usd_per_million": "0.20",
    "small_api_usd_per_million": "5.00",
    "frontier_api_usd_per_million": "15.00"
  },
  {
    "label": "10% duty",
    "self_host_usd_per_million": "3.47",
    "open_api_usd_per_million": "0.20",
    "small_api_usd_per_million": "5.00",
    "frontier_api_usd_per_million": "15.00"
  },
  {
    "label": "5% duty",
    "self_host_usd_per_million": "6.94",
    "open_api_usd_per_million": "0.20",
    "small_api_usd_per_million": "5.00",
    "frontier_api_usd_per_million": "15.00"
  },
  {
    "label": "2% duty",
    "self_host_usd_per_million": "17.36",
    "open_api_usd_per_million": "0.20",
    "small_api_usd_per_million": "5.00",
    "frontier_api_usd_per_million": "15.00"
  }
]

Tiga kolom API tersebut menggunakan harga daftar yang umumnya dipublikasikan per Agustus 2026: 0.20 dolar per juta token output untuk model open-weight 8B yang di-host, 5.00 dolar untuk model komersial kecil, dan 15.00 dolar untuk model frontier. Angka tersebut hanya ilustrasi. Periksa halaman harga terbaru sebelum mengambil keputusan. Jika perbandingan Anda menggunakan paket bulanan tetap, bukan token yang ditagihkan berdasarkan pemakaian, perhitungan langganannya berbeda dan titik impasnya kembali berubah.

Jika GPU digunakan secara penuh, biaya satu juta token output adalah 0.35 dolar. Biaya ini memang murah. Pada duty cycle 10%, biaya untuk satu juta token yang sama menjadi 3.47 dolar. Pada duty cycle 2%, biayanya menjadi 17.36 dolar. Angka ini tidak sebanding dengan 0.20 dolar yang dikenakan oleh layanan open model ter-host untuk output yang sama.

Di bawah duty cycle sekitar 10%, menyewa GPU merupakan pilihan yang mahal. Anda membayar 3.47 dolar per juta token untuk output yang dijual seharga 0.20 dolar. Selisihnya memberi Anda privasi dan tagihan yang tidak berubah. Keduanya dapat bernilai nyata. Namun, keduanya bukan keunggulan harga. Jangan mencatatnya sebagai keunggulan harga.

Volume titik impas untuk setiap tier API

ChartBreak-even output volume per month, and the duty cycle it requires
The data behind this chart
[
  {
    "label": "Hosted open 8B API",
    "breakeven_tokens_millions": 1825,
    "required_duty_pct": 174
  },
  {
    "label": "Small commercial model",
    "breakeven_tokens_millions": 73,
    "required_duty_pct": 6.9
  },
  {
    "label": "Frontier model",
    "breakeven_tokens_millions": 24.3,
    "required_duty_pct": 2.3
  }
]

Dibandingkan dengan tier frontier, Anda memerlukan 24.3 juta token output per bulan. Jumlah ini hanya 2.3% dari kapasitas kartu tersebut. Ambangnya rendah. Tim kecil yang menjalankan coding agent sepanjang jam kerja dapat melampauinya.

Dibandingkan dengan tier komersial kecil, Anda memerlukan 73 juta token per bulan, atau 6.9% duty cycle. Dibandingkan dengan tier open-weight ter-host, duty cycle yang diperlukan adalah 174%. Nilai di atas 100% tidak dapat dicapai berdasarkan definisi: kartu tersebut harus beroperasi lebih lama daripada jumlah jam dalam sebulan. Satu kartu kelas menengah dengan tarif per jam ini tidak dapat mengungguli perbandingan tersebut. Karena itu, satu-satunya cara untuk mengubah hasilnya adalah menggunakan kartu yang lebih murah, kartu yang lebih cepat, atau alasan yang tidak berkaitan dengan harga.

Hal yang Tidak Tercakup dalam Rumus

Rumus tersebut menghitung biaya jam GPU dan token. Beberapa biaya nyata tidak tercakup di dalamnya.

Cold start. Model 8B dengan bobot 16-bit berukuran sekitar 16 GB, dan pemuatannya dari disk lokal ke VRAM memerlukan waktu puluhan detik. Jika Anda mematikan server di antara penggunaan untuk menghemat biaya sewa, Anda harus menunggu selama itu pada setiap permintaan pertama. Jika server dibiarkan menyala untuk menghindari waktu tunggu, duty cycle Anda turun drastis sehingga biaya per token meningkat. Trade-off tersebut merupakan alasan utama adanya inferensi serverless.

Penyimpanan dan pengunduhan. Bobot model berukuran besar. Model 8B dalam format 16-bit berukuran sekitar 16 GB, model 30B yang di-quantize ke 4-bit berukuran sekitar 18 GB, sedangkan model 30B dalam format 16-bit sama sekali tidak muat pada kartu 24 GB. Batasnya menjadi semakin jelas pada model kelas atas. Menjalankan model open dengan satu triliun parameter seperti Kimi K3 berarti ukuran bobotnya saja melebihi kapasitas satu kartu yang dapat Anda sewa per jam. Anda membayar disk tersebut setiap bulan dan membayar dalam bentuk waktu setiap kali melakukan rebuild. Jalankan du -sh ~/.cache/huggingface/hub setelah seminggu bereksperimen. Ukurannya bertambah lebih cepat dari perkiraan karena setiap hasil quantization yang pernah Anda coba masih tersimpan di sana.

Waktu Anda sendiri. Versi driver dan CUDA, error out-of-memory pada panjang konteks yang kemarin masih berfungsi, serta pembaruan model yang mengubah template chat. Semua itu tidak muncul dalam angka biaya per token, tetapi semuanya menghabiskan waktu Anda pada malam hari. Jika Anda belum pernah menentukan ukuran salah satu server ini, apa yang sebenarnya diberikan GPU VPS kepada Anda layak dibaca sebelum Anda berkomitmen membayar sewa selama satu bulan.

Kesenjangan kualitas. Ini adalah biaya tersembunyi terbesar dan yang paling sulit dihitung. Model open 8B bukan model frontier. Jika model tersebut memerlukan tiga percobaan sementara model frontier hanya memerlukan satu, harga nyata per jawaban yang berguna menjadi tiga kali lipat dari nilai pada grafik, dan model tersebut mungkin tetap gagal menyelesaikan tugas. Bandingkan menggunakan prompt Anda sendiri sebelum membandingkan harga. Untuk workload agent, pendekatan yang umum adalah melakukan routing berdasarkan tingkat kesulitan dan menggunakan token lokal yang murah untuk pekerjaan massal. Sebagian besar pengendalian biaya agent pada VPS, yaitu mengendalikan pengeluaran agent pada VPS, berkaitan dengan hal ini.

Biaya yang terlupakan. Instance GPU per jam yang Anda hentikan sering kali tetap menimbulkan biaya untuk storage terlampir dan alamat IP yang dicadangkan. Periksa invoice, bukan halaman harga.

Kapan self-hosting unggul selain dari segi harga

Empat kondisi ketika perhitungan biaya bukan faktor penentu.

  • Data yang tidak boleh keluar dari kendali Anda. Jika aturan kepatuhan melarang pengiriman teks kepada pihak ketiga, harga per token bukanlah pertanyaan yang perlu dijawab.
  • Volume tinggi yang stabil dan berjalan terjadwal. Tugas klasifikasi batch yang berjalan selama enam jam setiap malam memiliki duty cycle 25% sejak awal, dan tidak pernah menimbulkan tagihan yang tidak terduga.
  • Batas laju. GPU Anda sendiri memiliki satu antrean, dan antrean itu sepenuhnya milik Anda.
  • Model yang tidak ditawarkan oleh API mana pun. Jika Anda memerlukan fine-tune tertentu, tidak ada opsi pembanding.

Jika Anda ingin menguji versi murah terlebih dahulu, menjalankan model kecil pada VPS dengan Ollama hanya memerlukan waktu satu sore, dan menentukan ukuran open model berdasarkan GPU yang akan Anda sewa memberi tahu GPU yang sebenarnya Anda perlukan. Lakukan pengukuran di sana sebelum berlangganan sewa GPU selama satu bulan.

FAQ

Pada volume token bulanan berapa GPU VPS lebih hemat daripada harga API?

Bagi biaya bulanan GPU dengan harga API per satu juta token output. GPU yang disewa seharga $365 per bulan, dibandingkan dengan API frontier seharga 15.00 dolar per satu juta token, mencapai titik impas pada 24.3 juta token output per bulan. Dibandingkan dengan model komersial kecil seharga 5.00 dolar, titik impasnya adalah 73 juta token. Dibandingkan dengan model open-weight hosted seharga 0.20 dolar, satu GPU kelas menengah tidak dapat menghasilkan token yang cukup dalam sebulan untuk mencapai titik impas.

Mengapa API open-weight hosted lebih murah daripada GPU saya sendiri?

Karena harganya ditetapkan mendekati biaya GPU yang digunakan secara penuh, sedangkan GPU Anda tidak digunakan secara penuh. Provider yang melayani ribuan permintaan secara bersamaan dapat menjaga fleet-nya mendekati saturasi. Karena itu, provider dapat menjual token dengan harga yang mendekati biaya marginal produksinya. GPU Anda tidak digunakan hampir sepanjang hari, tetapi Anda tetap membayar jam tidak aktif tersebut. Pada duty cycle 10%, biaya Anda adalah 3.47 dolar per satu juta token output, sedangkan biaya mereka adalah 0.20 dolar.

Apakah saya juga harus menghitung token input?

Hitung token input jika prompt Anda panjang. Perbandingan ini hanya menggunakan token output karena token output merupakan komponen utama untuk pekerjaan chat dan agent. Menambahkan token input akan mengubah kedua sisi perbandingan. Pada sisi API, token input tercantum sebagai biaya terpisah dengan harga yang lebih rendah pada invoice. Pada GPU Anda sendiri, prefill menggunakan waktu GPU. Karena itu, biayanya sudah termasuk dalam jumlah agregat token per detik yang Anda ukur. Lakukan pengukuran dengan panjang prompt yang sebenarnya agar kedua sisi tetap dapat dibandingkan.

Bagaimana cara mengukur token per detik yang diperlukan oleh rumus?

Serve model dengan cara yang akan Anda gunakan, lalu baca laju generasi agregat pada tingkat concurrency yang sebenarnya. Dengan Ollama, ollama run <model> --verbose menampilkan eval rate dalam token per detik. Namun, nilai tersebut berasal dari satu stream sehingga lebih rendah daripada kondisi pada server yang memproses batch. Dengan vLLM, server yang sedang berjalan mencatat Avg generation throughput selama permintaan masih diproses. Gunakan nilai tersebut. Pantau nvidia-smi secara bersamaan. Jika utilisasi GPU tidak mendekati 100% selama generasi, Anda belum menemukan batas maksimumnya.

Apakah GPU VPS layak disewa dengan utilisasi di bawah 10%?

Tidak jika pertimbangannya adalah harga. Pada duty cycle 10%, biaya Anda adalah 3.47 dolar per satu juta token output. Pada 2%, biayanya adalah 17.36 dolar. Keduanya lebih mahal daripada semua API dengan penagihan berdasarkan penggunaan dalam perbandingan ini, kecuali tier frontier. Sewa GPU di bawah tingkat tersebut hanya jika privasi atau model yang tidak ditawarkan oleh API menjadi pertimbangan utama Anda.