17 điểm bởi GN⁺ 15 ngày trước | 1 bình luận | Chia sẻ qua WhatsApp
  • Gemma 4 sử dụng kiến trúc mixture-of-experts, chỉ kích hoạt một phần tham số nên hỗ trợ suy luận hiệu năng cao ngay cả trên phần cứng cấu hình thấp
  • LM Studio 0.4.0 giới thiệu Headless CLI (llmster) mới, cho phép tải model, nạp model, trò chuyện và chạy API server mà không cần ứng dụng desktop
  • Thông qua API tương thích OpenAI và Anthropic, có thể cung cấp Gemma 4 dưới dạng máy chủ cục bộ và dùng Claude Code như một trợ lý lập trình hoàn toàn ngoại tuyến
  • Có thể tinh chỉnh phần cứng chi tiết như độ dài ngữ cảnh, GPU offloading, yêu cầu song song để cân bằng hiệu năng và hiệu quả bộ nhớ
  • Suy luận cục bộ dựa trên model MoE cho phép review mã và thử nghiệm prompt nhanh mà không tốn chi phí API, đồng thời đang nổi lên như công nghệ cốt lõi để xây dựng môi trường AI ngoại tuyến cho lập trình viên

Chạy Google Gemma 4 cục bộ — tích hợp Headless CLI mới của LM Studio với Claude Code

  • Vì sao cần chạy cục bộ

    • API AI trên đám mây có những ràng buộc như chi phí, giới hạn tốc độ, quyền riêng tư, độ trễ mạng
    • Với các tác vụ lặp nhanh như review mã, viết bản nháp, thử nghiệm prompt, chạy model cục bộ có lợi thế hơn
    • Chạy cục bộ mang lại các ưu điểm như chi phí API bằng 0, không có dữ liệu gửi ra bên ngoài, luôn sẵn sàng sử dụng
    • Gemma 4** sử dụng kiến trúc mixture-of-experts (MoE), trong model 26B chỉ kích hoạt 4B tham số nên**có thể chạy hiệu năng cao ngay cả trên phần cứng cấu hình thấp

      • Trên M4 Pro MacBook (48GB) ghi nhận tốc độ sinh 51 token/giây, nhưng trong Claude Code sẽ chậm hơn đôi chút
  • Dòng model Gemma 4

    • Google phát hành Gemma 4 thành 4 dòng model, tối ưu cho nhiều loại phần cứng khác nhau
    • Dòng E (E2B, E4B) dùng Per-Layer Embeddings và hỗ trợ đầu vào âm thanh (nhận diện giọng nói, dịch thuật)
    • Model dense 31B đạt MMLU Pro 85.2%, AIME 2026 89.2%
    • Model 26B-A4B chỉ kích hoạt 8 trong 128 expert (3.8B tham số), nên vận hành với chất lượng cấp 10B ở chi phí cấp 4B
    • Với MMLU Pro 82.6%, AIME 88.3%, model này tiệm cận model dense 31B và cạnh tranh với các model 400B+ ở mức Elo 1441
    • Hỗ trợ ngữ cảnh 256K, đầu vào hình ảnh, function calling, thiết lập chế độ suy luận, rất phù hợp cho suy luận cục bộ
  • Những thay đổi chính của LM Studio 0.4.0

    • llmsterđược giới thiệu như một engine suy luận độc lập, cho phép chạy hoàn toàn bằng CLI mà không cần ứng dụng desktop

      • Thông qua CLI lms, có thể tải model, nạp model, trò chuyện và chạy server
      • Các tính năng chính:
      • llmster daemon: quản lý nạp model và suy luận ở chế độ nền
      • Xử lý yêu cầu song song: xử lý đồng thời nhiều yêu cầu bằng continuous batching
      • Stateful REST API: duy trì lịch sử hội thoại qua endpoint /v1/chat
      • Tích hợp MCP: hỗ trợ Model Context Protocol cục bộ
  • Cài đặt và tải model

    • Lệnh cài đặt:
      curl -fsSL https://lmstudio.ai/install.sh | bash
      
    • Khởi chạy daemon: lms daemon up
    • Cập nhật runtime: lms runtime update llama.cpp, lms runtime update mlx
    • Tải model Gemma 4 26B: lms get google/gemma-4-26b-a4b
    • Lượng tử hóa mặc định là Q4_K_M (17.99GB)
    • Sau khi tải xong, nạp bằng lms load google/gemma-4-26b-a4b
  • Quản lý model cục bộ

    • Xem danh sách model đã cài: lms ls
    • Ví dụ đầu ra gồm Gemma 4, Qwen 3.5, GLM 4.7 Flash cùng nhiều model MoE khác
    • Model MoE chỉ dùng một phần tham số được kích hoạt, nên suy luận hiệu quả hơn
  • Chạy hội thoại và hiệu năng

    • Bắt đầu trò chuyện: lms chat google/gemma-4-26b-a4b --stats
    • Ví dụ đầu ra:
      Tokens/Second: 51.35
      Time to First Token: 1.551s
      
    • 51 tok/giây, 1.5 giây phản hồi đầu tiên là đủ nhanh cho tương tác
  • Kiểm tra trạng thái model và bộ nhớ

    • Xem model đang được nạp: lms ps
    • Ví dụ: dùng 17.99GB bộ nhớ, ngữ cảnh 48K, 2 yêu cầu song song, TTL 1 giờ
    • Các mục chính có thể xem từ đầu ra JSON (lms ps --json | jq):
      • "architecture": "gemma4"
      • "quantization": {"name": "Q4_K_M", "bits": 4}
      • "vision": true, "trainedForToolUse": true
      • "maxContextLength": 262144, "parallel": 2
  • Ước tính bộ nhớ theo độ dài ngữ cảnh

    • Có thể dự đoán nhu cầu bộ nhớ bằng tùy chọn --estimate-only
    • Model cơ bản cần khoảng 17.6GiB, và cứ mỗi lần gấp đôi ngữ cảnh sẽ tăng thêm 3~4GiB
    • Với ngữ cảnh 48K cần khoảng 21GiB, còn 256K là 37.48GiB
    • Ví dụ lệnh:
      lms load google/gemma-4-26b-a4b --estimate-only --context-length 48000
      
    • Quan hệ tuyến tính giữa độ dài ngữ cảnh và bộ nhớ rất hữu ích cho việc lên kế hoạch dung lượng
  • Tinh chỉnh nạp model theo phần cứng

    • Độ dài ngữ cảnh

      • Thiết lập trong giới hạn bộ nhớ sau khi trừ phần dùng cho hệ điều hành (4~6GB)
      • Ví dụ: lms load google/gemma-4-26b-a4b --context-length 128000
    • GPU offloading

      • Apple Silicon dùng kiến trúc bộ nhớ hợp nhất, có thể dùng toàn bộ GPU với --gpu=1.0
      • Trên hệ thống NVIDIA, có thể chia theo giới hạn VRAM bằng --gpu=0.5 v.v.
    • Yêu cầu song song

      • Có thể xử lý nhiều yêu cầu đồng thời bằng continuous batching
      • Trong GUI có thiết lập Max Concurrent Predictions (mặc định 4)
      • Với Gemma 4, trên hệ thống 48GB thì ngữ cảnh 48K và song song 2 là phù hợp
    • Tự động unload theo TTL

      • --ttl 1800 sẽ tự giải phóng sau 30 phút không hoạt động
      • Mặc định là 1 giờ, có thể vô hiệu hóa bằng 0 hoặc -1
    • Lưu giá trị mặc định theo từng model

      • Trong ứng dụng desktop, tại My Models → biểu tượng cài đặt, có thể lưu mặc định cho GPU, ngữ cảnh, Flash Attention
    • Speculative Decoding

      • Với model MoE thì không hiệu quả, nên khuyến nghị tắt cho Gemma 4
      • Kết quả thử nghiệm Mixtral cho thấy tác vụ code tăng 39%, nhưng tác vụ toán giảm 54%
    • Flash Attention

      • Giúp giảm bộ nhớ KV cache, hỗ trợ ngữ cảnh dài hơn
      • Trên Apple Silicon, bật tính năng này có thể tiết kiệm bộ nhớ
  • Ứng dụng desktop LM Studio

    • GUI trực quan hóa trạng thái server, nạp model, API endpoint, luồng log
    • Bao gồm giao thức Anthropic (POST /v1/messages)
    • Có thể phân tích hình ảnh với tính năng vision
    • Ví dụ: khi phân tích hình ảnh Timezone Scheduler, model sinh 504 token với tốc độ 54.51 tok/giây
    • Kết quả theo dõi hệ thống:
      • Bộ nhớ dùng 46.69GB/48GB, swap 27.49GB
      • GPU sử dụng 90%, CPU 91°C, GPU 92°C
      • Công suất 23.56W (CPU 11.06W, GPU 13.32W)
    • Nhờ kiến trúc bộ nhớ hợp nhất, không cần sao chép dữ liệu giữa CPU và GPU
  • Cung cấp model dưới dạng API server

    • Khởi động server: lms server start
    • API tương thích OpenAI: http://localhost:1234/v1
    • Endpoint tương thích Anthropic: POST /v1/messages
    • Đổi cổng: --port 8080
    • JIT model loading cho phép tự động nạp khi có yêu cầu và tự động unload sau TTL
    • Luồng log thời gian thực: lms log stream --source model --stats
    • Có thể truy cập từ các thiết bị khác trong cùng mạng, đồng thời hỗ trợ xác thực bằng API token
  • Tích hợp với Claude Code

    • Có thể chạy Claude Code với model cục bộ thông qua endpoint tương thích Anthropic
    • Thêm hàm claude-lm vào ~/.zshrc:
      export ANTHROPIC_BASE_URL=http://localhost:1234
      export ANTHROPIC_MODEL="gemma-4-26b-a4b"
      ...
      claude "$@"
      
    • Mọi lời gọi model trong Claude Code (Opus, Sonnet, Haiku) đều được định tuyến tới Gemma 4
    • Thiết lập ngữ cảnh 48K, giới hạn đầu ra 8K token, môi trường chỉ dùng cục bộ
    • Khi chạy claude-lm, có thể dùng trợ lý lập trình hoàn toàn ngoại tuyến
    • Tốc độ chậm hơn đám mây, nhưng phù hợp cho review mã, chỉnh sửa nhỏ, công việc khám phá
  • Bài học chính

    • Model MoE là cốt lõi của suy luận cục bộ: Gemma 4 26B-A4B mang lại chất lượng cấp 10B với chi phí cấp 4B
    • Headless daemon cho phép workflow hoàn toàn dựa trên CLI
    • Độ dài ngữ cảnh là biến số chính ảnh hưởng đến mức dùng bộ nhớ
    • --estimate-only giúp tránh OOM
    • Endpoint tương thích Anthropic giúp chạy Claude Code hoàn toàn ngoại tuyến trên máy cục bộ
  • Hạn chế

    • lms chat không hiển thị trực tiếp tên model
    • Ngữ cảnh mặc định 48K khá bảo thủ, nên mở rộng nếu còn dư bộ nhớ
    • Chạy Claude Code cục bộ không thể thay thế hoàn toàn Anthropic API, vẫn có hạn chế với tác vụ quy mô lớn
    • Trên hệ thống 48GB sẽ xảy ra áp lực bộ nhớ và dùng swap, nên khuyến nghị từ 64GB trở lên
  • Bước tiếp theo

    • Dự kiến thử nghiệm so sánh với Qwen 3.5 35B, GLM 4.7 Flash, Nemotron 3 Nano
    • Tóm tắt quy trình chạy:
      curl -fsSL https://lmstudio.ai/install.sh | bash
      lms daemon up
      lms get google/gemma-4-26b-a4b
      lms chat google/gemma-4-26b-a4b --stats
      
    • Tích hợp Claude Code: thêm hàm claude-lm rồi chạy claude-lm
    • Có thể dùng để xây dựng workflow AI cục bộ và tích hợp vào ứng dụng web hoặc môi trường phát triển

