TL;DR

Bốn họ engine local trong 2026 phục vụ bốn mục tiêu khác nhau hoàn toàn. Chọn đúng họ trước, rồi mới chọn engine cụ thể bên trong họ đó.

  • Portable local runtimes: llama.cpp, MLC LLM, ONNX Runtime GenAI, OpenVINO - ưu tiên "chạy được ở đây"
  • Apple/unified-memory: MLX và MLX-LM - ưu tiên "tận dụng unified memory của Apple"
  • Consumer CUDA quant engines: ExLlamaV2 và ExLlamaV3 - ưu tiên "ép RTX consumer của tôi chạy nhanh nhất có thể"
  • Production serving: vLLM, SGLang, TensorRT-LLM, TGI, LMDeploy - ưu tiên concurrency, KV cache, batching, cost per token

Bài này tập trung vào ba họ đầu - nhóm phục vụ local AI và consumer hardware.

llama.cpp - Vua portability

llama.cpp là câu trả lời khi hardware bất thường, bị giới hạn, offline, nặng về CPU, hoặc không phải datacenter NVIDIA ngăn nắp.

Engine này hỗ trợ: Apple Silicon qua ARM NEON, Accelerate và Metal; x86 qua AVX/AVX2/AVX512/AMX; RISC-V; CUDA; AMD qua HIP; MUSA; Vulkan; SYCL; và CPU+GPU hybrid offload. Đây là lý do llama.cpp chiếm lane "just make it run".

HTTP server của llama.cpp không phải là một "toy local runner". llama-server cung cấp: OpenAI-compatible routes, Anthropic Messages API compatibility, reranking, continuous batching, multimodal support, JSON schema constraints, function calling, speculative decoding và web UI. Trên CPU, Llama 7B đạt 15-30 tok/s với i9 hay M2 - đủ dùng cho nhiều tác vụ.

Giới hạn quan trọng: llama.cpp không phải cho production multi-node serving. RPC backend được ghi rõ là proof-of-concept, dễ vỡ và không an toàn. Đừng dùng với multi-GPU production.

Dùng llama.cpp khi: portability, offline operation, GGUF, hoặc hybrid offload quan trọng hơn fleet-scale serving. GGUF format do llama.cpp tạo ra nay đã trở thành chuẩn quantized model trên toàn ngành - hầu hết model HuggingFace đều có phiên bản GGUF.

Phiên bản build b9222 (May 2026) dùng MIT license. Cài qua brew, winget, nix, Docker hoặc binary sẵn.

MLX và MLX-LM - Vũ khí Apple Silicon

MLX là array framework của Apple dành riêng cho Apple Silicon. MLX-LM là package LLM xây trên MLX. Đây là ML stack Mac-first.

Sự khác biệt cốt lõi: unified memory. Apple Silicon cho phép CPU và GPU trực tiếp truy cập cùng một memory pool. MLX arrays sống trong unified memory - bạn chọn device khi run operation, không phải khi tạo tensor. Không có chi phí copy memory CPU↔GPU như trên discrete GPU.

Điều này thay đổi bài toán tradeoff local inference. Trên discrete GPU: "Model có fit trong VRAM không?" Trên Mac M-series với unified memory lớn: "Model có fit trong memory không, và memory system có feed GPU đủ nhanh không?" Model quantized lớn có thể fit trên máy mà model đó không thể dùng trên consumer GPU 24GB.

Tuy nhiên, unified memory bandwidth (819 GB/s trên M3 Ultra) thấp hơn HBM của H100 (3,35 TB/s) - đây là capacity win, không phải bandwidth win. MLX phù hợp cho research, fine-tuning và local inference chất lượng cao, không phải high-concurrency serving.

MLX-LM bổ sung: Hugging Face Hub integration, quantization, LoRA và full fine-tuning, distributed inference. mlx-community trên HuggingFace có hơn 4.316 model đã convert sẵn.

MLX không còn chỉ dành cho Mac: đã có CUDA và CPU-only packages cho Linux. Với macOS 26.2+, MLX tận dụng Neural Accelerators trong M5 chip - đạt speedup TTFT lên đến 4 lần so với M4.

