- bitnet.cpp dari Microsoft adalah framework inferensi resmi untuk large language model (LLM) 1-bit, yang mendukung inferensi cepat tanpa kehilangan akurasi di CPU dan GPU
- Mencapai peningkatan kecepatan 1.37~5.07x dan penghematan energi 55.4~70% pada CPU ARM, serta peningkatan kecepatan 2.37~6.17x dan penghematan energi 71.9~82.2% pada CPU x86
- Menambahkan implementasi kernel paralel dan kuantisasi embedding untuk memberikan peningkatan performa tambahan 1.15~2.1x dibanding sebelumnya
- Model BitNet b1.58 dapat dijalankan pada satu CPU dengan kecepatan 5~7 token per detik, memperluas kemungkinan menjalankan model sangat besar di lingkungan lokal
- Dikembangkan berbasis llama.cpp dan T-MAC, serta berkontribusi pada perluasan ekosistem open source untuk efisiensi inferensi LLM low-bit
Ikhtisar bitnet.cpp
- bitnet.cpp adalah framework inferensi resmi untuk LLM 1-bit (misalnya BitNet b1.58), yang menyediakan kernel yang dioptimalkan untuk CPU dan GPU
- Dukungan NPU direncanakan akan ditambahkan di masa mendatang
- Rilis pertama mendukung inferensi CPU dan telah membuktikan peningkatan kecepatan serta efisiensi energi pada arsitektur ARM maupun x86
- CPU ARM: peningkatan kecepatan 1.37~5.07x, penghematan energi 55.4~70%
- CPU x86: peningkatan kecepatan 2.37~6.17x, penghematan energi 71.9~82.2%
- Model BitNet b1.58 100B parameter dapat dijalankan pada satu CPU dengan kecepatan 5~7 token per detik
Optimalisasi terbaru
- Fitur implementasi kernel paralel, konfigurasi tiling, dan kuantisasi embedding telah ditambahkan, menghasilkan peningkatan kecepatan tambahan 1.15~2.1x dibanding sebelumnya
- Peningkatan performa telah dikonfirmasi pada berbagai platform hardware dan workload
- Detail teknis tersedia dalam dokumen
optimization guide
Demo dan model resmi
- Tersedia demo yang menjalankan model BitNet b1.58 3B di Apple M2
- Sebagai model resmi, BitNet-b1.58-2B-4T telah dirilis di Hugging Face dan didukung pada CPU x86 maupun ARM
- Model yang didukung mencakup bitnet_b1_58-large(0.7B), bitnet_b1_58-3B(3.3B), Llama3-8B-1.58, Falcon3, dan seri Falcon-E
Instalasi dan build
- Persyaratan: Python 3.9 atau lebih baru, CMake 3.22 atau lebih baru, Clang 18 atau lebih baru
- Pengguna Windows perlu menginstal Visual Studio 2022
- Pengguna Debian/Ubuntu disediakan skrip instalasi otomatis
- Disarankan menggunakan environment Conda, dan environment model dapat dikonfigurasi dengan
setup_env.py
- Setelah mengunduh model dari Hugging Face, model dapat dijalankan dari path lokal
Cara penggunaan dan benchmark
- Jalankan inferensi model terkuantisasi dengan
run_inference.py
- Argumen utama: path model(-m), prompt(-p), jumlah thread(-t), ukuran konteks(-c), temperature(-temp)
- Dengan skrip
e2e_benchmark.py, performa dapat diukur dengan menentukan jumlah token, panjang prompt, dan jumlah thread
- Jika tidak ada model publik yang tersedia, benchmark dapat dijalankan setelah membuat dummy model dengan
generate-dummy-bitnet-model.py
Konversi model dan FAQ
- Tersedia skrip untuk mengonversi checkpoint
.safetensors ke format gguf
- Pada FAQ dijelaskan cara mengatasi error build llama.cpp (terkait std::chrono) dan prosedur konfigurasi environment clang di Windows
- Inisialisasi environment diperlukan melalui Visual Studio Developer Command Prompt atau PowerShell
1 komentar
Komentar Hacker News
Microsoft sebenarnya menggunakan 2 bit, bukan 1,58 bit
Dalam kasus ini, empat nilai dapat direpresentasikan: -1, 0, 1, 2
Mengingat sinaps inhibitor menyumbang 20~30%, menurut saya struktur seperti ini cukup selaras dengan struktur otak biologis
Saya sering bertanya-tanya seperti apa bentuk “LLM dengan kemampuan minimum”
Maksudnya, model yang hanya punya informasi minimum dan tetap bisa memberikan jawaban yang cukup masuk akal dengan melengkapi sisanya lewat pencarian Google
Kalau tempat seperti Encyclopedia Britannica menjual datanya ke LLM dan menyediakan layanan verifikasi hasil, rasanya itu bisa membuat perbedaan besar
Wikipedia juga bagus, tetapi disayangkan ada banyak kesalahan dan bias manusia
LLM kecil memang sudah berkembang ke arah ini; pengetahuan umum mereka masih kurang, tetapi kemampuan menggunakan alat (misalnya pencarian Google) terus membaik
Hanya saja, tetap sulit bagi mereka untuk membedakan dengan jelas apa yang mereka tahu dan apa yang tidak mereka tahu
Seperti insinyur yang tidak mengenal perangkat tertentu: punya kemampuan memecahkan masalah, tetapi tidak punya pengetahuan detail
Saya ragu model seperti ini bisa menyelesaikan semuanya hanya dengan pencarian Google atau wiki, tetapi arsitektur edge LLM tampaknya akan menjadi standar di masa depan
Semakin banyak informasi itu tercakup dalam data latih, semakin mudah pencarian dan interpretasinya
Karena itu, pelatihan yang lebih mengandalkan memori eksternal (seperti pencarian) daripada hafalan internal mungkin lebih praktis
Saya justru berpikir sebaliknya
Menurut makalah asli (pdf), model ini membutuhkan sekitar 4~5 kali lebih banyak parameter dibanding model fp16
Bisa saja membangunnya sendiri, tetapi karena harus dilatih dari awal, pilihannya terbatas
Meski begitu, kecepatan inferensi kemungkinan tetap akan lebih tinggi daripada model kuantisasi 4 bit atau 8 bit terbaru
Inti sebenarnya adalah efek penghematan energi
Disebutkan bahwa inferensi CPU bisa menghemat 70~82%
Jika model 1 bit menjadi cukup bagus, LLM bisa dijalankan di perangkat keras umum tanpa GPU, dan itu akan mengubah peta aksesibilitas
bitnet.cpp disebut sebagai kerangka inferensi resmi untuk 1-bit LLM (BitNet b1.58 dan sejenisnya),
tetapi ada kebingungan soal “1 bit atau 1 trit”
Mencampur kedua konsep itu terasa membingungkan
Senang melihat proyek ini terus dikembangkan
Tahun lalu saya membaca tulisan terkait dan merasa ada potensinya, tetapi sayang tidak muncul model baru
Yang benar-benar menarik adalah arah melatih model biner secara langsung tanpa operasi floating-point
Makalah terkait ada di NeurIPS 2024
Pernyataan “bisa menjalankan 100B BitNet” tidak berarti modelnya benar-benar ada, melainkan bahwa kerangka inferensinya memungkinkan
Bahkan jika mencari “1-bit 100b model”, tidak ada model yang bisa diunduh
Kualitas keluaran model lebih mirip ocehan setingkat GPT-2, dan paragraf yang sama diulang begitu saja
Bahkan ia terus mendaur ulang kutipan palsu seperti
(Jenkins, 2010)Judulnya menyesatkan
Yang ada sebenarnya bukan model 100B terlatih, melainkan kerangka inferensi yang mampu menanganinya
Saya menjalankan model kuantisasi 70B di M2 Max 96GB dengan llama.cpp + LiteLLM, dan bandwidth memori menjadi bottleneck
Pendekatan 1,58 bit ini punya struktur yang mengubah perkalian matriks menjadi penjumlahan, sehingga pola komputasinya pada CPU secara fundamental berbeda
Jika model kelas 100B bisa dijalankan pada satu inti CPU dengan kecepatan 5~7 token per detik, itu akan menjadi titik balik inferensi on-device
Kerangkanya sudah siap, sekarang tinggal ada yang benar-benar melatih modelnya
Hasil nyatanya terasa minim dibanding promosinya
Untuk pelatihan GPU tetap dibutuhkan, tetapi perangkat keras khusus inferensi bisa menjadi jauh lebih sederhana
Saya pernah memakai model yang menghasilkan 7 token/detik, dan rasanya seperti berjalan di belakang orang yang lambat
Di lingkungan lokal, target minimal seharusnya di atas 10 token/detik
Instruksi FMA (Fused Multiply-Add) pada CPU modern punya throughput yang hampir sama dengan penjumlahan biasa
Saya penasaran kapan PC dengan NPU bawaan benar-benar mulai menunjukkan hasil besar
AMD mendapatkan hasil yang bagus dengan kernel inferensi hibrida NPU/iGPU
Jika model besar seperti ini bisa berjalan di NPU, efisiensi daya akan jauh lebih baik dibanding CPU
Sejak itu saya jadi penggemar NPU. Memang tidak setara RTX 5090, tetapi jauh lebih efisien daripada CPU
Ekosistem perangkat lunaknya memang masih tidak stabil, tetapi ia berjalan dengan penggunaan CPU/GPU nyaris 0
Setahu saya desainnya lebih berfokus pada daya rendah