- Chia sẻ một thiết lập thực tế để chạy LLM cục bộ trên M4 MacBook Pro với 24GB bộ nhớ, phục vụ các tác vụ cơ bản như lập trình, nghiên cứu, lên kế hoạch... mà không cần kết nối Internet
- Mô hình hiện hoạt động tốt nhất là Qwen 3.5-9B (lượng tử hóa Q4), hỗ trợ chế độ thinking, tool use và cửa sổ ngữ cảnh 128K trong LM Studio với tốc độ khoảng 40 token/giây
- Quá trình thiết lập khá phức tạp, từ chọn công cụ chạy, mô hình đến các tùy chọn cấu hình như Ollama, llama.cpp, LM Studio, và mỗi công cụ đều có những giới hạn riêng
- Dù khó có thể tự động giải quyết các vấn đề phức tạp như các mô hình SOTA, nó vẫn đủ hữu ích cho vai trò trợ lý nghiên cứu hoặc rubber duck debugging với quy trình làm việc tương tác theo từng bước
- Có thể vận hành chỉ với tiền điện thay vì phí thuê bao, đồng thời là một cách dùng AI bền vững hơn giúp giảm phụ thuộc vào Big Tech, nhưng phải đánh đổi đáng kể về hiệu năng và cấu hình
Môi trường chạy mô hình cục bộ và tiêu chí lựa chọn
- Tác giả đã thử nghiệm thiết lập chạy mô hình cục bộ trên M4 MacBook Pro 24GB bộ nhớ; tuy không cho đầu ra ngang các mô hình hàng đầu (SOTA), vẫn có thể tạo được một cấu hình đủ để xử lý công việc cơ bản, nghiên cứu và lên kế hoạch mà không cần Internet
- Các công cụ chạy cục bộ gồm Ollama, llama.cpp và LM Studio, mỗi công cụ có giới hạn và danh sách mô hình hỗ trợ khác nhau
- Khi chọn mô hình, cần bảo đảm nó vừa với bộ nhớ nhưng vẫn chừa đủ tài nguyên để chạy cùng các ứng dụng Electron thông thường, đồng thời cần cửa sổ ngữ cảnh tối thiểu 64K, lý tưởng là từ 128K trở lên
- Các thử nghiệm gần đây với Qwen 3.6 Q3, GPT-OSS 20B, Devstral Small 24B tuy vừa bộ nhớ nhưng khó dùng thực tế; còn Gemma 4B chạy tốt nhưng gặp khó khi dùng công cụ
- Các mục cấu hình rất đa dạng, từ những giá trị quen thuộc như temperature đến các tùy chọn đặc thù như K Cache Quantization Type, và giá trị phù hợp có thể thay đổi tùy việc có bật chế độ suy luận (thinking) hay không
Cấu hình Qwen 3.5-9B lượng tử hóa 4 bit
- qwen3.5-9b@q4_k_s là mô hình tốt nhất khi chạy trong LM Studio, đáp ứng cùng lúc khoảng 40 token/giây, bật suy luận, dùng công cụ thành công và cửa sổ ngữ cảnh 128K
- So với các mô hình hàng đầu, nó dễ bị phân tán hơn, đôi khi lặp vòng và có lúc hiểu sai yêu cầu, nhưng với một mô hình chạy được trên MacBook Pro 24GB mà vẫn chừa chỗ cho công việc khác thì nó khá ổn
- Thiết lập được khuyến nghị cho chế độ suy luận và tác vụ lập trình như sau
temperature=0.6, top_p=0.95, top_k=20, min_p=0.0, presence_penalty=0.0, repetition_penalty=1.0
- Để bật suy luận, sau khi chọn mô hình trong LM Studio, cần vào phần configuration và thêm giá trị sau vào Prompt Template ở cuối tab Inference
{%- set enable_thinking = true %}
- Mô hình này đã được dùng với cả pi và OpenCode; pi cho cảm giác phản hồi nhanh hơn nhưng, ngoài ưu điểm có thể tự xây và tùy biến harness, lại thiếu các giá trị mặc định hợp lý
- Có thể sẽ tốn nhiều thời gian chỉnh pi hơn cả làm dự án thực tế
Cấu hình pi
- Trong
~/.pi/agent/models.json, tác giả đăng ký endpoint tương thích OpenAI của LM Studio cùng mô hình qwen3.5-9b@q4_k_s
{
"providers": {
"lmstudio": {
"baseUrl": "http://localhost:1234/v1",
"api": "openai-completions",
"apiKey": "lm-studio",
"models": [
{
"id": "qwen3.5-9b@q4_k_s",
"reasoning": true,
"compat": { "thinkingFormat": "qwen-chat-template" }
}
]
}
}
}
- Để ẩn các khối suy luận dễ gây phân tán, thêm
"hideThinkingBlock": true vào ~/.pi/agent/settings.json
Cấu hình OpenCode
- Trong
~/.config/opencode/opencode.json, tác giả đăng ký LM Studio làm provider tương thích OpenAI cục bộ, đồng thời cấu hình dùng công cụ, độ dài ngữ cảnh 131072 và tối đa 32768 token
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"lmstudio": {
"npm": "@ai-sdk/openai-compatible",
"name": "LM Studio (local)",
"options": {
"baseURL": "http://127.0.0.1:1234/v1"
},
"models": {
"qwen3.5-9b@q4_k_s": {
"name": "Qwen 3.5 9B Q4_K_S",
"tools": true,
"context_length": 131072,
"max_tokens": 32768
}
}
}
},
"model": "lmstudio/qwen3.5-9b@q4_k_s"
}
Khác biệt so với các mô hình hàng đầu
- Những mô hình như Qwen 3.5 9B Q4 chưa đạt đến mức có thể tự giải quyết độc lập các vấn đề phức tạp trong thời gian dài như các mô hình hàng đầu
- Cách yêu cầu nó tạo cả ứng dụng trong một lần là không phù hợp, và có thể chỉ khiến laptop nóng lên mà không có kết quả
- Cách hiệu quả hơn là làm việc theo quy trình tương tác, giao tiếp rõ ràng từng bước và cung cấp nhiều chỉ dẫn
- Khi dùng mô hình cục bộ, người dùng phải tự gánh nhiều phần suy nghĩ và lập kế hoạch hơn, đồng thời đưa ra chỉ dẫn cụ thể hơn; dù vậy, nó vẫn hữu ích như một trợ lý nghiên cứu, một rubber duck, hay công cụ hỗ trợ nhớ nhanh chi tiết ngôn ngữ lập trình và lệnh command line
- Nó không mang lại mức tăng năng suất gấp 10 lần như các công ty AI lớn quảng bá, nhưng vẫn cho cảm giác hữu ích và thú vị
Các tác vụ làm được và không làm được
-
Sửa cảnh báo Elixir Credo
- Sau khi nâng Elixir linter
credo lên bản mới nhất, mã nguồn xuất hiện cảnh báo, và tác giả yêu cầu Qwen chạy mix credo --strict để đề xuất cách sửa nhưng không chỉnh sửa trực tiếp
- Qwen đã tìm ra vấn đề ở 4 file test, nơi
length/1 được dùng để kiểm tra danh sách có rỗng hay không, và đề xuất dùng list != [] thay cho length(list) > 0
- Sau đó khi được yêu cầu chỉnh sửa, Qwen đã thực hiện gọn gàng 4 chỉnh sửa song song
- Đây là tác vụ đơn giản mà tác giả cũng có thể tự làm bằng cách qua lại giữa terminal và editor, nhưng mô hình vẫn đóng vai trò hỗ trợ tiện lợi
-
Xử lý xung đột rebase trong Dependabot PR
- Sau khi cập nhật dependency, Dependabot PR gặp xung đột git, và vì Dependabot từ chối rebase nên tác giả phải tự kéo về, rebase rồi nhờ Qwen kiểm tra
- Xung đột thuộc loại đơn giản, chỉ cần chọn phiên bản mới hơn của từng dependency, và Qwen khuyến nghị giữ
sentry ở 13.0.1 và tailwind ở 0.4.1
- Nhưng khi được yêu cầu áp dụng thay đổi thực tế, Qwen lại định chạy
git add mix.lock && git rebase --continue trong khi file chưa được sửa và marker xung đột vẫn còn
- Nó cũng không nhận ra rằng
git rebase --continue sẽ mở editor, khiến OpenCode bị treo; hiện tượng này cũng có thể chỉ là sự cố một lần
Ưu điểm và giới hạn của mô hình cục bộ
- Mô hình cục bộ có nhiều đánh đổi lớn, nhưng có lợi thế là vẫn làm việc được cả trên máy bay khi không có Internet
- Nếu coi chiếc máy tính là thứ đằng nào cũng phải mua, thì chi phí vận hành gần như chỉ còn là tiền điện và không cần thuê bao
- Việc huấn luyện mô hình vẫn có chi phí môi trường lớn, nhưng các công ty mô hình mở vẫn chưa thuộc nhóm tác động môi trường cao nhất, và dùng phần cứng cá nhân cũng giúp giảm phụ thuộc vào datacenter
- Tự mình tinh chỉnh và thử nghiệm cũng mang lại nhiều hứng thú
- Dù LLM đã tạo ra ảnh hưởng rất lớn và cũng có nhiều mặt tiêu cực, đây vẫn có vẻ là công nghệ sẽ tồn tại lâu dài, và việc thử nghiệm mô hình cục bộ cho cảm giác như một cách tương tác với công nghệ này theo hướng bền vững và tích cực hơn
1 bình luận
Ý kiến trên Hacker News
Chạy LLM cục bộ rất thú vị và mạnh mẽ, nhưng để thật sự hoàn thành công việc thì khá đau đầu
Trong khi phải lên kế hoạch, viết đặc tả và chuẩn bị trước, thì các mô hình lớn như OpenAI hay Claude thường chỉ cần ném cho vài câu là hiểu ngay
Nếu đã làm việc nghiêm túc với mô hình lớn thì cứ tiếp tục dùng thôi
Tuy vậy, tôi nhìn mảng thị giác/OCR khác đi. Các mô hình trọng số mở cỡ nhỏ và trung cũng đã gần với mặt bằng hiện đại, và trong các tác vụ batch lớn thì chi phí token prefill khá đáng tiếc
Ngoài ra, mọi người thường quên rằng ngay cả với LLM nhỏ, nếu muốn dùng như một dịch vụ cá nhân ổn định thì vẫn phải chừa riêng 16~24GB RAM/VRAM và để nó chạy liên tục
Vấn đề cốt lõi cuối cùng vẫn là tiền
Tôi nghĩ nó đã gần tới mức thực sự dùng được
Gemma 4 31B cho cảm giác như một đường cơ sở mới cho mô hình cục bộ. Dĩ nhiên vẫn kém frontier model, nhưng ít mang cảm giác thử nghiệm khoa học hơn những mô hình cục bộ tôi từng chạy trước đây, cũng như GPT OSS 120B hay Nemotron Super 120B
Trên M5 Max 128GB RAM, nếu dùng toàn bộ cửa sổ ngữ cảnh 256K thì mức dùng RAM tăng vọt tới khoảng 70GB, và thấy overhead hệ thống khoảng 14GB
Có vẻ như máy 64GB Panther Lake gắn full Arc B390 hoặc máy 48GB Snapdragon X2 Elite sẽ chạy được với cửa sổ ngữ cảnh 128K~256K, còn 32GB thì có lẽ miễn cưỡng dùng được với cửa sổ ngữ cảnh 32K
Chỉ mới năm ngoái thôi, việc thấy hiệu năng như vậy trên một cấu hình cao cấp nhưng vẫn gần với mainstream còn giống như mơ hão
Cuối cùng, tiêu chí là “có thể giao việc gì cho mô hình này một cách ổn định”. Opus rõ ràng biết nhiều hơn và xử lý được việc phức tạp hơn, nhưng nếu nhồi ngữ cảnh tốt thì Gemma đáng kinh ngạc
Chênh lệch về phạm vi công việc mà tôi tin tưởng giao cho hai mô hình này nhỏ đến bất ngờ. Gần đây nó cho kết quả rất tốt trong công cụ cá nhân và nhiều dự án khác nhau, và đây là mô hình cục bộ đầu tiên mà tôi có thể tin giao việc hiện thực tính năng ở chế độ agent cho một dự án không hề nhỏ
https://thot-experiment.github.io/gradient-gemma4-31b/
Đây là một công cụ tương đối phức tạp mà Gemma 4 gần như làm hết trong OpenCode, và trong vài giờ tôi chỉ phải can thiệp thủ công khoảng 4 lần
Q6_K_XL, ngữ cảnh 128K @ q8, đọc khoảng 800tok/s, ghi khoảng 16tok/s
Tôi đang chờ turboquant và MTP của llama.cpp, và nếu tin đồn đúng thì có thể lên 256K và 25~30tok/s
Hiệu năng benchmark ngay sau khi ra mắt rất ấn tượng nên tôi cũng đã viết bài về nó [0]. Tuy nhiên sau đó khi chạy trong môi trường agent coding với ngữ cảnh dài hơn thì vị trí trên bảng xếp hạng có giảm đôi chút
[0] https://gertlabs.com/blog/gemma-4-economics
Quy trình là lập kế hoạch bằng mô hình hiện đại, rồi thực thi bằng mô hình nhỏ. Nếu lập kế hoạch đủ kỹ để không để lại điểm mơ hồ cho mô hình nhỏ tự diễn giải thì nó hoạt động ổn
Giá mà tôi đọc được bài này trước khi mất cả cuối tuần để đi đến đúng kết luận đó
Tôi đã làm một bài test nhân tạo trên cùng chiếc laptop, bắt nó sửa khoảng 50 lỗi lint trong một repo C++ vibe-coding nhỏ. Tôi kỳ vọng nó sẽ xử lý được nhiều tác vụ nhỏ mà không bị kẹt quá thường xuyên
GPT OSS 20B dùng được, nhưng chậm, hay thêm câu thừa hoặc lặp ý, và thường xuyên mắc lỗi liệt kê là đã sửa xong dù chưa hề chỉnh code
Qwen 3.5 9B dùng cùng Opencode thì nhanh hơn nhiều, xử lý được hầu hết cảnh báo lint mà không bị kẹt kể cả khi đang qua bước nén, và sửa đúng tất cả cảnh báo
Tôi cũng thử bản lượng tử hóa MLX 4-bit của Qwen 3.5 9B, nhưng cuối cùng bị crash vì thiếu bộ nhớ; đổi sang GGUF chạy bằng llama.cpp thì chạy được mà không crash
Nó hoàn toàn không thể so với frontier model. Chậm hơn nhiều, sai cả thông tin nền tảng, và không thể xử lý tác vụ không tầm thường trong một lần
Khi tôi bảo nó tóm tắt kiến trúc dự án, nó khẳng định dự án dùng những thư viện mà chẳng hề tồn tại ở đâu trong repo. Tùy mỗi người, nhưng dù vậy vẫn có mặt dùng được, và tôi hy vọng theo thời gian thì môi trường LLM cục bộ trên phần cứng vừa phải sẽ còn tốt hơn nhiều
LLM cục bộ rất tuyệt, nhưng nếu đọc nhiều bài về chúng thì dễ có cảm giác chúng gần chạm tới Opus 4.7
Trên HN có một nhóm rất nhỏ nhưng ồn ào và nhiệt tình, thường phóng đại mạnh khả năng của LLM cục bộ
Trong số các mô hình cùng kích cỡ mà tôi từng chạy trên GPU cục bộ, nó thuộc nhóm nhanh nhất, dù tôi chỉ thử trên card Nvidia
Sau đó tôi mới thấy nó là MoE và chỉ có 3.6B tham số được kích hoạt, nên giải thích được khá nhiều điều
Việc nhìn thực tế vào những gì mô hình cục bộ, đặc biệt là các mô hình nhỏ như 9B mà tác giả dùng, có thể làm là rất hữu ích
Mô hình 9B ở đâu đó quanh mức Sonnet 3.6 nên có thể làm autocomplete và các hàm nhỏ, nhưng khi cố hiểu vấn đề lớn thì sẽ mất mạch
Dù vậy nó vẫn thú vị và nghịch rất vui. Tôi chủ yếu làm nhiều agent harness cục bộ cho vui
Dự án hiện tại là một agent không cần cài đặt: https://gemma-agent-explainer.nicklothian.com/
Python, SQL và React đều chạy hoàn toàn trong trình duyệt. Để có trải nghiệm tốt nhất thì tôi khuyên dùng Gemma E4B
Nó vẫn đang được phát triển tích cực, và cần Chrome vì HTML5 Filesystem API và hỗ trợ LiteRT. Tuy vậy, phần lớn trình duyệt nền Chromium cũng có thể làm cho chạy được
Điểm khác với đa số agent khác là nó không cần cài đặt. Mô hình chạy trong trình duyệt bằng LiteRT/LiteLLM và cho hiệu năng tốt hơn Transformers.js. Với Filesystem API, nó cũng có thể tùy chọn quyền đọc thư mục sandbox
Nó tự tài liệu hóa, nên nếu hỏi trong bảng trợ giúp thời gian thực kiểu “system prompt được dùng như thế nào” thì nó có thể truy cập chính source code của mình để trả lời
Bấm “Tour” là xem được toàn bộ, và tuần sau tôi định phát hành mã nguồn mở
Chỉ là benchmark mọi người dùng để đánh giá mô hình thay đổi quá thường xuyên nên khó tìm được so sánh tốt. Nhân tiện, Sonnet 3.6 ra sau GPT-3.5 khoảng 1 năm
Nếu nhìn một cách phê phán thì đúng là các mô hình này không ngang hàng với đỉnh cao hiện tại ở các tác vụ code phức tạp
Nhưng một phần lớn công việc văn phòng lại là xử lý Excel, di chuyển file, dịch tài liệu pháp lý khô khan, soạn email nháp, việc lặt vặt với PowerPoint
Các việc đó thì mô hình từ 30~35B trở lên là đủ dùng, lại còn có lợi thế giữ dữ liệu công ty ở chế độ riêng tư
Điều mà người nói về mô hình cục bộ kỳ vọng là các mô hình ra mắt vào tháng 4 năm nay. Đó là Qwen 3.6 27B, và nếu GPU yếu thì là qwen 35b a3b
Các mô hình này hoàn toàn đủ nghiêm túc để so với các mô hình state-of-the-art hiện nay
Điển hình là vụ London Whale của JPMorgan, nơi lỗi Excel đã gây thiệt hại 6 tỷ USD
Tôi đang cân nhắc MacBook M5 Pro 18/20 lõi, 64GB RAM, nhưng rất khó tìm benchmark mô hình thực tế
Ví dụ, sẽ rất hữu ích nếu ai đó có thể cho biết tốc độ token mỗi giây của các bản lượng tử hóa Q4 và Q6 của Qwen 3.6 35B/A3B là khoảng bao nhiêu
Suy luận cục bộ đang nghiêng về các mô hình MoE, và khá nhiều mô hình có tốc độ token mỗi giây ổn nhưng thời gian tới token đầu tiên thì khủng khiếp
Tôi đã viết vài thiết lập ngẫu nhiên mình dùng trên M2 Studio 32GB lên Bluesky và muốn xin phản hồi
Tôi thuộc kiểu khó hình dung nếu không tự nhìn tận mắt, nên chia sẻ ở đây với hy vọng được giúp đỡ
https://bsky.app/profile/mooresolutions.io/post/3mliilyf2i22...
Trên M4 Pro 48GB, tôi đang chạy mô hình lượng tử hóa qwen 3.6 9b, và nó chỉ vừa đủ dùng cho kiểu phát triển cơ bản dựa trên pi.dev/cc
Có vẻ để làm việc thực sự có ý nghĩa thì desktop 128GB mới là sweet spot. Chỉ là hiện giờ khó kiếm được máy như vậy
Chạy cục bộ thì vui thật, nhưng cũng không nên quên là thời gian của chính mình không phải miễn phí
Với dự án cá nhân, tôi đang dần chuyển sang OpenRouter, và ngay cả khi dùng nghiêm túc mô hình qwen lớn nhất thì chi phí vẫn dưới 2~3 USD mỗi ngày
Với M4 Pro 48GB thì bạn vẫn chạy được mô hình lớn hơn, nên nếu trí thông minh của mô hình là yếu tố chính quyết định tính hữu dụng thì có thể dùng mô hình lớn sẽ hợp lý hơn
Tôi đồng ý rằng dense 9B thì không ổn lắm
Tôi dùng cả bản cấu hình tối đa của M5 MacBook Pro mới nhất và cũng thử mô hình cục bộ rồi, nhưng nó gần như chỉ ở mức miễn cưỡng hoạt động
Trên 4090 24GB, tôi đang chạy qwen3.6:27B với khoảng ngữ cảnh 128K bằng cách tận dụng tối ưu bộ nhớ activation gần đây của turboquant/rotorquant
Tôi rất khuyến khích nâng lên tầm mô hình đó. Tổ hợp q4_xl+rotorquant khá tốt
Tôi cũng có mã tham khảo để ném cho agent
https://github.com/rapatel0/rq-models
Tôi thấy bỏ vài nghìn USD vào một chiếc Mac còn đáng hơn là đăng ký API
Mô hình cục bộ cho phép bạn làm việc mọi lúc mọi nơi mà không phải lo rò rỉ quyền riêng tư