Ollama là gì? Cách chạy AI offline trên máy tính miễn phí (2026)

AI

Trong bài này
  1. Ollama là gì?
  2. Cần chuẩn bị
  3. Bước 1: Tải Ollama cho đúng hệ điều hành
  4. Bước 2: Cài trên Linux và kiểm tra phiên bản
  5. Bước 3: Chọn model vừa với máy
  6. Bước 4: Bật server và tải model
  7. Bước 5: Xem thông tin model
  8. Bước 6: Hỏi model câu đầu tiên
  9. Bước 7: Tạo model riêng bằng Modelfile
  10. Bước 8: Chạy model vừa tạo
  11. Bước 9: Gọi Ollama qua API
  12. Bước 10: Gọi model từ code Python
  13. Lỗi thường gặp
  14. "Warning: could not connect to a running Ollama instance"
  15. Model chạy rất chậm, chỉ 1–2 token/giây
  16. Model trả lời sai, kể cả câu rất dễ
  17. Model "suy nghĩ" rất lâu mới trả lời
  18. Câu hỏi thường gặp
  19. Ollama có miễn phí không?
  20. Chạy Ollama có cần Internet không?
  21. Laptop sinh viên không có GPU có chạy được không?
  22. Model được lưu ở đâu, xóa thế nào?
  23. Nguồn tham khảo

Trong bài này mình hướng dẫn các bạn cài Ollama, tải một model AI nhỏ về máy, hỏi nó ngay trong terminal, rồi gọi nó từ code Python qua API. Không cần tài khoản, không cần API key, không cần GPU. Toàn bộ các bước và kết quả trong bài là mình chạy thật ngày 09/11/2026 với Ollama 0.40.15 (bản mới nhất lúc viết) và model qwen3.5:0.8b. Nếu mạng ổn thì các bạn làm xong trong khoảng 20–30 phút.

Video demo trên kênh Huy Nguyen - Android A - Z.

Ollama là gì?

Ollama là một công cụ mã nguồn mở (giấy phép MIT) dùng để tải và chạy các model ngôn ngữ lớn ngay trên máy tính của mình. Sau khi cài, Ollama chạy một server nhỏ ở địa chỉ 127.0.0.1:11434. Các bạn có thể hỏi model bằng lệnh ollama run, hoặc gọi server này từ code giống như gọi API của ChatGPT. Theo trang FAQ chính thức, khi chạy local thì Ollama không thấy prompt hay dữ liệu của bạn.

Với sinh viên IT, Ollama giúp thử AI không lo hết lượt và làm đồ án có chatbot mà không phải trả tiền API.

Cần chuẩn bị

  • Máy Windows, macOS hoặc Linux. Với Windows, tài liệu Ollama yêu cầu Windows 10 22H2 trở lên (Home hoặc Pro). Mình test trên Linux, giới hạn 4 nhân CPU và 6 GB RAM, không có GPU.
  • Khoảng 3 GB ổ đĩa trống: gói cài Linux mình tải về nặng 1.543.547.172 byte (khoảng 1,5 GB), model qwen3.5:0.8b chiếm 1,3 GB.
  • Kết nối Internet để tải Ollama và model lần đầu. Sau đó model chạy hoàn toàn trên máy.
  • Python 3 nếu muốn chạy ví dụ gọi API ở bước 10 (chỉ dùng thư viện có sẵn, không cần cài thêm).

Bước 1: Tải Ollama cho đúng hệ điều hành

Vào ollama.com/download, chọn tab macOS, Linux hoặc Windows. Trên Windows, trang đưa sẵn lệnh PowerShell irm https://ollama.com/install.ps1 | iex, ngoài ra có link "Download manually" nếu các bạn muốn tải bộ cài về rồi bấm cài như phần mềm bình thường. Trên Linux, lệnh tương ứng là curl -fsSL https://ollama.com/install.sh | sh.

Trang Download Ollama, tab Windows với lệnh cài irm https://ollama.com/install.ps1 | iex được đóng khung đỏ
Bước 1: chọn tab hệ điều hành và chép lệnh cài.

Bước 2: Cài trên Linux và kiểm tra phiên bản

Mình cài theo cách thủ công trong tài liệu Linux của Ollama: tải file ollama-linux-amd64.tar.zst rồi giải nén. Hướng dẫn chính thức giải nén thẳng vào /usr:

