Berkas model berukuran beberapa gigabyte tidak berarti model dapat dijalankan dengan jumlah VRAM yang sama. Selain bobot, inference membutuhkan KV cache, aktivasi, workspace kernel, dan ruang untuk konkurensi. Sebaliknya, model dengan jumlah parameter lebih besar belum tentu lebih baik pada tugas editorial tertentu.
Panduan ini membantu menghitung perkiraan awal dan merancang pengujian. Ia tidak merekomendasikan pembelian hardware atau menjanjikan performa model tertentu. Semua konfigurasi angka merupakan simulasi untuk memahami komponen memori.
Baca artefak model sebagai paket, bukan satu berkas
Periksa bobot, tokenizer, konfigurasi arsitektur, chat template, dan model card. Versi tokenizer atau template yang berbeda dapat mengubah input yang sebenarnya diterima model. Simpan revision atau commit artefak agar eksperimen dapat diulang.
Dokumentasi model card Hugging Face menjelaskan tempat mendokumentasikan penggunaan, batas, dan informasi model. Baca pula lisensi yang melekat pada artefak. Ketersediaan bobot untuk diunduh tidak otomatis berarti semua penggunaan, redistribusi, atau bentuk layanan memiliki izin yang sama.
Jangan menyamakan istilah open weights dengan seluruh proses pengembangan yang terbuka. Untuk keputusan teknis, tulis secara konkret artefak apa yang tersedia dan ketentuan apa yang berlaku, daripada bergantung pada satu label pemasaran.
Kuantisasi mengubah representasi bobot
Bitsandbytes pada Transformers menyediakan jalur bobot terkuantisasi, termasuk operasi 8-bit dan 4-bit yang didukung. Kompatibilitas bergantung pada hardware, backend, serta jenis model; memuat konfigurasi tidak menjamin semua lapisan memiliki representasi identik.
Kuantisasi mengurangi kebutuhan penyimpanan bobot dengan mengubah presisi representasi. Ia dapat memerlukan metadata skala, komputasi dengan presisi lain, dan kernel yang sesuai. Ukuran teoritis parameter dikali jumlah bit merupakan batas perkiraan awal, bukan hasil pengukuran memori proses.
Uji kualitas pada tugas yang akan dipakai. Perubahan kecil pada kemampuan mengikuti format atau mempertahankan angka dapat lebih penting bagi redaksi daripada perubahan rata-rata pada benchmark umum.
Hitung bobot dan KV cache secara terpisah
Contoh Python lokal berikut memberi kalkulasi untuk arsitektur perhatian konvensional dengan KV cache tanpa kompresi. Ia tidak memuat model:
def estimate_memory_gib(parameters, weight_bits, layers,
kv_heads, head_dim, tokens,
sequences, kv_bytes=2):
values = [parameters, weight_bits, layers, kv_heads,
head_dim, tokens, sequences, kv_bytes]
if any(type(value) is not int or value <= 0 for value in values):
raise ValueError("Semua parameter harus integer positif")
weights = parameters * weight_bits / 8
kv_cache = 2 * layers * kv_heads * head_dim * tokens * sequences * kv_bytes
gib = 2 ** 30
return {"weights_gib": weights / gib, "kv_gib": kv_cache / gib}
print(estimate_memory_gib(
parameters=8_000_000_000, weight_bits=4, layers=32,
kv_heads=8, head_dim=128, tokens=8192, sequences=4
))
Hasilnya sekitar 3,73 GiB untuk bobot teoritis dan 4 GiB untuk KV cache. Total sekitar 7,73 GiB itu belum mencakup overhead, sehingga tidak membuktikan konfigurasi akan muat pada GPU 8 GiB. GB desimal dan GiB biner juga bukan satuan yang sama.
Rumus KV tersebut mengalikan dua komponen key/value, jumlah layer, KV heads, dimensi head, token, sequence, dan byte per elemen. Arsitektur, sliding window, kompresi, paging, serta pembagian antarperangkat dapat mengubah alokasi aktual. Gunakan konfigurasi arsitektur sebenarnya, bukan menebak dari jumlah parameter.
Konteks dan konkurensi adalah keputusan produk
Dokumentasi vLLM menjelaskan pembatasan context length dan jumlah sequence sebagai cara mengendalikan penggunaan memori. Menurunkan batas dapat membantu kapasitas, tetapi juga membatasi pekerjaan yang dapat diterima produk.
Pisahkan panjang input, batas output, dan jumlah request serentak. Satu pengguna dengan dokumen panjang dapat memakai sumber daya berbeda dari beberapa pengguna dengan pesan pendek. Antrean dan penjadwalan memengaruhi latensi yang dirasakan, bukan hanya jumlah token per detik saat mesin penuh.
Tetapkan perilaku ketika input melebihi batas. Memotong bagian akhir dokumen secara diam-diam dapat menghapus catatan penting. Pilih penolakan yang jelas, pemecahan tugas, atau retrieval terarah sesuai kontrak aplikasi.
Benchmark harus mewakili cara pemakaian
Ukur waktu token pertama, durasi selesai, token per detik, penggunaan memori puncak, dan error pada tingkat konkurensi yang berbeda. Catat ukuran input serta output; angka throughput tanpa konteks beban sulit dibandingkan.
| Dimensi | Contoh eksperimen |
|---|---|
| Kualitas | Ringkasan dengan tanggal, angka, dan syarat akses |
| Struktur | Keluaran yang harus mengikuti kontrak JSON |
| Memori | Konteks pendek/panjang pada konkurensi bertahap |
| Latensi | p50 dan p95 dari pekerjaan yang sama |
| Recovery | OOM, input terlalu panjang, dan restart proses |
| Operasional | Waktu setup, pemantauan, dan pemulihan |
Jangan menilai konfigurasi hanya dari kasus yang berhasil. Catat kegagalan kehabisan memori, antrean terlalu lama, dan keluaran yang tidak lolos review. Restart yang sering dapat menghilangkan manfaat biaya komputasi yang tampak murah.
Biaya operasional tidak berhenti pada harga GPU
Hitung utilisasi, waktu menganggur, penyimpanan artefak, pemantauan, pembaruan keamanan, dan tenaga pemeliharaan. Layanan mandiri memberi bentuk kontrol yang berbeda, tetapi kontrol itu memerlukan pekerjaan operasional.
Bandingkan biaya per hasil yang diterima pada beban nyata. Jika pekerjaan sedikit dan tidak teratur, kapasitas yang menganggur dapat mendominasi. Jika pekerjaan stabil, batching dapat membantu throughput sambil mengubah waktu tunggu. Tidak ada kesimpulan universal tanpa profil penggunaan.
Mulai dari kalkulasi, lalu validasi dengan pengukuran pada lingkungan uji yang tersedia. Gunakan golden set editorial untuk menilai kualitas dan ledger biaya untuk membandingkan seluruh pekerjaan, bukan hanya biaya token atau ukuran berkas model.