Chạy Gemma 4 trên Apple Silicon đạt tốc độ 85 tok/s chỉ với một lệnh cài đặt

07 tháng 4, 2026·6 phút đọc

Google vừa ra mắt Gemma 4, và giờ đây bạn có thể chạy mô hình này ngay trên máy Mac với tốc độ ấn tượng 85 token/giây. Công cụ Rapid-MLX hỗ trợ đầy đủ tính năng gọi công cụ (tool calling), streaming và API tương thích OpenAI.

Chạy Gemma 4 trên Apple Silicon đạt tốc độ 85 tok/s chỉ với một lệnh cài đặt

Tuần trước, Google đã chính thức phát hành Gemma 4 — dòng mô hình AI mã nguồn mở mạnh mẽ nhất của họ đến nay. Chỉ trong vài giờ, tôi đã có thể chạy Gemma 4 ngay trên máy Mac cá nhân với tốc độ lên tới 85 token/giây, đi kèm đầy đủ tính năng gọi công cụ (tool calling), truyền dữ liệu (streaming) và một API tương thích OpenAI hoạt động với mọi khung AI chính.

Dưới đây là cách thực hiện và những con số hiệu năng thực tế.

Thiết lập: Chỉ với 2 lệnh

pip install rapid-mlx
rapid-mlx serve gemma-4-26b

Chỉ có vậy thôi. Máy chủ sẽ tự động tải xuống mô hình Gemma 4 26B đã được lượng tử hóa 4-bit trên nền tảng MLX (khoảng 14 GB) và khởi động một API tương thích OpenAI tại địa chỉ http://localhost:8000/v1.

Demo Rapid-MLXDemo Rapid-MLX

Đo hiệu năng: Gemma 4 26B trên M3 Ultra

Tôi đã chạy benchmark trên cùng một máy (M3 Ultra, 192GB RAM), cùng một mô hình (Gemma 4 26B-A4B 4-bit) và cùng một câu lệnh (prompt) với ba engine khác nhau:

EngineDecode (tok/s)TTFTGhi chú
Rapid-MLX85 tok/s0.26sNative MLX, có prompt cache
mlx-vlm84 tok/s0.31sThư viện VLM (không có tool calling)
Ollama75 tok/s0.08sBackend llama.cpp

Rapid-MLX nhanh hơn Ollama 13% về tốc độ giải mã (decode). Mặc dù Ollama có tốc độ TTFT nhanh hơn (do sử dụng Metal kernels của llama.cpp cho prefill), nhưng đối với trải nghiệm tương tác thực tế, tốc độ decode mới là yếu tố người dùng cảm nhận rõ nhất.

Với các mô hình nhỏ hơn, khoảng cách hiệu năng còn rộng hơn — Rapid-MLX đạt tới 168 tok/s trên Qwen3.5-4B so với khoảng 70 tok/s của Ollama (gấp 2.4 lần).

Tính năng Gọi Công cụ (Tool Calling) Hoạt động Thực tế

Đây là điểm thú vị nhất. Hầu hết các máy chủ suy luận (inference server) cục bộ hiện nay要么 không hỗ trợ tool calling,要么 chỉ hỗ trợ cho một dòng mô hình duy nhất. Rapid-MLX tích hợp sẵn 18 trình phân tích cú pháp tool call, bao gồm:

  • Qwen 3 / 3.5 (định dạng hermes)
  • Gemma 4 (định dạng gốc <|tool_call>)
  • GLM-4.7, MiniMax, GPT-OSS
  • Llama 3, Mistral, DeepSeek
  • Và nhiều mô hình khác

Tính năng tool calling hoạt động ngay lập tức — không cần cờ (flag) bổ sung nào cho các mô hình được hỗ trợ:

curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "default",
    "messages": [{"role": "user", "content": "Thời tiết ở Tokyo thế nào?"}],
    "tools": [{
      "type": "function",
      "function": {
        "name": "get_weather",
        "description": "Lấy thời tiết cho một thành phố",
        "parameters": {
          "type": "object",
          "properties": {"city": {"type": "string"}},
          "required": ["city"]
        }
      }
    }]
  }'

Kết quả trả về:

{
  "choices": [{
    "message": {
      "tool_calls": [{
        "function": {
          "name": "get_weather",
          "arguments": "{\"city\": \"Tokyo\"}"
        }
      }]
    }
  }]
}

Các đối số của tool call được phân tích cú pháp chính xác — bao gồm cả các giá trị số thô như {a: 3, b: 4} mà Gemma 4 tạo ra mà không có dấu ngoặc kép JSON.

Tương thích với Mọi Nền tảng

Vì nó tương thích với OpenAI, bạn có thể kết nối bất kỳ khung AI nào với nó:

PydanticAI

from pydantic_ai import Agent
from pydantic_ai.models.openai import OpenAIChatModel
from pydantic_ai.providers.openai import OpenAIProvider

