Google phát hành Gemma 4 12B vào ngày 3 tháng 6 năm 2026, nằm đúng vào vị trí mà hầu hết lập trình viên chạy local mong muốn: đủ lớn để suy luận tốt, đủ nhỏ để chạy trên chiếc laptop bạn đã có sẵn.

Điểm nhấn là kích thước tầm trung mới. Dòng Gemma 4 trước đây chỉ có một mô hình edge nhỏ và bản flagship 26B, với khoảng trống ở giữa. Bản 12B lấp đầy khoảng trống đó. Google cho biết benchmark của nó tiệm cận mô hình 26B trong khi dùng chưa đến một nửa bộ nhớ, và toàn bộ nằm gọn trong mức 16GB mà hầu hết Mac đời mới và GPU tầm trung đều đáp ứng được.

Bài viết này sẽ điểm qua những thay đổi ở biến thể 12B, sau đó hướng dẫn từng bước chạy bằng Ollama và kết nối vào OpenCode làm trợ lý lập trình local, riêng tư.

Có gì mới trong Gemma 4 12B

  • 12 tỷ tham số, nằm giữa mô hình edge E4B và bản flagship Mixture-of-Experts 26B.
  • Đầu vào multimodal nguyên bản. Text, vision và audio đi vào cùng một mô hình. Kiến trúc không dùng encoder: hình ảnh chạy qua một module embedding nhẹ, còn audio thô được chiếu thẳng vào không gian token text. Ít thành phần hơn so với việc gắn thêm một vision encoder riêng.
  • Khả năng suy luận tiệm cận mô hình 26B. Google báo cáo hiệu suất benchmark của bản 12B gần bằng biến thể 26B, với mức dùng bộ nhớ chưa đến một nửa.
  • Multi-Token Prediction (MTP) drafters giúp giảm độ trễ, rất có ích cho các phiên tương tác khi bạn phải chờ từng token.
  • Được thiết kế cho agentic workflows, vì vậy tool-calling và các vòng lặp code nhiều bước là ưu tiên hàng đầu chứ không phải tính năng thêm vào sau.
  • Giấy phép Apache 2.0. Được phép dùng cho mục đích thương mại, fine-tuning và phân phối lại. Dòng Gemma 4 hiện đã vượt 150 triệu lượt tải xuống.

Weights có trên Hugging Face và Kaggle, với hỗ trợ từ ngày đầu trên Transformers, llama.cpp, MLX, SGLang và vLLM. Ollama được xây trên llama.cpp và GGUF, nên bản 12B chạy trên đó tương tự các mô hình Gemma 4 trước đây.

Gemma 4 12B so với phần còn lại của dòng

Biến thểPhù hợp nhất choBộ nhớ
E4B (edge)Điện thoại, thiết bị nhúng và ứng dụng on-deviceTối thiểu
12B (mới)Lập trình local kèm vision/audio trên laptop16GB+
26B MoE (flagship)Suy luận chuyên sâu hơn, xử lý nhiều file lớn24GB+

Nếu bạn dùng máy cấu hình nhẹ hơn hoặc chỉ muốn mô hình mặc định nhỏ hơn, bài hướng dẫn cài đặt Gemma 4 + Ollama + OpenCode trước đó vẫn áp dụng được. Bản 12B là bản nâng cấp đáng chọn khi bạn có dư bộ nhớ và muốn khả năng suy luận mạnh hơn rõ rệt mà không cần nhảy lên 26B.

Bạn cần gì

  • Mac chạy Apple Silicon (M1–M5) với ít nhất 16GB unified memory, hoặc PC với GPU 16GB trở lên
  • Homebrew trên macOS
  • OpenCode đã cài đặt (xem opencode.ai)

Google công bố mức tối thiểu là 16GB. Ở mức đó, bạn có thể chạy bản 12B thoải mái cho công việc hằng ngày. Nếu có 24GB trở lên, các phiên dài và context window lớn không còn là nỗi lo.

Bước 1: Cài đặt Ollama

Trên macOS:

brew install --cask ollama-app
open -a Ollama

Trên Linux:

curl -fsSL https://ollama.com/install.sh | sh

Đợi biểu tượng trên menu bar (macOS) hoặc service khởi động, sau đó xác nhận server đã chạy:

ollama list

API local chạy tại http://localhost:11434.

Bước 2: Pull Gemma 4 12B

ollama pull gemma4:12b

Với quantization 4-bit mặc định, file tải xuống khoảng 8GB. Kiểm tra xem đã tải xong chưa:

ollama list
# NAME             ID              SIZE      MODIFIED
# gemma4:12b       ...             ~8 GB     ...

Chạy một bài test nhanh:

ollama run gemma4:12b "Write a small TypeScript function that debounces a callback"

Xác nhận GPU đang đảm nhận công việc:

ollama ps
# Should show a CPU/GPU split, e.g. 12%/88% CPU/GPU

Trên Apple Silicon, các bản Ollama gần đây tự động dùng backend MLX của Apple, nên bạn không cần cấu hình gì thêm để tăng tốc.

Không thấy tag? Gemma 4 12B còn rất mới, nên nếu gemma4:12b chưa có trong registry của Ollama, hãy pull file GGUF chính thức từ Hugging Face và import vào, hoặc cập nhật Ollama (brew upgrade ollama-app) rồi thử lại.

Bước 3: Kết nối Gemma 4 12B với OpenCode

OpenCode đọc cấu hình từ ~/.config/opencode/opencode.jsonc. Thêm Ollama làm provider tùy chỉnh:

{
  "provider": {
    "ollama": {
      "npm": "@ai-sdk/openai-compatible",
      "options": {
        "baseURL": "http://localhost:11434/v1"
      },
      "models": {
        "gemma4:12b": {}
      }
    }
  }
}

Ollama không xác thực key, nhưng OpenCode vẫn yêu cầu một mục auth. Thêm placeholder vào ~/.local/share/opencode/auth.json:

{
  "ollama": {
    "type": "api",
    "key": "ollama"
  }
}

Khởi động lại OpenCode, chạy /models, và chuyển sang ollama/gemma4:12b. Giờ bạn đã có một trợ lý lập trình không bao giờ gửi bất kỳ dòng code nào ra khỏi máy.

Bước 4: Giữ mô hình luôn trong bộ nhớ

Mặc định, Ollama gỡ mô hình khỏi bộ nhớ sau khoảng năm phút không hoạt động, tức là mỗi lần quay lại terminal bạn đều phải chờ cold start. Để giữ mô hình luôn sẵn sàng:

launchctl setenv OLLAMA_KEEP_ALIVE "-1"

Khởi động lại Ollama để áp dụng. Để cài đặt tồn tại qua các lần reboot, thêm dòng này vào ~/.zshrc:

export OLLAMA_KEEP_ALIVE="-1"

Trên biểu tượng Ollama ở menu bar, bạn cũng có thể bật Launch at Login để server sẵn sàng trước khi bạn cần.

Gemma 4 12B xử lý tốt những gì trong OpenCode

Số tham số tăng thêm và MTP drafters thể hiện rõ nhất ở những tác vụ mà trước đây mô hình nhỏ hơn xử lý còn chật vật:

  • Chỉnh sửa nhiều bước. Mô hình giữ được kế hoạch xuyên suốt vài file tốt hơn bản 8B, nên các refactor nhỏ thường thành công ngay từ lần đầu.
  • Giải thích và review code. Hỏi một module làm gì hoặc bug có thể nằm ở đâu, câu trả lời sẽ sắc nét hơn.
  • Boilerplate và scaffolding. Config file, test stub, route handler và tầng CRUD được tạo ra gọn gàng.
  • Đầu vào hình ảnh. Vì bản 12B multimodal, bạn có thể đưa ảnh chụp màn hình hộp thoại lỗi hoặc UI mockup và yêu cầu sửa lỗi hoặc tạo component, mà không cần dựng thêm mô hình vision riêng.

Những điểm còn hạn chế

  • Refactor lớn, xuyên suốt nhiều phần. Các thay đổi phối hợp trên hàng chục file vẫn dễ bị lệch. Bản 12B làm tốt hơn bản 8B, nhưng chưa giải quyết triệt để.
  • Các bài toán debug khó nhất. Bug nằm trải khắp nhiều tầng abstraction hoặc cần kiến thức chuyên sâu là lúc mô hình frontier trên cloud vẫn đáng dùng.
  • Context rất dài trên máy 16GB. Mô hình hỗ trợ context window lớn, nhưng chất lượng giảm khi bộ nhớ bị áp lực trên máy 16GB. Giữ đầu vào vừa phải, hoặc nâng lên 24GB+.

Phương án hybrid: Gemma 4 12B local và mô hình cloud

