10 điểm bởi GN⁺ 3 giờ trước | 3 bình luận | Chia sẻ qua WhatsApp
  • Trong bối cảnh giá các mô hình flagship trên đám mây tăng vọt, bài viết tổng hợp cách tận dụng mô hình cục bộ để tiếp tục công việc lập trình mà không tăng gánh nặng chi phí
  • Mô hình cục bộ chưa đạt hiệu năng của các mô hình SOTA, nhưng với tỷ lệ hiệu năng/chi phí tốt và phần harness quyết định luận (deterministic harness) được tăng cường, chất lượng có thể cải thiện tới 6 lần
  • Với tác vụ lập trình, Gemma 4 có sự cân bằng tốt giữa công việc tổng quát và sinh mã, đồng thời hỗ trợ Tools Use·Vision·Reasoning, phù hợp để tích hợp với VS Code
  • Bài viết cung cấp toàn bộ quy trình cấu hình để chạy máy chủ mô hình bằng LM Studio rồi kết nối vào endpoint tùy chỉnh của VS Code Copilot·Pi
  • Nếu thiếu phần cứng, có thể dùng mô hình miễn phí trên OpenRouter làm phương án thay thế; tuy vậy mô hình cục bộ vẫn vượt trội về khía cạnh offline và quyền riêng tư

Bối cảnh tăng giá

  • GitHub Copilot đã chuyển từ mô hình tín dụng sang tính phí theo mức sử dụng, và các mô hình từng miễn phí trước đây cũng không còn miễn phí nữa
  • Vì GitHub là bên bán lại token nên người dùng cảm nhận việc tăng giá rõ hơn. Các mô hình flagship được tung ra trong khi tốc độ cải thiện hiệu năng không theo kịp tốc độ tăng giá
    • Google Flash 3.5 đắt gấp 3 lần Flash 2.5
    • GPT 5.5 đắt gấp 3 lần GPT 5
    • Claude thì do vốn đã quá đắt nên ngược lại còn phải giảm giá

Thực tế và điểm mạnh của mô hình cục bộ

  • Mô hình cục bộ chưa thể sánh với hiệu năng SOTA của các mô hình như Claude·GPT·Gemini, nhưng vẫn có một số sắc thái khác biệt (nuance)
    • Tỷ lệ giá/hiệu năng: mô hình đám mây có chi phí tăng theo cấp số nhân so với mức cải thiện hiệu năng
    • Harness quyết định luận: với tooling và chỉ dẫn tốt hơn, chất lượng của mô hình yếu hơn có thể tăng tới 6 lần
    • Cái bẫy của benchmark: rất khó quy đổi mô hình thành một con số duy nhất, và mỗi phòng lab AI đều tập trung vào benchmark có lợi cho mình, vì vậy cần tự đánh giá trên workload của chính mình
    • Hiệu ứng địa chính trị: những gì các lab Mỹ công bố miễn phí không phải là loại tốt nhất. gpt-oss-20b đã quá cũ, còn Anthropic thì chưa công bố open weights. Gemma 4 là mô hình nghiêm túc duy nhất, đồng thời đáng chú ý là các mô hình mạnh do các lab Trung Quốc công bố như Qwen·Kimi·GLM
  • Xét theo hiện tượng "brain rot", mô hình yếu buộc người dùng phải can thiệp nhiều hơn nên tốt cho sức khỏe não bộ
    • Giống như đi xe đạp: chậm hơn nhưng tốt cho sức khỏe. Trong lao động tri thức, "chậm là nhanh"
    • Mục tiêu không phải là tối đa hóa tự động hóa để đẩy hết tư duy sang cho máy. Đừng hy sinh giá trị của chính mình trong tương lai (relevance) chỉ để đổi lấy tốc độ ngắn hạn
    • Kỹ thuật dùng với mô hình yếu cũng áp dụng được cho mô hình lớn. Làm việc với mô hình yếu giống như chơi ở chế độ khó, học được rồi sẽ dùng công cụ mạnh hiệu quả hơn

