Chuyển đến nội dung chính

Cách chạy Bonsai 27B cục bộ với 8GB bộ nhớ

Tìm hiểu cách chạy Bonsai 27B, một biến thể Qwen3.6-27B 1-bit gọn nhẹ, cục bộ bằng llama.cpp, API tương thích OpenAI, giao diện web và tác tử lập trình Pi.
· 10 phút đọc

Khám phá cùng AI

Lưu ý: Bonsai 2 27B hiện đã có, dựa trên Qwen3.8 27B

Qwen3.6-27B đã trở thành lựa chọn phổ biến để chạy cục bộ một mô hình suy luận và lập trình đủ mạnh. Mô hình này nhanh và mạnh, nhưng một mô hình 27 tỷ tham số đầy đủ vẫn đòi hỏi lượng bộ nhớ đáng kể. 

Sử dụng lượng tử hóa thông thường có thể giảm yêu cầu này, nhưng cũng có thể gây suy giảm hiệu năng đáng kể.

prism-ml/Bonsai-27B-gguf trên Hugging Face

Nguồn: prism-ml/Bonsai-27B-gguf

Prism ML tiếp cận vấn đề này theo cách khác với Bonsai 27B, một phiên bản 1-bit nén mạnh của Qwen3.6-27B. 

Theo Prism ML, Bonsai giữ lại gần 90% hiệu năng benchmark của mô hình gốc đồng thời giảm trọng số mô hình xuống khoảng 3,9 GB. 

Điều này giúp bạn có thể thử nghiệm một mô hình suy luận hạng 27B trên phần cứng tiêu dùng dễ tiếp cận hơn nhiều.

Trong hướng dẫn này, tôi sẽ dùng mô hình 1-bit Bonsai-27B-Q1_0.gguf và script cài đặt tùy chỉnh của Prism ML. Script sẽ tự động tải mô hình, chọn runtime dựng sẵn tương thích và cấu hình cho phần cứng sẵn có. 

Sau đó, tôi sẽ kiểm thử Bonsai từ dòng lệnh, khởi chạy giao diện web cục bộ, truy cập qua API tương thích OpenAI và kết nối với tác tử lập trình Pi.

Điều gì đặc biệt ở Bonsai 27B?

Điểm thú vị của Bonsai 27B là nó không chỉ là một mô hình Qwen lượng tử hóa theo cách thông thường khác. 

Hầu hết các mô hình GGUF cục bộ được nén sau huấn luyện bằng cách giảm độ chính xác số học của mô hình hiện có. 

Bonsai chọn cách tiếp cận mạnh tay hơn bằng cách điều chỉnh mô hình xoay quanh trọng số nhị phân, cho phép phần lớn mạng hoạt động với các giá trị gần −1 hoặc +1.

Điều này quan trọng vì việc chạy các mô hình ngôn ngữ lớn thường bị giới hạn bởi dung lượng bộ nhớ và băng thông bộ nhớ, hơn là chỉ sức mạnh tính toán thuần túy. 

Giảm độ chính xác của trọng số giúp giảm lượng dữ liệu cần lưu trữ và di chuyển trong quá trình suy luận. 

Với runtime được tối ưu, điều này có thể khiến một mô hình 27B lớn trở nên khả thi trên phần cứng tiêu dùng vốn thường gặp khó khi tải hoặc chạy nó.

kết quả benchmark prism-ml/Bonsai-27B-gguf

Nguồn: prism-ml/Bonsai-27B-gguf · Hugging Face 

Bonsai cũng giữ lại các năng lực vượt xa trò chuyện cơ bản. 

Mô hình hỗ trợ suy luận, lập trình, gọi công cụ có cấu trúc, prompt ngữ cảnh dài và quy trình tác tử.

Nó cũng có thể chạy sau một API tương thích OpenAI, giúp kết nối dễ dàng hơn với tác tử lập trình, hệ thống truy xuất, công cụ tự động hóa và các ứng dụng vốn đã hỗ trợ endpoint kiểu OpenAI.

