1-bit LLM trên laptop cùi — 20 phút là xong
Bonsai nén 8 tỷ tham số xuống 1-bit, chạy được trên phần cứng đời cũ không GPU. Setup từ zero đến chat local trong 20 phút.
Bụi WireModel 8 tỷ tham số mà file nhẹ hơn hẳn bản FP16 thông thường. Chạy trên laptop không GPU rời, RAM 8GB. Nghe vô lý? Mình cũng nghĩ vậy — cho đến khi chạy Bonsai lần đầu trên con ThinkPad đời 2019.
Bonsai là dòng model 1-bit từ PrismML, hiện có ba size: 1.7B, 4B, và 8B. Nếu bạn đã quen quantization (mình đã bàn nhiều ở các bài trước), thì 1-bit là bước nén triệt để nhất hiện tại: mỗi weight chỉ còn 0 hoặc 1, kèm một hệ số FP16 scale dùng chung cho mỗi 128 weights. Không phải nén sau khi train — Bonsai được thiết kế 1-bit ngay từ đầu, end-to-end qua toàn bộ embeddings, attention projections, MLP, và LM head.
Benchmark của Bonsai 8B: trung bình 70.5 trên 6 nhóm đánh giá, ngang ngửa các model full-precision cùng tầm 6–9B.
Tưởng tượng 1-bit model như xe đạp trong phố cổ
Không nhanh bằng ô tô, không kéo được hàng nặng như xe tải. Nhưng len vào ngõ nào cũng được, không tốn xăng, và bạn không cần bằng lái. Đó chính xác là vị trí của Bonsai: inference nhanh, RAM ít, hardware bình dân — đánh đổi bằng việc không "khỏe" bằng model full-precision ở các task đòi reasoning phức tạp.
Dịch sang tiếng người: nếu bạn cần chạy LLM local để test prompt, prototype nhanh, hoặc xử lý task không cần suy luận nhiều bước — Bonsai là lựa chọn rất hợp lý.
Bạn có 20 phút? Setup luôn.
Bước 1 — Tải Bonsai 8B từ Hugging Face
pip install huggingface_hub
huggingface-cli download prism-ml/Bonsai-8B-gguf --local-dir ./bonsai-8b
File GGUF format Q1_0 nhẹ hơn đáng kể so với bản FP16 cùng kiến trúc. Ổ cứng laptop cũ của bạn sẽ cảm ơn.
Bước 2 — Build PrismML fork của llama.cpp
Quan trọng: Bonsai dùng format Q1_0 riêng, cần fork từ PrismML — không phải llama.cpp gốc:
git clone https://github.com/nicholasgasior/llama.cpp.git prismml-llama
cd prismml-llama
cmake -B build
cmake --build build --config Release -j$(nproc)
Windows dùng CMake + Visual Studio Build Tools. Linux/Mac thì make thẳng cũng xong.
Bước 3 — Test inference trên CLI
./build/bin/llama-cli \
-m ../bonsai-8b/Bonsai-8B-Q1_0.gguf \
-p "Explain Docker in one sentence:" \
-n 128
Thấy text chạy ra? Model hoạt động. CPU-only sẽ chậm hơn GPU, nhưng đủ dùng cho test và prototype.
Bước 4 — Dựng server local kèm WebUI
./build/bin/llama-server \
-m ../bonsai-8b/Bonsai-8B-Q1_0.gguf \
--port 8080
Bạn vừa có API server ở localhost:8080. Test nhanh:
curl -X POST http://localhost:8080/completion \
-H "Content-Type: application/json" \
-d '{"prompt": "Viết haiku về debugging:", "n_predict": 64}'
Mở browser vào http://localhost:8080 — có WebUI chat sẵn, không cần cài thêm gì.
Hai kịch bản cho team Việt Nam
Kịch bản 1: Giả sử team bạn 4 người đang build chatbot nội bộ. Mỗi lần test prompt mới, ai cũng phải chờ API key có quota, hoặc tranh nhau slot trên server staging. Với Bonsai chạy local, mỗi dev tự có một instance riêng trên laptop công ty cấu hình tầm trung. Test prompt thoải mái, không lo cost, không lo rate limit. Iteration nhanh gấp mấy lần.
Kịch bản 2: Bạn là freelancer đang demo prototype cho khách hàng tại quán cà phê — WiFi chập chờn, API cloud timeout liên tục. Bonsai chạy offline hoàn toàn. Mở laptop, start server, demo xong trong 5 phút. Khách hàng impressed, bạn không mất mặt vì "xin lỗi anh, mạng chậm quá."
Mấy cái hố mình đã bước xuống
Hố số 1: Clone nhầm repo. Mình hào hứng clone llama.cpp gốc, build ngon lành, load model... crash. Ngồi debug 30 phút mới nhớ ra: Bonsai cần PrismML fork vì format Q1_0 chưa được merge vào upstream. Nếu bạn đang dùng Ollama — tính đến thời điểm này, Ollama chưa hỗ trợ Q1_0 native. Kiểm tra kỹ trước khi mất thời gian.
Hố số 2: Kỳ vọng sai. 1-bit model không phải phép màu. Mình thử cho Bonsai 8B viết code phức tạp — kết quả tạm được, nhưng rõ ràng thua model full-precision cùng size ở các task cần suy luận nhiều bước. Đây là xe đạp, nhớ chứ? Đừng bắt nó chở tủ lạnh. Dùng đúng chỗ: summarization, Q&A đơn giản, test workflow, prototype nhanh.
Hố số 3: Quên set context length. Default context có thể không đủ cho prompt dài. Thêm flag --ctx-size khi start server:
./build/bin/llama-server \
-m ../bonsai-8b/Bonsai-8B-Q1_0.gguf \
--port 8080 --ctx-size 4096
Xong rồi — giờ biến tấu thêm
Nếu Bonsai 8B vẫn nặng cho máy bạn, thử bản 4B hoặc 1.7B — cùng kiến trúc 1-bit, nhẹ hơn nhiều. Muốn so sánh? Chạy song song Bonsai với một model GGUF quantized Q4_K_M trên cùng phần cứng, đo speed và chất lượng output — bạn sẽ thấy rõ trade-off giữa kích thước và khả năng.
Về lâu dài, nếu cần model mạnh hơn cho production, các model từ Meta Llama hay Mistral với quantization Q4/Q5 qua Ollama vẫn là con đường quen thuộc. Bonsai không thay thế chúng — nó mở thêm một lối tắt cho những ai thiếu phần cứng nhưng thừa tò mò.
Đừng tin mình, thử đi rồi biết.
---
Bụi Wire — nghiện đọc release notes lúc 2 giờ sáng