curl -fsSL https://ollama.com/download/ollama-linux-amd64.tar.zst | sudo tar x -C /usr
ollama -v

Ở máy mình, ollama -v in ra cảnh báo "could not connect to a running Ollama instance" vì server chưa chạy. Đây chưa phải lỗi, chỉ cần bật server ở bước 4. Dòng thứ hai cho biết bản cài là 0.40.15.

Terminal tải gói ollama-linux-amd64.tar.zst, liệt kê file ollama và lệnh ollama -v báo client version 0.40.15
Bước 2: tải, giải nén và kiểm tra phiên bản.

Các bạn có thể đối chiếu với trang Releases trên GitHub: v0.40.15 đang được gắn nhãn Latest, phát hành đầu tháng 11/2026.

Trang GitHub Releases của ollama với bản v0.40.15 gắn nhãn Latest
Bước 2: bản v0.40.15 trên GitHub.

Bước 3: Chọn model vừa với máy

Vào ollama.com/library/qwen3.5 để xem các kích thước của họ Qwen 3.5: 0.8b, 2b, 4b, 9b, 27b, 35b, 122b. Số càng lớn thì model càng thông minh nhưng càng nặng: theo trang tags, bản 0.8b tải khoảng 1,0–1,3 GB, bản 2b khoảng 2,7–3,1 GB, bản 9b khoảng 6,6–7,6 GB. Mình chọn 0.8b vì máy test không có GPU và chỉ có 6 GB RAM.

Trang model qwen3.5 trên thư viện Ollama, nhãn kích thước 0.8b được đóng khung đỏ
Bước 3: chọn bản 0.8b cho máy cấu hình thấp.

Bước 4: Bật server và tải model

Trên Linux chạy ollama serve (để ở một terminal riêng hoặc chạy nền). Trên Windows, theo tài liệu chính thức, cài xong Ollama sẽ chạy nền (có biểu tượng ở khay hệ thống) và lệnh ollama dùng được trong cmd hoặc PowerShell. Khi log hiện "Listening on 127.0.0.1:11434" là xong. Tiếp theo tải model:

ollama pull qwen3.5:0.8b
ollama list
Terminal chạy ollama serve, ollama pull qwen3.5:0.8b báo success và ollama list hiện model 1.3 GB
Bước 4: server chạy ở cổng 11434, model tải xong chiếm 1,3 GB.

Bước 5: Xem thông tin model

Lệnh ollama show qwen3.5:0.8b cho biết model có 752,39 triệu tham số, lượng tử hóa Q8_0, độ dài ngữ cảnh tối đa 262.144 token, giấy phép Apache 2.0. Mục Capabilities cho thấy model hỗ trợ đọc ảnh (vision), gọi tool và chế độ "thinking", trong đó thinking được bật mặc định.

Kết quả lệnh ollama show qwen3.5:0.8b với parameters 752.39M, context length 262144, quantization Q8_0
Bước 5: thông số của model qwen3.5:0.8b.

Bước 6: Hỏi model câu đầu tiên

Mình thêm --think=false để model trả lời luôn, không viết phần suy nghĩ, và --verbose để xem tốc độ:

ollama run qwen3.5:0.8b --think=false --verbose "Giải thích ngắn gọn Activity trong Android là gì, trả lời bằng tiếng Việt trong 3 câu."

Model trả lời được bằng tiếng Việt, nhưng có hai vấn đề. Thứ nhất, nội dung có chỗ sai (Activity không "khởi tạo lại trình duyệt web"). Thứ hai, tốc độ chỉ 1,38 token/giây, 100 token mất hơn một phút. Lệnh ollama ps cho thấy model đang dùng 574 MB, chạy 100% trên CPU với ngữ cảnh 4096 token. Nguyên nhân chậm mình giải thích ở mục Lỗi thường gặp.

Terminal ollama run trả lời về Activity với eval rate 1.38 tokens/s được đóng khung đỏ, bên dưới là ollama ps
Bước 6: lần chạy đầu, câu trả lời có chỗ sai và tốc độ chậm.

Bước 7: Tạo model riêng bằng Modelfile