Tuy nhiên, không nên coi Bonsai là giống hệt mô hình Qwen3.6-27B độ chính xác đầy đủ. 

Nén cực mạnh vẫn có đánh đổi và có thể ảnh hưởng khác nhau đến khả năng làm theo hướng dẫn, chọn công cụ, tính nhất quán suy luận và chất lượng đầu ra giữa các tác vụ. 

Lợi thế chính của nó là sự cân bằng: năng lực mô hình lớn với yêu cầu phần cứng thấp đáng kể.

Điều kiện tiên quyết để chạy Bonsai 27B cục bộ

Trước khi bắt đầu, hãy đảm bảo hệ thống của bạn có:

  • Ít nhất 8 GB RAM hệ thống, dù khuyến nghị 16 GB trở lên
  • Khoảng 8 GB dung lượng trống cho mô hình, runtime và các tệp hỗ trợ
  • Git để clone kho demo Bonsai
  • Hệ điều hành được hỗ trợ, như Linux, Windows hoặc macOS
  • GPU NVIDIA, AMD, tương thích Vulkan, hoặc Apple Silicon để suy luận nhanh hơn

GPU rời là tùy chọn vì Bonsai cũng có thể chạy bằng CPU. 

Tuy nhiên, suy luận bằng CPU sẽ chậm hơn, đặc biệt khi mô hình tạo phản hồi suy luận dài.

Trong hướng dẫn này, tôi dùng một NVIDIA RTX 5070 Ti với 16 GB VRAM duy nhất. 

Điều này đủ bộ nhớ để tải hoàn toàn trọng số mô hình khoảng 3,9 GB lên GPU và vẫn còn bộ nhớ cho bộ đệm KV, kích hoạt mô hình và chi phí runtime.

Tuy nhiên, VRAM sẵn có cũng quyết định bạn có thể dùng bao nhiêu ngữ cảnh. 

Dù Bonsai 27B hỗ trợ hội thoại vượt quá 256K token, tải toàn bộ ngữ cảnh huấn luyện của nó có thể tiêu tốn thêm rất nhiều bộ nhớ và có thể làm cạn hệ thống có RAM hoặc VRAM hạn chế. 

Vì vậy, Prism ML sử dụng kích thước ngữ cảnh mặc định theo nhận thức bộ nhớ thay vì tự động cấp phát toàn bộ cửa sổ 262K token.

Trong hướng dẫn này, chúng ta sẽ ban đầu dùng cửa sổ ngữ cảnh nhỏ hơn 8.192 token để kiểm thử dòng lệnh. Sau đó sẽ tăng khi khởi chạy server, tùy theo bộ nhớ sẵn có. 

Một cửa sổ ngữ cảnh nhỏ hơn là đủ cho hầu hết tác vụ lập trình và trò chuyện, đồng thời mang lại khởi động nhanh hơn với mức dùng bộ nhớ thấp hơn.

Bước 1: Tải xuống và cài đặt Bonsai 27B

Mở terminal và clone kho demo Bonsai chính thức:

git clone https://github.com/PrismML-Eng/Bonsai-demo.git
cd Bonsai-demo

Kho này bao gồm các script để tải mô hình, dò phần cứng của bạn, chọn binary runtime đúng, chạy mô hình từ terminal và khởi chạy server cục bộ.

Chạy lệnh thiết lập sau:

BONSAI_FAMILY=bonsai \
BONSAI_MODEL=27B \
BONSAI_OPENWEBUI=0 \
BONSAI_CODE_INTERPRETER=0 \
./setup.sh

Chạy script cài đặt Bonsai-27B

Trong quá trình thiết lập, bạn có thể được yêu cầu nhập token truy cập Hugging Face. 

Điều này là tùy chọn với tệp mô hình công khai, nên bạn có thể bỏ qua bằng cách nhấn Enter. 

