Model bahasa besar tempatan terasa sangat pantas pada mulanya. Anda memuatkan model dengan 7B atau 13B parameter, menghantar prom yang pendek, dan token mengalir di skrin pada kelajuan yang selesa. Kemudian anda menampal blok kod yang panjang, atau sejarah sembang anda berkembang merentasi belasan pusingan, dan model mula merangkak. Kelembapan itu jarang berlaku secara perlahan-lahan. Ia adalah satu kejatuhan mendadak. Sesaat kemudian GPU sedang menghasilkan token dengan rancak; saat berikutnya, pemantau sistem anda menunjukkan tekanan memori meningkat dan penjanaan menjadi tersangkut-sangkut. Anda tidak boleh meramal dengan tepat bila ini akan berlaku dengan formula yang kemas. Satu-satunya panduan yang boleh dipercayai adalah perkakasan itu sendiri.
Kos Tersembunyi Konteks
Setiap token yang anda jana menambah keadaan (state) kepada KV cache. Cache ini menyimpan kunci (keys) dan nilai (values) yang dikira semasa fasa prefill dan penjanaan, dan ia berada dalam memori bersama dengan pemberat model (model weights), penimbal perhatian (attention buffers), dan overhed masa larian (runtime overhead). Pada GPU pengguna tipikal dengan 12 GB atau 16 GB VRAM, KV cache akhirnya akan bersaing untuk ruang dengan perkara lain. Apabila memori video khusus (dedicated video memory) penuh, sistem operasi tidak akan mengeluarkan ralat dan berhenti. Ia secara senyap akan melimpahkan lebihan tersebut ke dalam memori kongsi (shared memory), memindahkan data antara GPU dan RAM sistem melalui bas PCIe. Bas tersebut pantas untuk pemindahan fail, tetapi ia sangat perlahan berbanding lebar jalur memori (memory bandwidth) di dalam kad grafik. Hasilnya bukan sekadar penurunan prestasi yang kecil. Ia adalah satu keruntuhan.
Tiga Isyarat Bahawa Jurang Mendadak Telah Tiba
Perhatikan pemantau perkakasan anda semasa model sedang berjalan. Anda akan melihat tiga isyarat jelas sebaik sahaja prestasi jatuh mendadak.
- Shared VRAM meningkat. Ini adalah memori yang telah ditolak oleh pemacu GPU keluar daripada VRAM khusus ke dalam kumpulan (pool) yang diuruskan oleh sistem operasi hos. Sebaik sahaja metrik ini meningkat melebihi sifar, anda telah melepasi had.
- Penggunaan RAM sistem meningkat. Lebihan tersebut mesti mendarat di suatu tempat, dan destinasi itu adalah memori utama anda. Jika penggunaan RAM anda bertambah semasa model menjana token, data sedang dipindahkan keluar daripada GPU.
- Kelajuan eval jatuh separuh atau lebih. Kelembapan 10% mungkin bermaksud pengehadan terma (thermal throttling) atau proses latar belakang. Penurunan 50%, atau lebih teruk, bermakna kesesakan (bottleneck) telah beralih daripada tensor cores kepada lebar jalur memori dan kependaman (latency) PCIe. Apabila anda melihat penjanaan jatuh daripada dua angka kepada satu angka, anda sebenarnya sudah jatuh ke dalam jurang.
Mengapa Penanda Aras Pantas Anda Mungkin Menipu
Ujian ringkas (smoke test) akan memberikan keyakinan palsu. Jika anda melakukan penanda aras model dengan prom seratus token, melihat daya pemprosesan (throughput) yang sihat, dan menganggapnya selesai, anda sebenarnya hanya mengukur fasa bulan madu. KV cache hampir kosong. Lapisan (layers) belum terbeban oleh prefill yang panjang. Jejak (footprint) sebenar hanya akan muncul selepas model memproses prom yang besar dan cache telah penuh ke saiz kerja sebenarnya. Anda mesti menguji dengan prefill yang mendalam dan larian penjanaan yang panjang. Biarkan konteks benar-benar terkumpul. Hanya selepas itu tekanan memori akan stabil dan menunjukkan had sebenar kepada anda.
Mencari Had Anda dengan llama.cpp
Jika anda menjalankan model melalui llama.cpp, anda boleh mengukur had anda dengan aritmetik mudah dan larian ujian yang sabar.
1. Ukur penggunaan memori kongsi.
Rekodkan VRAM khusus asas anda dengan prom minimum, kemudian jalankan tugasan konteks panjang dan catat kemuncaknya. Tolak nilai asas daripada kemuncak. Perbezaannya adalah jumlah yang telah melimpah keluar daripada GPU anda ke dalam memori sistem kongsi.
2. Kira delta RAM anda.
Lakukan penolakan yang sama untuk RAM sistem. Tolak RAM asas anda daripada kemuncak RAM semasa larian panjang. Nombor ini memberitahu anda dengan tepat berapa banyak data yang telah ditolak daripada kad video ke memori utama anda. Ia mengukur kebocoran merentasi bas tersebut.
3. Masa kejatuhan kelajuan eval.
Bandingkan kadar token-sesaat asas anda dengan kadar selepas model memproses dokumen yang panjang. Anda mungkin melihat model meluncur pada tujuh belas token sesaat apabila konteks masih segar, kemudian hanya memberikan dua token sesaat sebaik sahaja cache membengkak. Penurunan lima belas token itu adalah amaran awal anda.
Menentukan Titik Pecah
To map the curve accurately, do not settle for one lonely data point. Run three distinct trials at 16,000 tokens, 32,000 tokens, and 65,000 tokens. Two points might suggest a line, but two dots are just a guess. The third point proves whether you are looking at measurement noise or a real memory wall. Subtract the results between runs to calculate how much extra memory each additional thousand tokens consumes on your specific combination of model, quantization layer, and GPU.
Once you have that slope, you can project forward. Take your per-token cost, multiply it by the target context length, divide by 1024 to move between units, and add the result to your base model VRAM load. The equation looks like this:
Model VRAM load + (tokens × memory per token ÷ 1024) = Theoretical VRAM usage
This projection is not prophecy. It is a guidepost derived from actual behavior. Use it to estimate your ceiling before you commit to a full production run.
Why Paper Formulas Fail, and What Quantization Can Fix
Textbook formulas ignore the messy reality of local inference. Different architectures allocate attention buffers differently. Your operating system reserves VRAM for the display driver, compositor, and CUDA context. Driver versions change how aggressively they use shared memory. A theoretical equation cannot know how much VRAM is actually free on your machine at 2:00 PM with a browser full of tabs open. You have to run the model on your specific hardware and watch the meters.
Quantization offers partial relief. Moving the KV cache from f16 to q8_0 halves its memory footprint while keeping precision high enough for nearly all practical tasks. That change buys you headroom. It does not grant immunity. The cache still grows linearly with every token you feed in. Eventually, even the reduced size overwhelms your available dedicated memory and the spillover to system RAM begins. The pressure only stops when the context window is capped or the data stops moving.
The Real Takeaway
Do not trust marketing slides, parameter counts, or back-of-the-envelope math. Load the model. Open your system monitor. Run a 65,000-token thread, watch the RAM climb, and count the tokens per second. The numbers that appear on your specific screen, on your specific GPU, are the only numbers that matter. Context always wins. Your job is to know exactly when it wins on your machine.