Lưu ý: MLX-LM server tự cảnh báo không khuyến khích cho production. Dùng cho Mac-first ML workflows; nếu cần high-concurrency public serving, dùng production stack thực sự.

ExLlamaV2 - Consumer CUDA đơn GPU

ExLlamaV2 là engine CUDA local cho những ai muốn consumer NVIDIA GPU vượt khung trọng lượng của nó.

Engine hỗ trợ: paged attention, dynamic batching, prompt caching, KV cache deduplication, batched generation, streaming và speculative decoding. Format quantization chủ lực là EXL2 - cho phép mix các mức bit (2 đến 8 bit) trong cùng một model, ưu tiên bit cao hơn cho các layer quan trọng hơn.

Con số thực tế trên RTX 4090:

  • Llama2 7B EXL2 3.0bpw: 257 tok/s
  • Llama2 70B EXL2 2.5bpw: 38 tok/s
  • TinyLlama 1.1B EXL2 3.0bpw: 656 tok/s

Không engine nào - vLLM, llama.cpp, Ollama - match được tốc độ ExLlamaV2 trên INT4 quantized models ở consumer card.

So sánh quantization tiers cho model 70B - EXL3 1.6bpw fit trong 16GB VRAM

Dùng tốt nhất cho: một RTX 3090/4090/5090, local coding assistant, local chat, EXL2 quantized models.

Lưu ý: ExLlamaV2 hiện archived - development tiếp tục ở ExLlamaV3. API server chính thức là TabbyAPI (OpenAI-compatible).

ExLlamaV3 - Multi-GPU consumer và frontier

ExLlamaV3 là successor đang active (v0.0.34, May 9, 2026) - mở rộng philosophy của V2 sang multi-GPU và MoE local inference.

Điểm nổi bật:

  • EXL3 format dựa trên QTIP-Cornell: hỗ trợ 2-8 bit với mixed precision. "Llama-3.1-70B-EXL3 coherent ở 1.6bpw" - fit model 70B vào dưới 16GB VRAM với output layer 3bpw và cache 4096 token.
  • Quantize trực tiếp trên RTX 4090: EXL3 dùng fused Viterbi kernel, tính Hessians on-the-fly, convert xong trong vài giờ cho model 70B trên một RTX 4090. So sánh: AQLM quantize model 70B mất ~720 GPU-hours trên A100, tốn ~850 USD.
  • Tensor-parallel và expert-parallel cho consumer hardware - chạy được 2-4 RTX đồng thời
  • TabbyAPI OpenAI-compatible server
  • Continuous dynamic batching
  • Multimodal support

V3 phù hợp khi bạn có 2-4 consumer NVIDIA GPU hoặc muốn chạy MoE model local. Kỳ vọng rough edges: một số model chưa hỗ trợ tensor hoặc expert parallelism trong ExLlamaV3.

Verdict: ExLlamaV2 là engine CUDA local cho enthusiast. ExLlamaV3 là frontier cho multi-GPU consumer setup. Đổi lấy rough edges để có capability cao hơn.

Kết: Chọn engine phù hợp với setup của bạn

Bốn dòng quyết định ngắn gọn cho local AI:

  • CPU-only server → llama.cpp
  • MacBook / Mac Studio → MLX / MLX-LM (local dev) + llama.cpp (GGUF portability)
  • Một RTX 3090/4090/5090 → ExLlamaV2 (nếu muốn tốc độ tối đa) hoặc vLLM (nếu serve nhiều user)
  • 2-4 RTX consumer → ExLlamaV3 (local MoE, multi-GPU quality) hoặc vLLM/SGLang (nếu serving)

Bài tiếp theo đi vào production engines - nơi vLLM, SGLang và TensorRT-LLM chiếm sân khấu, cùng với việc TGI chính thức vào maintenance mode từ March 2026. via Ahmad Osman, ExLlamaV3 GitHub, Apple ML Research.