Chọn mô hình — Gemma 4

  • Với tác vụ lập trình, các mô hình Trung Quốc đang chiếm vị trí cao trên bảng xếp hạng Huggingface, với các lựa chọn như Qwen·DeepSeek·Kimi·Llama·Gemma
  • Gemma 4 gồm nhiều phiên bản
    • E2B: chữ "E" là edge. Với 2B tham số, có thể chạy trên hầu hết phần cứng nhưng dễ ảo giác hoặc không hoàn tất tác vụ
    • E4B: lớn gấp đôi E2B. Chi phí tải về và thiết lập thấp nên được khuyến nghị để bắt đầu
    • 12B: hiểu hình ảnh một cách native mà không cần decoder, nên nhanh hơn trong lập trình frontend và tác vụ trực quan. Cũng hỗ trợ audio native nhưng điều này không quan trọng với workload lập trình
    • 26B A4B: kiến trúc MoE (mixture of experts), trong đó chỉ 4B trên tổng 26B tham số được kích hoạt. Thông minh hơn E4B và phù hợp với GPU 8~12GB VRAM (mô hình tác giả ưa dùng)
    • 31B: mô hình open weights lớn nhất của Google. Không phải MoE nên cần nhiều VRAM. Trên AMD APU chỉ đạt 1~2 TPS, gần như không thể dùng
    • Các biến thể QAT (ví dụ: E4B QAT) dùng ít bộ nhớ hơn mà vẫn giữ chất lượng gần như tương đương. Unsloth đang tiếp tục tối ưu thêm

Những thành phần cần có để chạy mô hình cục bộ

  • Để chạy mô hình cục bộ cần có harness, model, runtime và model manager
    • Harness: VS Code Copilot, Copilot CLI, Pi, v.v. Đây là thành phần quyết định luận (mã truyền thống) bao quanh mô hình vốn có yếu tố xác suất
    • Model: tệp trọng số của mạng nơ-ron sâu. Lượng tử hóa (quantization) như Q8, Q4 tương tự khái niệm độ phân giải hình ảnh; định dạng thì gồm GGUF·MLX, v.v.
  • Runtime (engine suy luận)

    • Llama.cpp: runtime mã nguồn mở phổ biến nhất, có thể tải GGUF·MLX. Không liên quan tới mô hình Llama của Meta; LM Studio dùng nó ở bên trong
    • MLX: runtime của Apple, dùng trên Mac như M1·M2
    • ONNX Runtime: dựa trên transformers.js, có thể chạy trong trình duyệt qua WebGPU và cũng hỗ trợ di động iOS·Android
    • vLLM: mã nguồn mở từ UC Berkeley, chủ yếu cho máy chủ hiệu năng cao, nhưng khá khó cấu hình
  • Model manager

    • Ollama: bắt đầu là CLI trên terminal rồi bổ sung GUI nhẹ. Là wrapper viết bằng Go bao quanh Llama.cpp. Mã nguồn mở
    • LM Studio: miễn phí nhưng không phải mã nguồn mở. Cung cấp SDK (Python/TypeScript) và REST API, có thể điều khiển các tính năng riêng của mô hình cục bộ như nạp động
    • Jan: lựa chọn thay thế tương tự LM Studio, miễn phí và mã nguồn mở, nhưng ít tính năng hơn
    • Hỗ trợ API tương thích OpenAI là tính năng then chốt vì rất nhiều ứng dụng AI hoạt động theo tiêu chuẩn thực tế này