Modelfile là file cấu hình để "đóng gói" model với tham số và lời dặn hệ thống (system prompt) của riêng mình. Mình tạo file tên Modelfile như sau rồi chạy ollama create:

FROM qwen3.5:0.8b
PARAMETER num_thread 4
PARAMETER temperature 0.3
SYSTEM """Bạn là trợ giảng lập trình. Luôn trả lời bằng tiếng Việt, ngắn gọn, có ví dụ code khi cần."""
ollama create trogiang -f Modelfile
ollama list

num_thread 4 ép Ollama dùng đúng 4 luồng CPU (bằng số nhân máy được dùng), temperature 0.3 cho câu trả lời ít ngẫu nhiên hơn. Model mới trogiang dùng lại các lớp có sẵn nên tạo gần như tức thì và không tốn thêm 1,3 GB.

Nội dung Modelfile với dòng PARAMETER num_thread 4 đóng khung đỏ và kết quả ollama create trogiang báo success
Bước 7: tạo model trogiang từ Modelfile.

Bước 8: Chạy model vừa tạo

ollama run trogiang --think=false --verbose "Viết hàm Python kiểm tra một số có phải số nguyên tố không."

Lần này tốc độ lên 22,74 token/giây, 273 token chỉ mất khoảng 12 giây. Hàm is_prime model viết ra đúng logic: loại số nhỏ hơn hoặc bằng 1, rồi thử chia từ 2 đến căn bậc hai của n. Có điều, ở một lần chạy thử trước đó với cùng câu hỏi, model viết hàm trả về False cho số 2, nên các bạn vẫn phải tự chạy thử code trước khi dùng.

Terminal ollama run trogiang trả về hàm is_prime bằng Python, eval rate 22.74 tokens/s được đóng khung đỏ
Bước 8: model trogiang trả lời nhanh hơn khoảng 16 lần.

Bước 9: Gọi Ollama qua API

Server Ollama có REST API riêng (ví dụ /api/version, /api/chat) và một API tương thích OpenAI ở /v1/chat/completions. Nhờ vậy, code viết cho API kiểu OpenAI có thể trỏ sang http://localhost:11434/v1/ để chạy bằng model local.

curl http://localhost:11434/api/version

curl http://localhost:11434/v1/chat/completions -H "Content-Type: application/json" \
  -d '{"model":"trogiang","messages":[{"role":"user","content":"HTTP status 404 nghĩa là gì? Trả lời 1 câu."}],"reasoning_effort":"none"}'
Kết quả curl tới /api/version và /v1/chat/completions của Ollama trả về JSON dạng chat.completion
Bước 9: API tương thích OpenAI trả về JSON quen thuộc.

Bước 10: Gọi model từ code Python

Đây là đoạn code mình dùng, chỉ cần thư viện chuẩn của Python. Các bạn có thể đưa đoạn này vào backend Flask/Django của đồ án, hoặc viết lại tương tự trong Node.js, Kotlin.

import json, urllib.request

url = "http://localhost:11434/api/chat"
body = {
    "model": "trogiang",
    "messages": [{"role": "user", "content": "So sánh val và var trong Kotlin trong 2 câu."}],
    "stream": False,
    "think": False,
}
req = urllib.request.Request(url, data=json.dumps(body).encode("utf-8"),
                             headers={"Content-Type": "application/json"})
with urllib.request.urlopen(req) as r:
    data = json.load(r)

print(data["message"]["content"])
print("eval_count:", data["eval_count"], "| giây:", round(data["eval_duration"] / 1e9, 2))

Kết quả mất 9,53 giây cho 269 token. Phần kết luận đúng (var đổi được, val không đổi được), nhưng ví dụ cho var lại viết bằng val và model cũng không giữ đúng yêu cầu "2 câu". Model 0.8B làm tốt việc trả lời nhanh, còn chi tiết thì các bạn phải đọc lại.

Kết quả chạy python chat_api.py, ví dụ sai val name = Nguyễn Văn A; name = Nguyễn Văn B được đóng khung đỏ
Bước 10: gọi model từ Python, ví dụ khung đỏ là chỗ model viết sai.

Lỗi thường gặp

"Warning: could not connect to a running Ollama instance"