Tuy nhiên, dùng token có thể giúp tránh giới hạn tải ẩn danh.

Đang tải các tệp mô hình Bonsai-27B

Script sẽ tải khoảng 7,15 GB tệp, bao gồm:

  • Mô hình ngôn ngữ Bonsai-27B-Q1_0.gguf
  • Bộ chiếu đa phương thức (mmproj)
  • Các tệp liên quan đến D-Spark
  • Một binary runtime dựng sẵn đã được kiểm thử cho phần cứng của bạn

Đặt BONSAI_FAMILY=bonsai sẽ chọn mô hình Bonsai 1-bit gọn thay vì phiên bản ternary lớn hơn.

Các tùy chọn sau sẽ vô hiệu hóa hai môi trường bổ sung:

BONSAI_OPENWEBUI=0
BONSAI_CODE_INTERPRETER=0

Open WebUI không cần cho hướng dẫn này vì binary server đi kèm đã có giao diện trò chuyện trên trình duyệt gọn nhẹ.

 Môi trường code-interpreter cũng không cần thiết cho thiết lập cục bộ cơ bản.

Trong quá trình cài đặt, script thiết lập sẽ tự động:

  • Cài đặt các gói Linux cần thiết
  • Tạo môi trường ảo Python
  • Tải các tệp mô hình Bonsai 27B
  • Tải runtime dựng sẵn phù hợp
  • Phát hiện backend CPU hoặc GPU sẵn có
  • Cấu hình dự án cho phần cứng của bạn

Script cài đặt Bonsai-27B đã hoàn tất thành công.

Thiết lập tự động này đặc biệt hữu ích vì bạn không cần tự biên dịch llama.cpp hay tự chọn binary CUDA, ROCm, Vulkan, Metal hoặc CPU.

Tôi khuyến nghị hướng dẫn llama.cpp nếu bạn cần phần mở đầu nhanh. 

Bước 2: Kiểm thử Bonsai 27B từ CLI

Sau khi cài đặt, hãy kiểm thử mô hình trực tiếp từ terminal bằng llama.cpp giao diện dòng lệnh đi kèm:

BONSAI_FAMILY=bonsai \
BONSAI_MODEL=27B \
BONSAI_CTX=8192 \
./scripts/run_llama.sh \
-p "Create a simple Python function that calculates compound interest."

Lệnh này:

  • Chọn họ mô hình Bonsai 1-bit
  • Tải mô hình 27B
  • Đặt cửa sổ ngữ cảnh thành 8.192 token
  • Khởi động terminal llama.cpp tương tác
  • Gửi yêu cầu lãi kép làm prompt đầu tiên

llama.cpp CLI chạy Bonsai-27B

Lần khởi chạy đầu có thể mất vài phút trong khi mô hình được nạp vào bộ nhớ hệ thống hoặc VRAM của GPU. 

Khi sẵn sàng, terminal hiển thị mô hình đang hoạt động, thông tin build và các lệnh khả dụng trước khi tạo phản hồi.

llama.cpp CLI chạy Bonsai-27B

Như thể hiện ở đầu ra, Bonsai trước tiên tạo quá trình suy luận rồi sinh ví dụ Python hoàn chỉnh, gồm hàm, hướng dẫn sử dụng và kết quả tính toán. 

Sau phản hồi đầu tiên, phiên vẫn mở, cho phép bạn nhập thêm prompt mà không cần khởi động lại mô hình.

Bước 3: Khởi động server Bonsai

Trước tiên, nhấn Ctrl+C để đóng phiên CLI tương tác ở bước trước.

Sau đó khởi động server Bonsai cục bộ:

BONSAI_FAMILY=bonsai \
BONSAI_MODEL=27B \
BONSAI_CTX=100000 \
./scripts/start_llama_server.sh \
--alias bonsai-27b \
--host 0.0.0.0 \
--port 8910