Cấu hình máy chủ LM Studio

  • Bật máy chủ bằng nút "Developer". Nếu chạy trên máy khác hoặc trong container thì bật Serve on Local Network; nếu cần truy cập từ web app thì bật Enable CORS
  • LM Studio dùng cơ chế JIT (Just In Time) loading để nạp mô hình tại thời điểm có yêu cầu. Có thể điều khiển thời gian giữ trong bộ nhớ bằng thiết lập TTL
    • Cold start: nếu mô hình chưa được nạp, yêu cầu đầu tiên sẽ mất thêm khoảng 10~30 giây, tương tự cold start của AWS Lambda. Điều này ảnh hưởng tới chỉ số TTFT (Time To First Token)
    • Cửa sổ ngữ cảnh ngắn: ở cấu hình mặc định, context window có thể chỉ là 4k, nên cần tăng thủ công. Phần lớn mô hình cho VS Code Copilot có 200~400k
  • Độ dài ngữ cảnh và cấu hình bộ nhớ

    • Nhu cầu VRAM theo độ dài ngữ cảnh: 262144 (tối đa) = 25.74GB, 4096 (mặc định) = 18.16GB, 150000 (thiết lập tác giả ưa dùng) = 22.45GB
    • Với lập trình, system prompt có thể chiếm 20~40k token nên cần nạp ít nhất 100k token
    • Nếu context quá lớn, tốc độ sinh token sẽ giảm. Điểm tối ưu là khi harness tự động nén ngữ cảnh
    • Lý tưởng nhất là chạy mọi layer của mô hình trên GPU và nên kéo thanh GPU Offload lên tối đa. Chạy layer trên CPU, trừ Apple Silicon (UMA), sẽ cần sao chép dữ liệu giữa CPU và GPU
  • Mẹo lượng tử hóa KV cache

    • Đặt K Cache Quantization Type thành Q8_0, và V Cache Quantization Type thành Q4_0
    • Đây là cách giữ key ở độ phân giải cao hơn value. Với thiết lập này, nhu cầu bộ nhớ GPU giảm từ mặc định 28.75GB xuống còn 22.45GB
    • Bắt buộc phải lưu cấu hình. Nếu không lưu, lần nạp mô hình sau sẽ quay lại mặc định
    • VS Code Copilot không có khái niệm gửi yêu cầu context window tùy chỉnh, nên LM Studio phải nhớ thiết lập đó khi gọi REST API
  • Nếu TPS dưới 10 thì rất khó chịu để dùng cho lập trình. Bạn sẽ mất nhiều thời gian chờ mô hình hơn

Kết nối endpoint tùy chỉnh cho Copilot

  • Cần VS Code mới nhất (tại thời điểm viết là 1.122.1). Thêm theo đường dẫn: bộ chọn mô hình → biểu tượng bánh răng → "Add Models" → "Custom Endpoint"
    • Đặt tên (ví dụ: "Local LM Studio"), nhập API Key (nếu không đặt thì nhấn Enter), rồi chọn kiểu inference API
    • Trong 3 loại API, chỉ Chat Completions hoạt động mượt
  • Trong thiết lập JSON, cần chỉ định thủ công url, maxInputTokens, maxOutputTokens, v.v.
    • Thiết lập đúng tùy chọn thinking (Gemma 4 hỗ trợ)
    • Mảng supportsReasoningEffort khác nhau theo từng mô hình; bản 26B hỗ trợ điều khiển chi tiết hơn E4B
    • Bản 4B dùng maxInputTokens 64000/maxOutputTokens 16000, còn 26B MoE dùng 100000/50000
  • Ở prompt đầu tiên, Copilot sẽ gửi một system prompt khổng lồ cùng định nghĩa tool nên lần tương tác đầu sẽ chậm 2~5 phút. Nạp mô hình mất 30 giây, còn xử lý prompt đầu vào mất khoảng 5 phút
    • Điều này chỉ xảy ra một lần mỗi phiên và LM Studio áp dụng prompt caching. Pi không gặp vấn đề này vì system prompt nhỏ hơn
  • Kiểm thử nhanh và môi trường

    • Trình diễn hiệu năng của Gemma 4 26B A4B bằng cách tạo game rắn săn mồi với prompt one-shot, không dùng AGENTS.md hay SKILL
    • Môi trường sử dụng: Lenovo Thinkpad L16 Gen 2, AMD Ryzen 7 PRO 250 APU, 64GB DDR5 (5,600MT/s), Aurora Linux. Tác giả cho rằng 32GB cũng đủ

