Serving là lớp biến một tệp mô hình tĩnh thành một dịch vụ chạy được — nhận yêu cầu, sinh câu trả lời, phục vụ nhiều người. Ba lựa chọn phổ biến: Ollama (dễ nhất, khởi đầu bằng 1 lệnh), vLLM (throughput cao khi nhiều người dùng cùng lúc) và llama.cpp (nhẹ, tốt cho CPU/Apple Silicon). Trên máy Mac (Apple Silicon), MLX, Ollama và LM Studio là các lựa chọn phổ biến để tự chạy; vLLM phù hợp khi dùng máy GPU. Với các gói AI nội bộ trên Mac Studio chip M5, Namtech phục vụ mô hình bằng continuous batching (vllm-metal hoặc oMLX) để nhiều người hỏi cùng lúc. Kết hợp với quantization (GGUF Q4/Q5/Q8) để tiết kiệm bộ nhớ và một API tương thích OpenAI để ứng dụng nội bộ gọi vào. Đây là bài 4/8 trong series tự xây AI nội bộ.
Tóm tắt nhanh
- Serving là gì: phần mềm nạp mô hình và mở một endpoint để nhận yêu cầu — không có nó, mô hình chỉ là tệp nằm trên đĩa.
- Ollama: dễ nhất, cài xong chạy một model bằng đúng một lệnh — hợp cho khởi đầu và bản thử.
- vLLM: tối ưu throughput khi phục vụ đồng thời nhiều người dùng (batching liên tục).
- llama.cpp: nhẹ, chạy tốt trên CPU và Apple Silicon; nền tảng cho định dạng GGUF.
- MLX và LM Studio (cho Mac): MLX là framework machine learning của Apple dành cho Apple Silicon (gói mlx-lm để chạy LLM); LM Studio chạy mô hình cục bộ và có endpoint tương thích OpenAI.
- Quantization: Q4/Q5/Q8 đánh đổi bộ nhớ lấy chất lượng; Q4 thường cân bằng tốt để bắt đầu.
- API tương thích OpenAI: chuẩn hóa endpoint
/v1/chat/completionsđể mọi ứng dụng nội bộ gọi vào như gọi OpenAI.
Chọn công cụ serving: Ollama, vLLM, llama.cpp hay MLX / LM Studio?
Không có công cụ "tốt nhất" tuyệt đối — mỗi cái tối ưu cho một tình huống. Bạn chọn theo số người dùng đồng thời, loại phần cứng và mức độ bạn muốn tự cấu hình.
- Ollama — dễ nhất, khởi đầu bằng 1 lệnh. Cài đặt gọn, quản lý model như quản lý image, mở sẵn API cục bộ. Phù hợp khi bạn cần dựng bản thử nhanh, chạy trên một máy cho một nhóm nhỏ. Ollama sử dụng llama.cpp bên dưới nên chạy tốt cả trên Apple Silicon lẫn máy có GPU.
- vLLM — throughput cao cho nhiều người dùng. Thiết kế để phục vụ đồng thời nhiều yêu cầu với batching liên tục và quản lý bộ nhớ hiệu quả, thường chạy trên GPU. Phù hợp khi hạ tầng là máy GPU và nhiều nhân viên dùng cùng lúc.
- llama.cpp — nhẹ, tốt cho CPU/Apple Silicon. Viết bằng C/C++, phụ thuộc tối thiểu, là engine gốc cho định dạng GGUF. Phù hợp khi bạn muốn kiểm soát sâu, chạy trên máy không có GPU rời, hoặc nhúng vào ứng dụng.
- MLX — framework của Apple cho Apple Silicon. MLX là "array framework for machine learning on Apple silicon" do nhóm nghiên cứu machine learning của Apple phát triển; gói
mlx-lmdùng để chạy LLM và có HTTP server với API tương tự OpenAI chat API. Lưu ý theo tài liệu server của mlx-lm, server này chưa được khuyến nghị cho production vì chỉ có kiểm tra bảo mật cơ bản — nên đặt sau một lớp gateway có xác thực. - LM Studio — chạy mô hình cục bộ, có API tương thích OpenAI. LM Studio cung cấp endpoint tương thích OpenAI, nên ứng dụng nội bộ gọi vào như gọi OpenAI. Phù hợp để thử nhanh nhiều mô hình trên một máy Mac.
| Tiêu chí | Ollama | vLLM | llama.cpp |
|---|---|---|---|
| Độ dễ khởi đầu | Dễ nhất (1 lệnh) | Cần cấu hình hơn | Trung bình (build/CLI) |
| Nhiều người dùng đồng thời | Ổn cho nhóm nhỏ | Mạnh nhất (batching) | Hạn chế hơn |
| Phần cứng hợp nhất | Apple Silicon / GPU | GPU | CPU / Apple Silicon |
| Định dạng model | GGUF (qua llama.cpp) | Chủ yếu trọng số gốc | GGUF |
| Khi nào dùng | Khởi đầu, bản thử | Sản xuất, tải cao | Nhúng, CPU-only |
Cách thực dụng: bắt đầu với Ollama để chứng minh giá trị, rồi khi số người dùng tăng thì cân nhắc chuyển sang vLLM cho throughput. Trên máy Apple Silicon như Mac Studio hay Mac mini, lựa chọn tự nhiên là MLX, Ollama (chạy nền llama.cpp) hoặc LM Studio; vLLM chủ yếu dành cho máy GPU. Xem thêm bài Phần cứng để chọn máy tương ứng.
Quantization — GGUF Q4/Q5/Q8
Quantization là kỹ thuật giảm độ chính xác của trọng số mô hình (ví dụ từ 16-bit xuống 4-bit) để mô hình chiếm ít bộ nhớ hơn và thường chạy nhanh hơn. Định dạng GGUF (dùng bởi llama.cpp và Ollama) đóng gói sẵn các mức lượng tử hóa phổ biến: Q4, Q5, Q8.
- Q4: nén mạnh nhất trong ba mức, tiết kiệm bộ nhớ nhiều nhất — mức phổ biến vì cân bằng tốt giữa dung lượng và chất lượng, thường là điểm khởi đầu hợp lý.
- Q5: nén vừa phải, chất lượng nhích lên so với Q4, đổi lại tốn bộ nhớ hơn một chút.
- Q8: nén nhẹ, giữ chất lượng gần với bản gốc nhất trong ba mức, nhưng tốn bộ nhớ nhiều nhất.
| Mức | Mức nén | Bộ nhớ | Chất lượng (so với bản gốc) | Khi nào dùng |
|---|---|---|---|---|
| Q4 | Mạnh nhất | Ít nhất | Cân bằng tốt giữa dung lượng & chất lượng | Điểm khởi đầu phổ biến, an toàn |
| Q5 | Vừa phải | Nhiều hơn Q4 một chút | Nhích lên so với Q4 | Khi Q4 chưa đạt cho tác vụ quan trọng |
| Q8 | Nhẹ | Nhiều nhất | Gần bản gốc nhất trong ba mức | Khi cần giữ chất lượng cao nhất |
Nguyên tắc chung: quantization càng mạnh → bộ nhớ càng ít, nhưng chất lượng đầu ra có thể giảm dần. Đây là một sự đánh đổi, không phải "miễn phí". Mức độ ảnh hưởng tùy mô hình và tác vụ, nên cách đúng là thử nghiệm trên chính dữ liệu của bạn thay vì tin vào một con số phần trăm cố định. Với đa số doanh nghiệp mới bắt đầu, Q4 là điểm xuất phát an toàn; nếu thấy chất lượng chưa đạt cho tác vụ quan trọng, nâng lên Q5/Q8 hoặc chọn mô hình lớn hơn (xem bài Chọn mô hình).
Context length & concurrency/batching
Hai tham số ảnh hưởng lớn tới bộ nhớ và độ trễ khi phục vụ nhiều người:
- Context length (độ dài ngữ cảnh): số token tối đa mô hình xử lý trong một lượt (prompt + câu trả lời). Ngữ cảnh dài cho phép đưa nhiều tài liệu hơn, nhưng tốn thêm bộ nhớ và có thể làm chậm hơn. Đặt vừa đủ cho tác vụ thay vì bật tối đa "cho chắc".
- Concurrency / batching: để phục vụ nhiều người cùng lúc, engine gộp nhiều yêu cầu và xử lý song song. vLLM nổi bật ở batching liên tục — tăng throughput tổng khi tải cao. Đánh đổi: nhiều yêu cầu đồng thời → cần thêm bộ nhớ, và độ trễ của từng yêu cầu riêng lẻ có thể tăng khi hàng đợi dài.
Nói ngắn gọn: context dài hơn + nhiều người dùng đồng thời hơn = cần nhiều bộ nhớ hơn, và bạn phải cân bằng giữa throughput (tổng lượng phục vụ) và latency (độ trễ mỗi người cảm nhận). Hãy đo trên tải thực tế của bạn để chọn cấu hình phù hợp thay vì phỏng đoán.
API tương thích OpenAI
Điểm mạnh lớn của hệ sinh thái serving hiện nay là hầu hết đều mở một API tương thích OpenAI — cùng dạng endpoint /v1/chat/completions, cùng cấu trúc request/response. Nhờ đó, mọi ứng dụng nội bộ (chat UI, backend, script tự động hóa) có thể gọi vào AI nội bộ y như đang gọi OpenAI, chỉ cần đổi địa chỉ máy chủ (base URL) sang máy on-premise của bạn.
Lợi ích: chuẩn hóa — thư viện, ví dụ mẫu và công cụ sẵn có đều dùng được; và dễ chuyển đổi — nếu sau này đổi engine (Ollama → vLLM) hay đổi model, các ứng dụng gọi vào gần như không phải sửa. Đây cũng là nền để làm bước tiếp theo — RAG — và bước Giao diện & tích hợp.
Xem thêm bài đồng hành: Sơ đồ kiến trúc hệ thống AI nội bộ, Hệ thống bảo mật AI nội bộ và Trending Pool — cập nhật tri thức toàn cầu.
Khởi đầu nhanh nhất — Ollama, chạy một model bằng đúng một lệnh:
# cài Ollama rồi chạy thử một model mã nguồn mở
ollama run qwen3.5:9b # chat ngay trong terminal, 100% offline
Khi cần throughput cao cho nhiều người dùng — vLLM mở một server tương thích OpenAI:
# phục vụ một model qua vLLM (server tương thích OpenAI)
vllm serve <model> # mở endpoint /v1/... trên GPU
Ứng dụng nội bộ gọi vào endpoint tương thích OpenAI — chỉ đổi base URL sang máy on-premise:
# gọi chat completion vào máy chủ nội bộ (tương thích OpenAI)
curl http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model":"qwen3.5:9b","messages":[{"role":"user","content":"Xin chào"}]}'
Góc nhìn Namtech
Namtech triển khai lớp serving cho AI nội bộ chạy 100% tại chỗ trên Apple Silicon — mỗi gói là một máy Mac Studio chip M5 (AI Box: M5 Max 64GB, AI Pro: M5 Max 128GB, AI Enterprise: M5 Ultra 256GB) — dùng engine có continuous batching (vllm-metal hoặc oMLX) để một máy phục vụ nhiều người hỏi cùng lúc, rồi tối ưu quantization và context theo tải thực tế của khách hàng. Chúng tôi luôn chuẩn hóa qua API tương thích OpenAI để ứng dụng nội bộ của bạn không bị khóa vào một engine cụ thể — đổi model hay engine về sau vẫn nhẹ nhàng. Con số tốc độ cụ thể phụ thuộc phần cứng, mô hình và tải, nên chúng tôi đo trực tiếp trên hệ của bạn thay vì hứa những con số chung chung.
Câu hỏi thường gặp
Nên bắt đầu với Ollama hay vLLM?
Hầu hết nên bắt đầu với Ollama vì cài xong chạy một model chỉ bằng một lệnh — nhanh để chứng minh giá trị. Khi số người dùng đồng thời tăng và cần throughput cao trên GPU, cân nhắc chuyển sang vLLM. Cả hai đều mở API tương thích OpenAI nên ứng dụng gọi vào gần như không phải sửa. Nếu chạy trên Mac, MLX và LM Studio cũng là lựa chọn phổ biến bên cạnh Ollama.
Quantization Q4 có làm mô hình kém đi nhiều không?
Quantization là một sự đánh đổi: nén càng mạnh thì tiết kiệm bộ nhớ càng nhiều nhưng chất lượng có thể giảm dần. Q4 phổ biến vì cân bằng tốt và thường là điểm khởi đầu hợp lý. Mức ảnh hưởng tùy mô hình và tác vụ — hãy thử trên chính dữ liệu của bạn; nếu chưa đạt cho tác vụ quan trọng, nâng lên Q5/Q8.
Không có GPU thì chạy AI nội bộ được không?
Được. llama.cpp (và Ollama chạy nền llama.cpp) hoạt động tốt trên CPU và đặc biệt trên Apple Silicon nhờ bộ nhớ hợp nhất; trên Mac còn có MLX của Apple và LM Studio. Tốc độ và cỡ model chạy được sẽ tùy phần cứng — xem bài Phần cứng để chọn cấu hình theo số người dùng.
Trên Mac nên dùng MLX, Ollama hay LM Studio?
Cả ba đều chạy mô hình trên Apple Silicon. Ollama dễ khởi đầu và mở API cục bộ; LM Studio có endpoint tương thích OpenAI và tiện thử nhiều mô hình; MLX là framework của Apple, gói mlx-lm có server với API tương tự OpenAI nhưng tài liệu của mlx-lm ghi server này chưa khuyến nghị cho production. Với các gói AI nội bộ, Namtech dùng engine có continuous batching (vllm-metal hoặc oMLX) và chọn cấu hình theo mô hình, tải thực tế của từng khách hàng.
API tương thích OpenAI nghĩa là gì?
Là engine serving mở endpoint có cùng dạng như API của OpenAI (ví dụ /v1/chat/completions). Nhờ đó ứng dụng nội bộ gọi vào AI on-premise y như gọi OpenAI, chỉ cần đổi base URL sang máy chủ của bạn — không phải viết lại tích hợp.
Muốn có AI nội bộ mà không phải bắt đầu từ số 0?
Namtech triển khai nền tảng AI riêng tư nội bộ — mô hình mã nguồn mở chạy 100% trên hạ tầng của bạn, dữ liệu không rời tổ chức.
Đặt lịch tư vấn miễn phíLưu ý: Bài viết mang tính hướng dẫn tổng quan, cập nhật 02/07/2026, 24/09/2026 (bổ sung MLX, LM Studio cho Apple Silicon) và 01/10/2026 (cập nhật gói Mac Studio M5 và engine continuous batching của Namtech); công cụ và mô hình thay đổi nhanh — hãy kiểm chứng phiên bản mới nhất khi triển khai.