Phục vụ mô hình Bonsai-27B 1-bit bằng llama.cpp

Lệnh này:

  • Tải mô hình Bonsai 27B 1-bit
  • Cấp phát cửa sổ ngữ cảnh 100.000 token
  • Đăng ký mô hình với tên bonsai-27b
  • Khởi động server trên cổng 8910
  • Cho phép truy cập từ máy cục bộ và thiết bị khác trên cùng mạng

Cửa sổ ngữ cảnh 100.000 token yêu cầu bộ nhớ nhiều hơn đáng kể so với bài kiểm thử CLI 8.192 token trước đó. Hãy giảm BONSAI_CTX nếu mô hình không khởi động được hoặc hệ thống cạn RAM/VRAM.

Vì --host 0.0.0.0 phơi bày server ra mạng cục bộ, tránh dùng trên mạng không tin cậy. Chỉ để truy cập cục bộ, hãy thay bằng:

--host 127.0.0.1

Giữ terminal này mở khi sử dụng mô hình. Đóng terminal sẽ dừng server.

Server Bonsai cung cấp:

  • Giao diện web cục bộ gọn nhẹ
  • Một API tương thích OpenAI
  • Phản hồi dạng streaming
  • Gọi công cụ có cấu trúc
  • Điều khiển suy luận theo mô hình

API tương thích OpenAI khả dụng tại:

http://127.0.0.1:8910/v1

Bước 4: Kiểm thử Bonsai 27B bằng CURL

Mở terminal thứ hai và gửi yêu cầu tới endpoint chat-completions:

curl http://127.0.0.1:8910/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "bonsai-27b",
    "messages": [
      {
        "role": "user",
        "content": "Write a Python function for loading and validating a CSV file."
      }
    ],
    "max_tokens": 1000
  }'

Yêu cầu sử dụng cùng cấu trúc với OpenAI Chat Completions API:

  • model chọn bí danh server đã tạo trước đó
  • messages chứa hội thoại
  • max_tokens giới hạn số token sinh ra

API trả JSON với tốc độ khoảng 95 token/giây, nhưng phản hồi dừng ở giới hạn 1.000 token, vì vậy hãy tăng "max_tokens" lên 3000 để có câu trả lời đầy đủ trước khi kết nối Bonsai với ứng dụng, tác tử hoặc chương trình Python.

Bước 5: Kiểm thử giao diện web Bonsai 27B

Mở địa chỉ sau trong trình duyệt của bạn:

http://127.0.0.1:8910

kiểm thử Bonsai-27B trên llama.cpp webui

Giao diện tích hợp của llama.cpp cho phép bạn trò chuyện với Bonsai, tải tệp lên và điều chỉnh mức độ suy luận từ Off đến Max.

Hãy thử với một prompt lập trình như:

Create a Python command-line application that converts CSV files to JSON.

kiểm thử Bonsai-27B trên llama.cpp webui

Bonsai đã tạo một script Python hoàn chỉnh với tốc độ khoảng 92 token/giây trên RTX 5070 Ti của tôi. 

kiểm thử Bonsai-27B trên llama.cpp webui

Tôi cũng yêu cầu tạo một website portfolio cá nhân. 

Mặc dù mã chạy được, tôi không hài lòng với UI tạo ra vì thiết kế trông cơ bản và chung chung. 

Điều này gợi ý rằng Bonsai có thể tạo mã chức năng, nhưng có thể cần prompt chi tiết hơn và vài vòng chỉnh sửa để có giao diện chỉn chu.

Website được tạo bằng mô hình Bonsai-27B 1-bit.

Bước 6: Cài đặt tác tử lập trình Pi

Pi là tác tử lập trình dựa trên terminal mà chúng ta dùng để kiểm thử Bonsai 27B trong quy trình lập trình dạng tác tử thực tế thông qua API cục bộ tương thích OpenAI của nó.

Mở một terminal mới và cài đặt tác tử lập trình Pi:

curl -fsSL https://pi.dev/install.sh | sh

Cài đặt tác tử lập trình Pi

Khi được nhắc, nhấn Enter hoặc gõ y để tiếp tục cài đặt mặc định.

Xác nhận rằng Pi đã được cài đặt thành công:

pi --version

Tại thời điểm kiểm thử, phiên bản được cài là:

0.82.0

Bước 7: Thêm Bonsai 27B vào Pi

Đảm bảo server Bonsai vẫn đang chạy, sau đó mở terminal mới và tạo thư mục cấu hình của Pi:

mkdir -p ~/.pi/agent

Tạo tệp cấu hình mô hình tùy chỉnh:

nano ~/.pi/agent/models.json

Dán cấu hình sau:

{
  "providers": {
    "bonsai-local": {
      "baseUrl": "http://127.0.0.1:8910/v1",
      "api": "openai-completions",
      "apiKey": "local",
      "compat": {
        "supportsDeveloperRole": false,
        "supportsReasoningEffort": false
      },
      "models": [
        {
          "id": "bonsai-27b",
          "name": "Bonsai 27B Local",
          "reasoning": true,
          "input": ["text"],
          "contextWindow": 100000,
          "maxTokens": 50000,
          "cost": {
            "input": 0,
            "output": 0,
            "cacheRead": 0,
            "cacheWrite": 0
          }
        }
      ]
    }
  }
}

Cấu hình này kết nối Pi với endpoint cục bộ tương thích OpenAI, đăng ký mô hình là Bonsai 27B Local và khớp với thiết lập ngữ cảnh 100.000 token của server.

Lưu và đóng tệp:

Ctrl + O
Enter
Ctrl + X

Pi tự động tải các nhà cung cấp mô hình tùy chỉnh từ ~/.pi/agent/models.json.

Bước 8: Chạy Pi với Bonsai 27B

Đảm bảo server Bonsai vẫn đang chạy, sau đó tạo thư mục dự án mới:

mkdir simple-python
cd simple-python

Khởi động Pi sử dụng mô hình Bonsai cục bộ:

pi --provider bonsai-local --model bonsai-27b

Chạy tác tử lập trình Pi với mô hình Bonsai-27B

Nhập một prompt như:

Build a simple Python application with a FastAPI backend and a modern, 
responsive web interface that accepts user input, processes it, 
and displays the result.

kiểm thử mô hình Bonsai-27B trong tác tử lập trình Pi

Pi bắt đầu suy luận, tạo tệp dự án, cài đặt các gói cần thiết và tạo một ứng dụng phân tích văn bản với backend FastAPI và frontend đáp ứng.

Khi mô hình chạy với cửa sổ ngữ cảnh 100.000 token, nvidia-smi hiển thị khoảng 11,9 GB VRAM được sử dụng trên RTX 5070 Ti của tôi:

Cửa sổ ngữ cảnh 100K của Bonsai-27B được nạp vào VRAM GPU.

Cuối lần chạy, Pi xác nhận tác vụ đã hoàn thành và đưa ra bản tóm tắt rõ ràng về mọi thứ nó đã làm. 

Bao gồm các tệp đã tạo, tính năng chính của ứng dụng, các kiểm thử đã thực hiện và chính xác các lệnh cần để chạy dự án cục bộ. 

kiểm thử mô hình Bonsai-27B trong tác tử lập trình Pi

Sau khi sinh, Pi tóm tắt các tệp và tính năng đã tạo. 

Tôi kiểm thử backend bằng:

curl -s -X POST http://localhost:10100/analyze \
  -H "Content-Type: application/json" \
  -d '{"text":"Hello world! This is a test."}'

API hoạt động, và giao diện trông ổn hơn website trước đó được tạo qua web UI cơ bản. 

Ứng dụng được tạo bằng Bonsai-27B

Tuy nhiên, ứng dụng vẫn chưa hoàn thiện: một số nút và điều khiển còn thiếu, và frontend không hiển thị tất cả thống kê từ API backend. 