model = OpenAIChatModel(
    model_name="default",
    provider=OpenAIProvider(
        base_url="http://localhost:8000/v1",
        api_key="not-needed",
    ),
)

agent = Agent(model)
result = agent.run_sync("2 cộng 2 bằng bao nhiêu?")
print(result.output)  # "4"

Tôi đã xác minh quá trình này từ đầu đến cuối với đầu ra có cấu trúc (output_type=BaseModel), streaming, hội thoại đa vòng và quy trình đa công cụ.

LangChain

from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    model="default",
    base_url="http://localhost:8000/v1",
    api_key="not-needed",
)

# Tool calling hoạt động
from langchain_core.tools import tool

@tool
def multiply(a: int, b: int) -> int:
    """Nhân hai số."""
    return a * b

result = llm.bind_tools([multiply]).invoke("6 nhân 7 bằng bao nhiêu?")
print(result.tool_calls)  # [{"name": "multiply", "args": {"a": 6, "b": 7}}]

Aider (Lập trình cặp với AI)

export OPENAI_API_BASE=http://localhost:8000/v1
export OPENAI_API_KEY=not-needed
aider --model openai/gemma-4-26b

Toàn bộ quy trình chỉnh sửa và commit (edit-and-commit) của Aider hoạt động trơn tru — tôi đã kiểm tra việc sửa đổi một tệp Python bằng Gemma 4.

Danh sách Tương thích Đầy đủ

ClientTrạng tháiGhi chú
PydanticAIĐã kiểm tra (6/6)Streaming, đầu ra cấu trúc, multi-tool
LangChainĐã kiểm tra (6/6)Tools, streaming, đầu ra cấu trúc
smolagentsĐã kiểm tra (4/4)CodeAgent + ToolCallingAgent
Anthropic SDKĐã kiểm tra (5/5)Thông qua endpoint /v1/messages
AiderĐã kiểm traQuy trình edit-and-commit trên CLI
LibreChatĐã kiểm tra (4/4)Docker E2E với librechat.yaml
Open WebUIĐã kiểm tra (3/4)Docker, tải model, streaming
CursorTương thíchCấu hình UI Settings
Claude CodeTương thíchBiến môi trường OPENAI_BASE_URL
Continue.devTương thíchCấu hình YAML

Mọi mục "Đã kiểm tra" đều có kịch bản kiểm thử tự động trong kho lưu trữ — không chỉ là "tôi đã thử một lần".

Nên chạy Mô hình nào?

Phụ thuộc vào lượng RAM của máy Mac bạn:

MacMô hìnhTốc độTrường hợp sử dụng
16 GB MacBook AirQwen3.5-4B168 tok/sChat, lập trình, công cụ
32 GB MacBook ProGemma 4 26B-A4B85 tok/sĐa dụng, gọi công cụ
64 GB Mac Mini/StudioQwen3.5-35B83 tok/sCân bằng thông minh và nhanh
96+ GB Mac Studio/ProQwen3.5-122B57 tok/sTrí tuệ cấp cao nhất

Bạn có thể xem nhanh danh sách bí danh (alias) bằng lệnh:

rapid-mlx models

Cơ chế hoạt động "Bên trong"

Một vài yếu tố giúp hệ thống này hoạt động hiệu quả:

Prompt cache (Bộ nhớ đệm prompt) — Các system prompt lặp lại (thường gặp trong các khung agent) được lưu vào bộ nhớ cache. Trong các cuộc hội thoại đa vòng, chỉ có các token mới được xử lý. Điều này giúp giảm TTFT xuống 2-10 lần ở các tin nhắn tiếp theo.

OutputRouter — Một máy trạng thái cấp token (token-level state machine) tách đầu ra của mô hình thành các kênh (nội dung / lý luận / tool calls) theo thời gian thực. Không cần xử lý hậu kỳ bằng regex, không bị rò rỉ thẻ <think> hay đánh dấu công cụ vào luồng nội dung.

Tự động phát hiện — Họ mô hình, trình phân tích công cụ và trình phân tích lý luận được tự động phát hiện từ tên mô hình. Không cần cờ thủ công như --tool-parser hermes (mặc dù bạn vẫn có thể ghi đè).

Hãy thử ngay

# Homebrew
brew install raullenchai/rapid-mlx/rapid-mlx

# hoặc pip
pip install rapid-mlx

# Phục vụ Gemma 4
rapid-mlx serve gemma-4-26b

# Trỏ bất kỳ ứng dụng tương thích OpenAI nào tới http://localhost:8000/v1

Kho lưu trữ: github.com/raullenchai/Rapid-MLX

Xây dựng dựa trên khung MLX và mlx-lm của Apple. Giấy phép Apache 2.0.

Bài viết được tổng hợp và biên soạn bằng AI từ các nguồn tin tức công nghệ. Nội dung mang tính tham khảo. Xem bài gốc ↗