Cấu hình Pi

  • Việc kết nối tới máy chủ LM Studio cục bộ khá đơn giản, và thiết lập contextWindow phù hợp với cách cấu hình của LM Studio hơn
  • Đặt baseUrl thành http://host.containers.internal:1234/v1, và api thành openai-completions
    • Với 4B, đặt contextWindow 64000/maxTokens 16000; với 26B MoE, đặt 150000/50000 và cấu hình ánh xạ thinkingLevelMap

Tổng kết ưu và nhược điểm của mô hình cục bộ

  • Ưu điểm: hoạt động offline, quyền riêng tư cao, thời gian phản hồi nhanh tùy theo phần cứng·workflow·mô hình·cấu hình
  • Nhược điểm
    • Mô hình open weights không thông minh bằng mô hình độc quyền flagship, nhưng với harness có guardrail phù hợp (lint·test·AGENTS.md), độ chính xác khi lập trình có thể cải thiện mạnh
    • Chạy LLM trên cùng một máy sẽ gây giảm tốc độ do tải phần cứng
    • Cold start, xử lý prompt đầu tiên (cache miss), và chi phí đầu tư phần cứng ban đầu cao
  • Khi đã quen LM Studio, bạn có thể dùng trực tiếp Llama.cpp mà không cần GUI. Phần lớn harness đều hỗ trợ endpoint tùy chỉnh nên có thể tích hợp với LLM cục bộ

Phương án thay thế bằng mô hình miễn phí trên OpenRouter

  • OpenRouter là dịch vụ API và định tuyến hợp nhất, phơi bày hàng trăm mô hình qua một endpoint và một tài khoản duy nhất
  • Copilot·Zed·Pi đều hỗ trợ OpenRouter native, chỉ cần cấp API token là kết nối được
    • Để tránh chi phí bùng nổ, hãy tạo guardrail tùy chỉnh với trần $1/tháng rồi chỉ thêm các mô hình miễn phí vào allowlist
    • Khi tạo API key mới, nên đặt max credit = 0
  • Nhược điểm: prompt và dữ liệu có thể bị dùng cho huấn luyện (có thiết lập ZDR), cần kết nối Internet, và OpenRouter có thể ngừng cung cấp mô hình miễn phí
  • Ưu điểm: không cần tải và cấu hình cục bộ, máy tính cũng không bị chậm đi trong lúc dùng
  • Cập nhật 2026-06-09

    • Chuyển sang dùng Deepseek V4 Pro. Hiệu năng gần tương đương Claude Opus 4.8 nhưng có context window lớn hơn 5 lần, giá rẻ hơn khoảng 17~86 lần
    • Giá giữa Pi và OpenRouter từng chênh khoảng 3 lần vì OpenRouter gửi yêu cầu tới endpoint đắt hơn (GMICloud)
    • Tác giả mở tài khoản Deepseek trực tiếp để dùng cho tác vụ phức tạp. Với tác vụ đơn giản, hiểu cách hệ thống vận hành, hoặc khi ưu tiên quyền riêng tư, mô hình cục bộ vẫn là lựa chọn số một

3 bình luận

 

Cuối cùng thì kết luận là đang dùng model cục bộ rồi vẫn chuyển sang deepseek v4 pro.
Việc cứ phải đổi model mỗi lần làm việc cũng không hề dễ, nên chính sách dùng local cho các tác vụ đơn giản cũng khá khó duy trì.

 
kirinonakar 1 giờ trước

Không nhất thiết phải là local, vì cũng có nhiều lựa chọn đăng ký thay thế giá rẻ như opencode, ollama, cursor, v.v.

 
kurthong 2 giờ trước

Trong thời đại LLM cỡ lớn, tôi đang tự tạo plugin để dùng cho phù hợp. Tôi cũng từng giới thiệu một lần ở GN SHOW, và có vẻ việc tự làm rồi dùng theo đúng nhu cầu như thế này cũng là một cách hay.

https://github.com/hang-in/tunaLlama