Anda menyediakan pembantu setempat untuk menyemak laporan, kemudian bercadang menggunakannya bersama rakan sekerja. Saiz fail muat turun membantu memilih calon model, tetapi tugas yang berjalan serentak turut mengubah peruntukan memori.1 Teks yang diproses turut memerlukan ruang. Inferens menyimpan keadaan pengiraan perhatian dan menggunakan ruang kerja tambahan selain pemberat model.23
Pengesahan kapasiti perlu meliputi tugas sehingga jawapan selesai. Penjelasan ini berasaskan dokumentasi rasmi, tanpa keputusan ujian perkakasan sendiri. Ia membantu anda mengenal pasti penggunaan memori sebelum membuat kesimpulan tentang komputer yang diperlukan.
Permintaan serentak turut menggunakan ruang
Ollama menerangkan bahawa konteks lebih panjang memerlukan lebih banyak memori. Memproses permintaan secara selari pada model yang sama turut meningkatkan peruntukan konteks. Permintaan boleh berkongsi pemberat model, tetapi setiap permintaan aktif tetap memerlukan keadaannya sendiri. Mendarab saiz fail dengan jumlah pengguna tidak menerangkan peruntukan ini dengan baik.14
Untuk penggunaan sendiri, mulakan dengan permintaan berturutan. Jika pembantu hendak dikongsi, cuba pula tugas panjang yang bertindih waktunya. Bezakan tugas yang sedang diproses daripada yang masih menunggu. Ollama menyediakan kawalan berasingan untuk pemprosesan selari dan baris gilir.1
Catat bilangan permintaan yang benar-benar aktif ketika memerhatikan penggunaan. Keputusan satu tugas ringkas tidak patut dijadikan janji kapasiti untuk tugas panjang yang berjalan serentak. Gunakan contoh yang sama pada tahap penggunaan yang dirancang.1
Pemberat ialah satu bahagian daripada anggaran
Pemberat menyimpan parameter yang dipelajari semasa latihan. Kuantisasi mengurangkan ketepatan angka yang disimpan untuk menjimatkan memori, sambil cuba mengekalkan ketepatan jawapan. Oleh itu, bilangan parameter perlu disertakan dengan format dan fail yang benar-benar hendak digunakan.5
Bagi pemberat sahaja, bilangan parameter didarab bit setiap pemberat lalu dibahagi lapan memberikan anggaran bait. Andaian ini menganggap semua parameter menggunakan ketepatan yang sama dan disimpan padat. Kaedah sebenar boleh menyimpan pemalar kuantisasi serta mengekalkan modul pada ketepatan lain. Semak fail dan laporan program untuk memperhalus anggaran; cache belum termasuk di dalamnya.56
Untuk belanjawan memori, asingkan pemberat yang dimuatkan, cache KV, ruang pengiraan sementara dan peruntukan persekitaran pelaksanaan. Aplikasi lain memerlukan bahagiannya sendiri. Ini rangka anggaran, bukannya rumus sejagat: cara pemuatan serta lokasi data menentukan penggunaan dan waktu puncaknya.273
Cache KV menyimpan keadaan bagi teks terdahulu
Transformer autoregresif menghasilkan token seterusnya berdasarkan konteks yang sudah ada. Cache KV menyimpan kekunci dan nilai daripada lapisan perhatian untuk token yang telah diproses, supaya pengiraan itu boleh digunakan semula. Keadaan ini berkaitan dengan permintaan semasa, berasingan daripada pemberat hasil latihan.2
Cache dinamik berkembang semasa jawapan dijana. Cache statik memperuntukkan kapasiti maksimum lebih awal, maka perbualan pendek masih boleh mempunyai ruang simpanan yang besar. Lapisan dengan perhatian bertetingkap gelongsor atau berblok mempunyai had pertumbuhan tersendiri. Corak penggunaan satu seni bina tidak semestinya boleh digunakan untuk seni bina lain.8
Anggaran cache perhatian penuh yang lazim mengambil kira token disimpan, jujukan serentak, lapisan, kepala KV, dimensi kepala dan ketepatan cache. Bilangan parameter tidak menentukan semua perkara itu. Kekalkan model serta ketepatan yang sama jika mahu membandingkan kesan panjang teks sahaja.28
Ketepatan pemberat tidak menentukan ketepatan cache
Nama fail pemberat yang dikuantisasi tidak menetapkan format cache KV. llama.cpp mempunyai pilihan berasingan bagi jenis cache kekunci dan nilai. Ollama juga mendokumentasikan kuantisasi cache. Pastikan enjin pelaksanaan yang digunakan menyokong gabungan tetapan tersebut.19
Penjimatan perlu dinilai bersama jawapan. Menurut Ollama, kesan kuantisasi cache terhadap kualiti bergantung pada model dan tugas. Gunakan laporan dengan butiran yang boleh disemak. Kekalkan arahan, ubah satu tetapan ketepatan pada satu masa, kemudian lihat fakta yang tertinggal atau format yang tersasar.1
Kuantisasi cache juga tidak menjamin respons lebih pantas. Transformers memberi amaran bahawa kependaman boleh bertambah bagi konteks pendek apabila memori GPU memang sudah mencukupi. Gunakannya untuk menangani had yang dikenal pasti, kemudian ukur semula tugas yang sama.8
Fahami perbezaan angka penggunaan memori
Dalam PyTorch dengan CUDA, memory_allocated() mengikuti memori tensor, manakala memory_reserved() mengikuti jumlah ruang yang diurus pengalokasi cache. Terdapat juga ukuran puncak bagi kedua-duanya. Ruang simpanan yang belum digunakan masih boleh kelihatan terpakai dalam nvidia-smi.7
Angka itu bertindih, jadi jangan jumlahkan sebagai dua kos berasingan. empty_cache() membebaskan blok cache yang tidak digunakan tetapi mengekalkan tensor aktif. Pemberat dan cache KV yang masih diperlukan tidak terpadam melalui perintah itu.7
Fungsi tersebut khusus kepada PyTorch. Bagi llama.cpp, gunakan laporan persekitarannya sendiri. Perhatikan ruang untuk permulaan dan pengiraan, bukan menambah peratusan tetap yang sama kepada setiap program tanpa bukti pengukuran.93
Selepas beralih ke CPU, ukur hingga tugas selesai
llama.cpp membolehkan had bilangan lapisan yang disimpan dalam VRAM. Pemindahan cache dalam Transformers pula meletakkan kebanyakan cache lapisan pada CPU dan memindahkannya apabila diperlukan. Rekodkan sama ada anda mengalihkan pemberat atau cache kerana kedua-duanya melibatkan data yang berlainan.89
RAM sistem dan VRAM khusus memerlukan anggaran berasingan. Pemindahan cache boleh mengurangkan kadar penjanaan kerana melibatkan pemindahan data. Dokumentasi tidak memberikan faktor penurunan kelajuan yang sesuai untuk semua komputer. Masa menyelesaikan laporan contoh akan menunjukkan sama ada tetapan itu masih memenuhi keperluan kerja anda.83
| Keadaan yang diperhatikan | Perkara untuk disiasat | Perbandingan seterusnya |
|---|
| Gagal semasa memuatkan model | Pemberat, penempatan dan puncak pemuatan3 | Fail lebih kecil, tetapan lain sama |
| Gagal dengan laporan panjang | Peruntukan konteks dan cache KV84 | Konteks lebih pendek, model sama |
| Gagal apabila permintaan bertindih | Peruntukan pemprosesan selari1 | Jalankan tugas sama secara berturutan |
| Penggunaan memori GPU masih tinggi selepas jawapan selesai dijana | Tensor aktif dan ruang simpanan PyTorch7 | Bandingkan allocated dengan reserved |
| Terlalu lama selepas beralih ke CPU | Pemindahan dan pelaksanaan83 | Ubah penempatan sahaja |
Jadual ini menyediakan arah siasatan, bukannya mengesahkan punca. Simpan versi model dan program, konteks, ketepatan cache, penempatan serta bilangan permintaan aktif. Perhatikan pemuatan, pemprosesan input dan penjanaan kerana peruntukannya berbeza.23
Simpan laporan contoh selepas memilih konfigurasi. Apabila model atau program berubah, jalankan tugas yang sama dan bandingkan semula mutu jawapan serta masa menunggu.
Sediakan tugas contoh sebelum mengubah tetapan
Pilih laporan yang mewakili kerja anda. Sertakan arahan dan sejarah perbualan yang diperlukan, kemudian tinggalkan ruang untuk jawapan. Token yang telah diproses mempengaruhi keadaan yang disimpan semasa penjanaan. Mengira teks laporan sahaja belum merangkumi keseluruhan konteks permintaan.24
Jika menggunakan Ollama, perintah ollama ps menunjukkan konteks yang diperuntukkan serta pembahagian CPU/GPU. Nyatakan panjang konteks ketika membandingkan tetapan. FAQ dan panduan konteks pada masa ini menerangkan nilai lalai yang berbeza. Catatan konfigurasi sebenar lebih sesuai dijadikan rujukan untuk ujian berulang.14
Tentukan hasil yang boleh diperiksa, seperti butiran khusus daripada laporan atau format keluaran yang mesti dipatuhi. Ini cadangan kaedah penilaian, bukan dakwaan bahawa model tertentu mencapai ketepatan yang sudah diukur.
Sumber rujukan