1 bình luận

 
Ý kiến trên Hacker News
  • Có thể chạy LLM cục bộ bằng cách dùng trực tiếp llama.cpp server và tận dụng nó trong Claude Code hoặc các CLI agent khác
    Đã tổng hợp hướng dẫn thiết lập đầy đủ để thử các LLM open-weight mới nhất như Gemma4 trên MacBook M1 Max 64GB
    Mô hình 26BA4B là lựa chọn thú vị nhất trên phần cứng này, cho tốc độ sinh token (40 tok/s) gần gấp đôi so với Qwen3.5 35BA3B
    Tuy nhiên kết quả benchmark tau2 thấp hơn các biến thể Qwen (68% so với 81%), nên được dự đoán là không phù hợp với các tác vụ phức tạp thiên về công cụ

    • Không rõ có gặp vấn đề xung đột đặc tả giữa Anthropic và OpenAI trong Claude Code hay không
      Tôi đang dùng mlx_vlm và vMLX nhưng Claude Code báo lỗi 400 Bad Request
      Muốn hỏi liệu với llama-server có gặp vấn đề đó không
  • Tôi cảm thấy các mô hình cục bộ giờ đã vượt qua mức chỉ “có thể dùng”, mà bước sang giai đoạn dùng thoải mái
    Đặc biệt ấn tượng với quy trình LM Studio headless. Nó giúp tận dụng suy luận cục bộ trong các công cụ thực tế
    Tôi đang phát triển một CLI coding agent mã nguồn mở tên là cloclo, hỗ trợ nhiều backend như LM Studio, Ollama, vLLM, Jan, llama.cpp
    Mô hình cục bộ đang tiến gần tới tổ hợp lý tưởng: riêng tư và rẻ cho nhu cầu hằng ngày, còn mô hình đám mây dành cho các tác vụ hiệu năng cao

    • Tôi tò mò cloclo khác pi-mono ở điểm nào
  • Điểm cốt lõi ở đây không phải bản thân Gemma 4, mà là harness và mô hình đã được tách rời hoàn toàn
    Claude Code, OpenCode, Pi, Codex đều có thể hoạt động với bất kỳ backend nào
    Nói cách khác, coding agent đang dần trở thành một lớp phổ dụng, và trọng tâm cạnh tranh đang chuyển sang chất lượng mô hình và chi phí
    Điều này tốt cho người dùng, nhưng là mối đe dọa với các công ty từng dựa vào harness

    • Tôi lại nghĩ ngược lại. Chính mô hình mới đang dần phổ dụng, còn harness và tooling mới là yếu tố then chốt tạo ra cải thiện hiệu năng thực tế
      Ví dụ, ngay trong bài “Improving 15 LLMs at Coding in One Afternoon”, chỉ cần thay harness cũng đã có cải thiện lớn
    • Thực ra từ trước cũng đã có thể nối Claude Code hoặc OpenCode trực tiếp tới một local HTTP endpoint
  • Có thể chạy rất đơn giản bằng lệnh ollama launch claude --model gemma4:26b

    • Nếu không tăng kích thước context window thì tính năng gọi công cụ sẽ không hoạt động
    • Điều đáng ngạc nhiên là chỉ cần cài ollama và claude là đã chạy được đơn giản như vậy
    • Nhưng trong trường hợp của tôi thì không chạy được. Claude rơi vào vòng lặp vô hạn và không phản hồi
      Nemotron, glm, qwen 3.5 đều hoạt động tốt, chỉ có gemma là gặp vấn đề
  • Cách tiếp cận này có vẻ cũng hữu ích cho tự động hóa kiểm thử phần mềm web
    Selenium hay Puppeteer rất dễ bị hỏng test nếu thiết kế web thay đổi dù chỉ một chút
    Trong khi đó các mô hình kiểu này có thể thích nghi với thay đổi nên có thể cho ra kiểm thử linh hoạt hơn
    Đặc biệt có vẻ ngay cả mô hình nhỏ cũng đủ dùng

  • Trên thực tế, MoE không giúp tiết kiệm (V)RAM
    Toàn bộ trọng số vẫn phải thường trú trong bộ nhớ, chỉ là mỗi lần suy luận chỉ dùng một phần trong số đó
    Vì vậy tok/s có thể được cải thiện, nhưng mức dùng VRAM thì không đổi

    • Lúc đầu tôi cũng nhầm chỗ này. Các expert không hoạt động thì bỏ qua phần tính toán, nhưng vẫn phải được nạp trong bộ nhớ
      Tài liệu trực quan này giúp hiểu rõ hơn
    • Trong một số inference engine, có thể offload một phần expert sang CPU RAM
      Ví dụ có thể chạy MoE 35B tham số với GPU 12GB VRAM + 16GB RAM
    • Không nhất thiết phải giữ toàn bộ trọng số trong bộ nhớ cùng lúc
      Có thể hoán đổi và nạp theo nhu cầu từ RAM, đĩa, mạng, v.v.
      MoE giúp giảm lượng dữ liệu phải thay thế ở bước suy luận tiếp theo
  • Tôi đang dùng Claude Code làm giao diện chính cho các tác vụ lặp lại trong pipeline dữ liệu
    Cụ thể là chuẩn hóa công bố quy định của chính phủ (XBRL) rồi cung cấp qua REST và MCP
    MCP là phần thú vị: thay vì gọi trực tiếp client, ta khai báo công cụ theo kiểu khai báo và để mô hình quyết định khi nào cần gọi
    Ví dụ một truy vấn như “so sánh xu hướng đòn bẩy 10 năm của công ty này với mức trung bình ngành” sẽ tự động được tách thành chuỗi gọi công cụ phù hợp
    Tuy vậy, trong sử dụng MCP theo kiểu hội thoại thì độ trễ (latency) nhạy cảm hơn nhiều
    Phản hồi 2 giây thì ổn trong script, nhưng lại phá vỡ nhịp hội thoại
    Vì thế tôi cache các bảng thường dùng trong bộ nhớ để đạt phản hồi dưới 100ms
    Không biết người khác có gặp các ngưỡng độ trễ như vậy không

    • Tôi cũng thấy MCP hữu ích, nhưng mức tiêu thụ token có thể tăng rất cao
      Với cách triển khai đơn giản, nó có thể tốn thêm hàng chục nghìn token so với cùng một chức năng
      bài giải thích của Anthropic, nhưng tài liệu này đã hơi cũ
    • Theo kinh nghiệm của tôi, 300~500ms cho mỗi lần gọi công cụ là giới hạn trên tự nhiên
      Vượt quá mức đó thì các chuỗi nhiều bước sẽ chậm đi, và mô hình bắt đầu thêm suy luận không cần thiết khiến ngữ cảnh phình to
      Ngoài cache, chiến lược giảm số lượt gọi qua lại bằng cách trả nhiều dữ liệu trong một lần cũng rất hiệu quả
  • Chia sẻ cách thiết lập Gemma 4 26B trên macOS làm suy luận cục bộ cho Claude Code

    • Tôi nghĩ đây là một bản tổng hợp rất tốt
  • Về sau, các viện nghiên cứu AI lớn có thể cũng sẽ vận hành song song LLM cục bộ để giảm tải cho đám mây, và chỉ xử lý các phép tính nặng trên cloud

    • Nhưng tôi tự hỏi liệu điều đó có xung đột với mô hình kinh doanh của họ hay không
  • Tôi tò mò Gemma 4 hoạt động tốt tới mức nào trong các tác vụ lập trình kiểu agent, và ấn tượng thực tế ra sao