Chạy mô hình AI cục bộ trên MacBook Pro M4 24GB: Trải nghiệm thực tế và hướng dẫn cấu hình
Bài viết chia sẻ kinh nghiệm chạy các mô hình AI ngôn ngữ lớn (LLM) cục bộ trên chip Apple M4 với 24GB RAM. Tác giả đã tìm ra cấu hình tối ưu với mô hình Qwen 3.5-9B, mang lại hiệu năng tốt mà không cần kết nối internet, giúp giảm sự phụ thuộc vào các dịch vụ đám mây lớn.

Tôi đã dành thời gian thử nghiệm việc chạy các mô hình AI cục bộ (local models) và cuối cùng cũng tìm được một thiết lập hoạt động khá ổn thỏa. Dù chất lượng đầu ra không thể so sánh với các mô hình SOTA (State of the Art - hàng đầu hiện nay) như GPT-4, nhưng sự phấn khích khi sở hữu một mô hình AI riêng tư có thể thực hiện các tác vụ cơ bản, nghiên cứu và lập kế hoạch mà không cần kết nối internet là điều vô cùng đáng giá. Không chỉ vậy, đây còn là cách để giảm bớt sự phụ thuộc vào các gã công nghệ lớn của Mỹ, dù chỉ là một chút nhỏ.
Tuy nhiên, phải thừa nhận rằng việc thiết lập môi trường này không hề dễ dàng. Đầu tiên, bạn phải chọn cách chạy mô hình: thông qua Ollama, llama.cpp hay LM Studio. Mỗi công cụ đều có những đặc thù và hạn chế riêng, không phải cái nào cũng hỗ trợ tất cả các mô hình. Sau đó, bạn phải chọn chính xác mô hình phù hợp. Bạn cần mô hình tốt nhất vừa vặn với bộ nhớ (RAM), nhưng vẫn phải chừa đủ dung lượng để chạy các ứng dụng Electron thường ngày khác. Hơn nữa, mô hình đó cần có cửa sổ ngữ cảnh (context window) ít nhất 64K, lý tưởng nhất là 128K trở lên.
Gần đây, tôi đã thử nghiệm Qwen 3.6 Q3, GPT-OSS 20B và Devstral Small 24B. Về mặt lý thuyết, chúng đều vừa khít 24GB RAM nhưng thực tế sử dụng thì gần như không thể. Trong khi đó, Gemma 4B thì chạy rất mượt nhưng lại gặp khó khăn lớn trong việc sử dụng công cụ (tool use). Ngoài ra, còn vô vàn tùy chọn cấu hình để tinh chỉnh, từ những thông số quen thuộc như nhiệt độ (temperature) đến những tùy chọn kỹ thuật hơn như loại định lượng bộ nhớ đệm K (K Cache Quantization Type).
Thiết lập tối ưu với Qwen 3.5-9B
Mô hình tốt nhất tôi đã tìm được là Qwen 3.5-9B (4-bit quantization), cụ thể là phiên bản qwen3.5-9b@q4_k_s. Khi chạy trên LM Studio, nó đạt tốc độ khoảng 40 token/giây, có bật chế độ suy nghĩ (thinking), sử dụng công cụ thành công và sở hữu cửa sổ ngữ cảnh 128K. So với các mô hình SOTA, Qwen 3.5 dễ bị xao nhãng hơn, đôi khi rơi vào vòng lặp hoặc hiểu sai yêu cầu. Tuy nhiên, hiệu suất của nó thực sự đáng ngạc nhiên đối với một mô hình có thể chạy mượt mà trên MacBook Pro 24GB mà vẫn còn dư chỗ cho nhiều tác vụ khác.
Dưới đây là các cài đặt được khuyến nghị cho chế độ suy nghĩ và lập trình:
Chế độ suy nghĩ cho các tác vụ lập trình chính xác (ví dụ: WebDev):
- temperature=0.6
- top_p=0.95
- top_k=20
- min_p=0.0
- presence_penalty=0.0
- repetition_penalty=1.0
Để bật chế độ suy nghĩ, tôi chọn mô hình, vào phần Cấu hình (Configuration), cuộn xuống cuối tab Inference và thêm đoạn mã sau vào Prompt Template:
{%- set enable_thinking = true %}
Tích hợp với Pi và OpenCode
Tôi sử dụng mô hình này thông qua cả hai công cụ là Pi và OpenCode, tuy nhiên vẫn chưa quyết định được cái nào ưu việt hơn. Pi cảm giác nhạy bén hơn một chút, nhưng dù tôi rất thích ý tưởng về việc tự xây dựng "harness" (cấu trúc bao đóng) và tùy biến, tôi không khỏi ước gì nó có sẵn các cài đặt mặc định hợp lý hơn. Bạn có thể dễ dàng dành nhiều thời gian để tinh chỉnh Pi hơn là làm dự án thực tế của mình.
Cấu hình Pi (~/.pi/agent/models.json):
{
"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 suy nghĩ gây xao nhãng, hãy thêm "hideThinkingBlock": true vào file ~/.pi/agent/settings.json.
Cấu hình OpenCode (~/.config/opencode/opencode.json):
{
"$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"
}
So sánh với các mô hình SOTA
Một mô hình như Qwen 3.5 9B (Q4) không có khả năng giải quyết độc lập các vấn đề phức tạp trong thời gian dài giống như các mô hình SOTA. Đừng yêu cầu nó xây dựng một ứng dụng hoàn chỉnh trong một lần, bạn sẽ chỉ tốn công mà không thu được kết quả gì.
Cách làm việc hiệu quả là quy trình tương tác hơn, nơi bạn giao tiếp rõ ràng từng bước với mô hình và đưa ra nhiều hướng dẫn. Nhiều người có thể thấy việc phải "trông coi" mô hình như vậy là vô nghĩa, nhưng tôi lại thấy nó giúp mình tham gia tích cực hơn. Nhược điểm của việc làm việc với các mô hình SOTA là chúng khiến việc "ủy thác" nỗ lực tư duy trở nên quá dễ dàng, ngay cả khi bạn cố gắng ngăn chặn điều đó.
Với mô hình cục bộ, tôi phải tự承担 phần lớn việc tư duy và lập kế hoạch, phải cụ thể hơn, nhưng nó vẫn đóng vai trò là trợ lý nghiên cứu, một "vịt cao su" để giải quyết vấn đề (rubber ducking), và một chuyên gia nhớ rõ chi tiết ngôn ngữ lập trình và các lệnh dòng lệnh. Nó không phải là sự tăng năng suất 10 lần mà các công ty AI quảng cáo, nhưng nó là một công cụ hỗ trợ hữu ích và thú vị.
Dưới đây là một vài ví dụ thực tế về những việc làm được và không làm được.
Ví dụ 1: Sửa lỗi Elixir Credo
Tôi muốn nâng cấp linter credo lên phiên bản mới nhất và nhận được các cảnh báo. Tôi đã yêu cầu Qwen xem xét và nó đã đưa ra giải pháp thay thế length(list) > 0 bằng list != [] để mã Elixir chuẩn xác hơn. Khi được yêu cầu thực hiện sửa đổi, nó đã thực hiện 4 chỉnh sửa song song rất sạch sẽ. Đây là một tác vụ đơn giản nhưng rất tiện lợi.
Ví dụ 2: Giải quyết xung đột Git
Sau khi nâng cấp các dependency, tôi gặp xung đột git trong một PR của Dependabot. Qwen đã nhận diện đúng xung đột và đề xuất giữ phiên bản mới nhất của cả hai dependency (sentry và tailwind). Tuy nhiên, khi được yêu cầu thực hiện thay đổi, nó lại quên chỉnh sửa file mà chỉ cố gắng git add và tiếp tục rebase trong khi các dấu hiệu xung đột vẫn còn đó. Ngoài ra, nó dường như không nhận ra rằng git rebase --continue sẽ mở một trình soạn thảo văn bản, khiến OpenCode bị treo.
Kết luận
Các mô hình LLM cực kỳ linh hoạt và có vô số việc mà ngay cả mô hình cục bộ cũng có thể làm được. Giới hạn duy nhất là trí tưởng tượng của bạn. Các mô hình cục bộ có những sự đánh đổi nghiêm trọng, nhưng chúng đi kèm với những lợi ích rất hấp dẫn:
- Không cần kết nối internet, bạn có thể làm việc ngay trên máy bay!
- Chi phí chỉ là tiền điện bạn sử dụng (giả sử bạn đã định mua máy tính đó). Không cần phí đăng ký thuê bao.
- Vẫn có chi phí môi trường lớn khi huấn luyện các mô hình này, nhưng các công ty mô hình mở không nằm trong top những tác nhân gây ảnh hưởng môi trường lớn nhất, và việc sử dụng phần cứng của riêng bạn có nghĩa là ít phụ thuộc hơn vào các trung tâm dữ liệu.
- Và quan trọng nhất, việc vọc vạch (tinker) này rất vui.
LLM đã có tác động lớn đến thế giới của chúng ta, và nhiều tác động trong đó không tốt đẹp, nhưng rõ ràng chúng ở đây để ở lại. Việc thử nghiệm các mô hình cục bộ cảm giác như một cách tương tác bền vững và tích cực hơn với công nghệ này. Và một cách trung thực, nó rất vui, ngay cả khi nó mắc lỗi!
Bài viết liên quan

Công nghệ
Cerebras, đối tác thân thiết của OpenAI, sẵn sàng cho đợt IPO kỷ lục định giá tới 26,6 tỷ USD
04 tháng 5, 2026

Công nghệ
Cảnh sát bắt giữ nghi can được cho là "ông trùm" của trang web buôn bán ma túy Dream Market
14 tháng 5, 2026

Công nghệ
Microsoft giới thiệu Surface Pro 12 và Surface Laptop 8: Sức mạnh chip Intel, giá thành gây sốc
19 tháng 5, 2026