Cách kết hợp mà nhiều người dùng nhất: dùng local cho 70% công việc thường ngày, cloud cho 30% còn lại. Dưới đây là nguồn cho từng nhóm:

  • haimaker.ai — một API key cho Claude Opus, GPT-5, Gemini Pro và hàng trăm mô hình khác, với giá thống nhất và benchmark để bạn so sánh trước khi chọn mô hình.
  • Ollama — Gemma 4 12B local của bạn, miễn phí và riêng tư, dành cho các phiên chỉnh sửa và đọc code hằng ngày.
  • API provider trực tiếp — nếu bạn chỉ cần một nhà cung cấp cloud duy nhất và muốn tự quản lý key cho từng provider.

Thêm Haimaker cùng Ollama trong OpenCode:

{
  "provider": {
    "ollama": {
      "npm": "@ai-sdk/openai-compatible",
      "options": {
        "baseURL": "http://localhost:11434/v1"
      },
      "models": {
        "gemma4:12b": {}
      }
    },
    "haimaker": {
      "npm": "@ai-sdk/openai-compatible",
      "options": {
        "baseURL": "https://api.haimaker.ai/v1"
      },
      "models": {
        "anthropic/claude-sonnet-4-6": {},
        "openai/gpt-5": {},
        "google/gemini-2.5-pro": {}
      }
    }
  }
}

Thêm key Haimaker vào auth.json:

{
  "ollama": {
    "type": "api",
    "key": "ollama"
  },
  "haimaker": {
    "type": "api",
    "key": "YOUR_HAIMAKER_API_KEY"
  }
}

Dùng Gemma 4 12B cho việc nhanh, rồi chuyển sang Sonnet hoặc GPT-5 bằng lệnh /models khi tác vụ trở nên khó. Hóa đơn cloud của bạn sẽ giảm xuống chỉ còn một phần nhỏ so với chạy mọi thứ trên mô hình frontier. Để không phải chuyển đổi thủ công, auto-router của Haimaker có thể phát hiện độ phức tạp của tác vụ và chọn mô hình cho bạn.

Đăng ký tại haimaker.ai và xem toàn bộ danh mục mô hình.

LẤY HAIMAKER API KEY

Xử lý sự cố

Provider không hiện trong /models. Khởi động lại OpenCode sau khi sửa cấu hình. OpenCode không tải lại opencode.jsonc khi đang chạy.

“Model not found.” Chạy ollama list và khớp chính xác model ID, thường là gemma4:12b. Nếu tag chưa có trong registry, xem ghi chú ở Bước 2 về cách import GGUF từ Hugging Face.

Lỗi xác thực với Ollama. Placeholder "key": "ollama" trong auth.json là đủ. OpenCode chỉ cần mục đó tồn tại.

Phản hồi chậm. Đảm bảo bạn đang dùng bản Ollama gần đây để có tăng tốc MLX trên Apple Silicon (ollama --version). Đóng các ứng dụng ngốn bộ nhớ. Trên máy 16GB, vài tab trình duyệt chạy video có thể đẩy máy vào trạng thái swap.

Chất lượng giảm với prompt dài. Đó là do áp lực bộ nhớ trên máy 16GB. Giữ đầu vào context ở mức vừa phải, hoặc nâng lên 24GB+ để có dư bộ nhớ.

Các lệnh Ollama hữu ích

LệnhMô tả
ollama listLiệt kê các mô hình đã tải
ollama psHiển thị mô hình đang chạy và mức sử dụng bộ nhớ
ollama run gemma4:12bChat tương tác
ollama stop gemma4:12bGỡ mô hình khỏi bộ nhớ
ollama pull gemma4:12bCập nhật lên phiên bản mới nhất
ollama rm gemma4:12bXóa mô hình

Tóm lại

Gemma 4 12B là mô hình local mà nhiều người chờ đợi: multimodal, theo giấy phép Apache, và đủ mạnh để gánh phần lớn công việc lập trình hằng ngày trên laptop 16GB. Chạy nó qua Ollama, trỏ OpenCode vào, và bạn có một trợ lý riêng tư cho công việc thường ngày. Chỉ cần chuyển sang mô hình cloud bằng lệnh /models khi gặp bài toán khó — bạn vẫn giữ được tốc độ và sự riêng tư khi chạy local mà không bị giới hạn bởi khả năng suy luận của nó.


Mới bắt đầu với các thiết lập local? Hãy bắt đầu với hướng dẫn Gemma 4 + OpenCode cho mô hình mặc định nhỏ hơn, hoặc xem cài đặt Gemma 4 + OpenClaw nếu OpenClaw là agent của bạn. Về giá cloud, xem danh mục mô hình.