Sebelum memasukkan laporan ke asisten lokal, Anda membuka daftar berkas model dan memeriksa ukurannya. Ukuran unduhannya mungkin terlihat cukup kecil untuk memori yang tersedia. Namun, teks yang sedang diproses juga membutuhkan ruang. Inferensi menyimpan hasil perhitungan perhatian dan memakai alokasi kerja di luar bobot model.12
Karena itu, uji kapasitas perlu berlangsung sampai jawaban selesai. Penjelasan berikut bersumber dari dokumentasi resmi, tanpa hasil pengujian perangkat keras sendiri. Tujuannya membantu menentukan apa yang perlu diamati pada pekerjaan Anda.
Bobot menyimpan parameter hasil pelatihan. Kuantisasi mengurangi presisi penyimpanannya untuk menekan kebutuhan memori, sambil berusaha mempertahankan akurasi. Maka jumlah parameter perlu disertai format dan berkas yang akan digunakan sebelum dijadikan dasar perkiraan.3
Untuk bobot saja, jumlah parameter dikali bit per bobot lalu dibagi delapan menghasilkan perkiraan byte. Asumsinya ketat: semua parameter memakai presisi yang sama dan tersimpan rapat. Dalam praktiknya, metode kuantisasi dapat menyimpan konstanta tambahan dan mempertahankan modul tertentu pada presisi lain. Laporan program dan berkas aktual diperlukan untuk memperbaiki perkiraan itu.34
Anggaran selama inferensi juga mencakup cache KV, ruang perhitungan sementara, serta alokasi lingkungan eksekusi. Aplikasi lain perlu jatah tersendiri. Pembagian ini merupakan perkiraan perencanaan, bukan rumus universal; lokasi penyimpanan dan cara memuat model memengaruhi penggunaan serta puncaknya.152
Baca angka pemakaian dengan benar
Pada PyTorch dengan CUDA, memori tensor aktif dan memori yang dikelola allocator cache merupakan ukuran berbeda. memory_allocated() menunjukkan alokasi tensor, sementara memory_reserved() menunjukkan ruang yang dikelola allocator. Tersedia pula pencatat nilai puncak. Ruang cadangan yang belum digunakan dapat tetap terlihat terpakai di nvidia-smi.5
Memori tensor aktif termasuk dalam total memori yang dikelola allocator. Karena itu, kedua angka tersebut tidak boleh dijumlahkan sebagai kebutuhan memori yang terpisah. empty_cache() membebaskan blok cache yang tidak digunakan; tensor aktif tetap berada di memori. Memanggilnya tidak menghapus bobot atau cache KV yang masih diperlukan.5
Fungsi tersebut milik PyTorch. Jika memakai llama.cpp, lihat laporan lingkungan itu sendiri. Kebutuhan inisialisasi dan ruang kerja juga perlu diamati, bukan diberi tambahan persentase seragam untuk semua program.62
Percakapan memiliki cache sendiri
Transformer autoregresif menghasilkan token berikutnya menggunakan konteks sebelumnya. Cache KV menyimpan key dan value dari lapisan perhatian untuk token yang sudah diproses. Hasil itu dipakai kembali agar perhitungan yang sama tidak diulang. Keadaan ini terkait permintaan, terpisah dari bobot hasil pelatihan.1
Cache dinamis tumbuh selama jawaban dihasilkan. Cache statis memesan ukuran maksimum lebih awal, sehingga percakapan pendek dapat tetap memiliki alokasi besar. Lapisan dengan perhatian berjendela geser atau berbentuk blok memiliki batas pertumbuhan sesuai mekanismenya. Perilaku suatu arsitektur tidak otomatis berlaku pada model lain.7
Untuk cache perhatian penuh yang lazim, perkiraan mempertimbangkan token tersimpan, urutan yang diproses bersamaan, jumlah lapisan, kepala KV, dimensi kepala, dan presisi cache. Jumlah parameter tidak menentukan seluruh unsur tersebut. Pertahankan model serta presisi ketika ingin melihat pengaruh panjang teks.17
Pengguna bersamaan mengubah alokasi
Ollama menjelaskan bahwa konteks lebih panjang memerlukan lebih banyak memori. Pemrosesan permintaan paralel pada model yang sama juga meningkatkan alokasi konteks. Bobot dapat dipakai bersama, sedangkan permintaan aktif tetap memerlukan keadaannya masing-masing. Mengalikan ukuran berkas dengan jumlah pengguna tidak cukup menjelaskan kondisi tersebut.89
Untuk penggunaan pribadi, mulai dengan permintaan berurutan. Jika asisten akan dipakai bersama, lanjutkan dengan beberapa pekerjaan panjang yang waktunya bertumpang tindih. Bedakan permintaan aktif dari yang masih mengantre. Ollama menyediakan pengaturan berbeda untuk paralelisme dan antrean.8
Batas yang dipilih sebaiknya mengikuti pekerjaan yang memang dibutuhkan. Jangan menjadikan kapasitas saat menganggur sebagai janji untuk penggunaan bersama. Ulangi masukan representatif pada tingkat paralelisme yang direncanakan.8
Presisi cache perlu keputusan tersendiri
Berkas bobot yang dikuantisasi tidak menentukan presisi cache KV. llama.cpp menyediakan pengaturan terpisah untuk tipe cache key dan value. Ollama juga mendokumentasikan pilihan kuantisasi cache. Periksa dukungan pada backend yang sedang dipakai sebelum mengubahnya.86
Penghematan memori perlu dibandingkan dengan hasil jawaban. Menurut Ollama, dampak kuantisasi cache pada kualitas bergantung pada model dan tugas. Gunakan laporan yang sama untuk memeriksa rincian yang terlewat atau format yang salah. Ubah satu pengaturan presisi setiap kali agar penyebab perubahan lebih mudah diketahui.8
Kuantisasi cache juga tidak selalu mempercepat respons. Dokumentasi Transformers memperingatkan bahwa latensi bisa memburuk pada konteks pendek bila memori GPU sebenarnya sudah cukup. Terapkan setelah mengetahui batas yang ingin diatasi, lalu ukur kembali pekerjaan yang sama.7
Periksa kapasitas RAM dan waktu penyelesaian setelah memindahkan data ke CPU
llama.cpp memungkinkan pembatasan jumlah lapisan yang disimpan di VRAM. Transformers memiliki mekanisme pemindahan cache yang menempatkan sebagian besar cache lapisan di CPU dan mengambilnya saat diperlukan. Catat apakah yang dipindahkan bobot atau cache karena keduanya berbeda.76
Hitung RAM sistem dan VRAM khusus secara terpisah. Pemindahan cache dapat mengurangi laju generasi karena adanya transfer. Dokumentasi tidak memberikan faktor perlambatan yang berlaku untuk semua perangkat. Gunakan waktu penyelesaian tugas sendiri untuk menentukan apakah pengaturan itu masih nyaman.72
| Keadaan yang diamati | Bagian yang perlu diperiksa | Perbandingan berikutnya |
|---|
| Gagal saat memuat | Bobot, penempatan, puncak pemuatan2 | Berkas lebih kecil, pengaturan lain sama |
| Gagal dengan laporan panjang | Alokasi konteks dan cache KV79 | Konteks lebih pendek, model sama |
| Gagal ketika permintaan bertumpuk | Alokasi untuk permintaan paralel8 | Tugas yang sama secara berurutan |
| Penggunaan memori GPU tetap tinggi setelah respons selesai | Tensor aktif dan cadangan PyTorch5 | Bandingkan allocated serta reserved |
| Terlalu lambat setelah pindah ke CPU | Transfer dan eksekusi72 | Ubah penempatan saja |
Tabel ini memberikan dugaan awal, bukan diagnosis pasti. Simpan versi model dan program, konteks, presisi cache, penempatan, serta jumlah permintaan aktif. Amati pemuatan, pemrosesan masukan, dan generasi karena alokasinya berbeda.12
Pertahankan laporan contoh itu setelah konfigurasi dipilih. Saat mengganti model atau memperbarui program, jalankan lagi tugas yang sama dan periksa kualitas jawaban serta waktu penyelesaiannya.
Tentukan laporan yang benar-benar akan diproses
Simpan contoh laporan beserta instruksi dan riwayat percakapan yang diperlukan. Sisakan kapasitas konteks untuk jawaban. Token yang sudah diproses menjadi bagian dari keadaan yang dipertahankan selama generasi, sehingga ukuran teks masukan saja belum menggambarkan seluruh kebutuhan.19
Pada Ollama, ollama ps memperlihatkan konteks yang dialokasikan serta pembagian CPU/GPU. Tetapkan panjang konteks secara eksplisit saat membandingkan pengaturan. FAQ dan panduan konteks saat ini menjelaskan nilai bawaan yang berbeda, sehingga pengaturan aktual lebih cocok dijadikan catatan pembanding.89
Tentukan pula jawaban seperti apa yang dianggap memadai. Untuk membaca laporan, misalnya, siapkan beberapa rincian yang bisa diperiksa langsung. Ini usulan cara evaluasi, bukan klaim tingkat akurasi model tertentu.
Sumber