Điều này cho thấy Bonsai có thể dựng một ứng dụng full-stack hoạt động, nhưng kết quả vẫn cần kiểm thử và tinh chỉnh.

Ứng dụng được tạo bằng Bonsai-27B

Tổng kết

Trong quá trình kiểm thử của tôi, Bonsai 27B vẫn cho cảm giác là một mô hình bị nén mạnh. 

Chất lượng đầu ra của nó chưa thật sự ngang với Qwen3.6-27B lượng tử Q4, vốn tôi đã kiểm thử trước và thấy đáng tin cậy hơn cho quy trình tác tử lập trình. 

Phiên bản Q4 cần nhiều bộ nhớ hơn, nhưng mang lại suy luận mạnh hơn, sinh mã tốt hơn và kết quả ổn định hơn.

Dù vậy, Bonsai 27B vẫn rất ấn tượng đối với một mô hình có kích thước khoảng 3,8 GB.

Nó hiểu hướng dẫn, tạo tệp dự án, chạy lệnh, kiểm thử công việc của mình và có thể xây dựng ứng dụng hoạt động cục bộ. Trong phân khúc kích thước này, đây là một trong những mô hình mạnh nhất tôi từng thử.

Với công việc tác tử lập trình nghiêm túc, tôi vẫn sẽ chọn phiên bản Q4 của Qwen3.6-27B, đặc biệt vì RTX 3090 của tôi có 24 GB VRAM và có thể xử lý thoải mái mô hình lớn hơn. 

Dù vậy, tôi thực sự thích sử dụng Bonsai 27B và ấn tượng với hệ sinh thái Prism ML rộng hơn. Thiết lập tự động, runtime tối ưu, giao diện web tích hợp, API tương thích OpenAI và tích hợp tác tử giúp nhiều người dễ dàng hơn trong việc chạy và trải nghiệm một mô hình suy luận lớn cục bộ trên phần cứng tiêu dùng.

FAQs

Sự khác biệt giữa biến thể 1-bit và Ternary của Bonsai 27B là gì?

Biến thể 1-bit (3,9 GB) dùng trọng số nhị phân (giá trị gần -1 hoặc +1) và được tối ưu cho ràng buộc bộ nhớ khắc nghiệt, giữ lại khoảng 90% hiệu năng cơ sở của Qwen3.6-27B. Biến thể Ternary mặc định (5,9 GB) dùng trọng số 1,58-bit (-1, 0 hoặc +1). Nó cần nhiều bộ nhớ hơn một chút nhưng đẩy mức giữ benchmark lên 95%, trở thành lựa chọn tốt hơn nếu hệ thống của bạn có từ 16 GB RAM/VRAM trở lên.

Bonsai 27B có hỗ trợ đầu vào hình ảnh hoặc tài liệu không?

Có. Cả hai biến thể 1-bit và Ternary đều đa phương thức. Chúng dùng một tháp thị giác 4-bit gọn (chính là tệp mmproj được tải trong quá trình thiết lập). Điều này cho phép ứng dụng cục bộ truyền ảnh chụp màn hình, tài liệu và đầu vào từ camera cho mô hình cùng với prompt văn bản.

Bonsai 27B có chạy nguyên bản trên máy Mac hoặc điện thoại thông minh không?

Có. Mặc dù hướng dẫn này tập trung vào GPU NVIDIA, Prism ML cũng cung cấp bản dựng MLX được tối ưu riêng cho Apple Silicon. Dấu chân 3,9 GB của biến thể 1-bit đủ nhỏ để vừa trong ngân sách bộ nhớ mỗi ứng dụng của điện thoại hiện đại—đạt khoảng 11 token/giây trên iPhone 17 Pro Max—và chạy rất hiệu quả trên laptop Apple dòng M nhờ bộ nhớ hợp nhất.

Chủ đề

Liên quan