Server chưa chạy. Trên Linux chạy ollama serve; trên Windows, mở lại Ollama từ menu Start để ứng dụng chạy nền. Nếu đã chạy mà vẫn báo lỗi, kiểm tra xem có chương trình khác chiếm cổng 11434 không; muốn đổi địa chỉ thì dùng biến môi trường OLLAMA_HOST.

Terminal báo could not connect to a running Ollama instance, sau khi chạy ollama serve thì ollama -v in đúng version 0.40.15
Lỗi 1: chưa bật server, chạy ollama serve là hết.

Model chạy rất chậm, chỉ 1–2 token/giây

Ở lần chạy đầu, log của server ghi n_threads = 8 / 16: Ollama thấy máy có 16 nhân nên dùng 8 luồng, trong khi môi trường của mình chỉ được dùng 4 CPU, các luồng phải tranh nhau. Thêm PARAMETER num_thread 4 vào Modelfile (hoặc truyền "options": {"num_thread": 4} khi gọi API) thì tốc độ từ 1,38 lên 22,74 token/giây. (num_thread không có trong bảng tham số của trang Modelfile, nhưng log xác nhận server dùng đúng 4 luồng.) Lỗi này hay gặp khi chạy trong Docker hoặc máy ảo.

So sánh log n_threads = 8 với eval rate 1.38 tokens/s và n_threads = 4 với eval rate 22.74 tokens/s
Lỗi 2: đặt num_thread bằng số nhân thật để tăng tốc.

Model trả lời sai, kể cả câu rất dễ

Mình thử chạy ở chế độ chỉ dùng local (OLLAMA_NO_CLOUD=1) và chặn mọi kết nối ra Internet. Lệnh ollama pull báo lỗi vì không ra được mạng, còn model đã tải vẫn trả lời bình thường. Nhưng với câu "Thủ đô của Việt Nam là gì?", model 0.8B trả lời là Thành phố Hồ Chí Minh, sai hoàn toàn. Model nhỏ phù hợp để học cách dùng, thử API, làm demo; với kiến thức và code quan trọng, các bạn nên kiểm tra lại hoặc dùng model lớn hơn nếu máy đủ RAM.

Khi chặn Internet, ollama pull báo lỗi kết nối còn ollama run vẫn trả lời nhưng sai rằng thủ đô Việt Nam là Thành phố Hồ Chí Minh
Lỗi 3: không có mạng vẫn chạy được, nhưng model nhỏ có thể trả lời sai.

Model "suy nghĩ" rất lâu mới trả lời

Như bước 5 đã thấy, qwen3.5 bật thinking mặc định. Khi chỉ cần câu trả lời ngắn, thêm --think=false với ollama run, hoặc "think": false khi gọi /api/chat.

Câu hỏi thường gặp

Ollama có miễn phí không?

Ollama là phần mềm mã nguồn mở theo giấy phép MIT. Toàn bộ bài này mình làm không cần đăng nhập hay API key. Trang Ollama có mục Pricing cho các model chạy trên cloud của họ, nhưng chạy model trên máy mình thì không cần dùng tới.

Chạy Ollama có cần Internet không?

Chỉ cần Internet lúc tải Ollama và tải model. Sau đó model chạy trên máy: ở phần Lỗi thường gặp, mình chặn hết kết nối ra ngoài mà model vẫn trả lời. Nếu muốn tắt hẳn các tính năng cloud, tài liệu chính thức hướng dẫn đặt biến OLLAMA_NO_CLOUD=1.

Laptop sinh viên không có GPU có chạy được không?

Được với model nhỏ. Máy test của mình không có GPU, giới hạn 4 nhân và 6 GB RAM, model 0.8B chạy khoảng 22 token/giây và ollama ps báo chiếm 574 MB. Model càng lớn thì càng cần nhiều RAM và chạy càng chậm trên CPU, nên các bạn bắt đầu từ bản nhỏ rồi tăng dần.

Model được lưu ở đâu, xóa thế nào?

Theo FAQ của Ollama: Windows lưu ở C:\Users\%username%\.ollama\models, macOS ở ~/.ollama/models, Linux ở /usr/share/ollama/.ollama/models. Muốn đổi chỗ lưu thì đặt biến OLLAMA_MODELS. Xóa model bằng lệnh ollama rm <tên model>.

Nguồn tham khảo

Ảnh chụp và thử nghiệm ngày 09/11/2026.