Dùng AI

Chạy AI trên máy của bạn (Ollama, llama.cpp): cần cấu hình gì

Chạy mô hình ngôn ngữ trên máy cá nhân cần chủ yếu một thứ: đủ bộ nhớ chứa trọng số mô hình. Bộ nhớ cần xấp xỉ số tham số nhân số bit mỗi tham số chia 8, cộng phần dư. Nhờ lượng tử hóa 4 bit, mô hình khoảng 8 tỉ tham số cần cỡ 5 GB và chạy được trên máy 8 GB. Ollama cài bằng một lệnh và có API để gọi từ Python; llama.cpp cho nhiều quyền điều chỉnh hơn.

Ý chính
  • Bộ nhớ là giới hạn chính. Ước lượng: số tham số × số bit mỗi tham số / 8, cộng phần dư cho ngữ cảnh và chương trình.
  • Lượng tử hóa giảm số bit mỗi tham số. README của llama.cpp (đọc ngày 11/11/2026) liệt kê lượng tử hóa số nguyên từ 1,5 tới 8 bit để chạy nhanh hơn và tốn ít bộ nhớ hơn.
  • Ollama: cài bằng một lệnh, chạy mô hình bằng ollama run, có REST API ở cổng 11434 và thư viện Python. llama.cpp: chạy được trên CPU, tối ưu cho Apple Silicon, hỗ trợ chia mô hình giữa CPU và GPU.
  • Mô hình chạy trên máy thường nhỏ hơn và kém hơn mô hình lớn qua API, nhưng miễn phí khi chạy, không gửi dữ liệu ra ngoài và hợp để học, thử nghiệm.

Bài này dựa trên README của Ollama và llama.cpp trên GitHub, đọc ngày 11/11/2026. Con số bộ nhớ trong bài là ước lượng bằng công thức, ghi rõ giả định; con số thật phụ thuộc mô hình cụ thể và độ dài ngữ cảnh.

Vì sao chạy AI trên máy

Gọi mô hình qua API (xem gọi API AI bằng Python) cho chất lượng cao nhất nhưng tốn tiền theo token và phải gửi dữ liệu lên máy chủ của hãng. Chạy mô hình mở trên máy của bạn có ba lợi ích: không tốn phí mỗi lần gọi, dữ liệu không rời khỏi máy, và bạn hiểu rõ hơn mô hình hoạt động thế nào (kích thước, tốc độ, bộ nhớ). Đổi lại, mô hình vừa với máy cá nhân thường nhỏ hơn nhiều so với mô hình lớn nhất qua API, nên kém hơn ở các việc khó.

Với người học AI, chạy mô hình trên máy là cách rất tốt để thử nghiệm không lo chi phí, làm dự án với dữ liệu nhạy cảm, và chuẩn bị cho việc tinh chỉnh mô hình mở (xem fine-tuning hay viết prompt).

Cần bao nhiêu bộ nhớ

Mỗi tham số của mô hình được lưu bằng một số bit. Ở dạng 16 bit, mỗi tham số chiếm 2 byte, nên mô hình 8 tỉ tham số cần khoảng 16 GB chỉ cho trọng số. Lượng tử hóa (quantization) giảm số bit: ở 4 bit, cùng mô hình chỉ còn khoảng 4 GB trọng số. Ngoài trọng số, khi chạy còn cần bộ nhớ cho ngữ cảnh (càng dài càng tốn) và cho chương trình.

Đoạn Python dưới đây ước lượng bộ nhớ cần theo công thức tham số × bit / 8, nhân thêm hệ số dư 1,2 (giả định của bài để tính thô phần ngữ cảnh và chương trình), cho các mô hình 1, 4, 8 và 27 tỉ tham số ở 4, 8 và 16 bit, rồi so với máy có 8 GB và 16 GB bộ nhớ dùng được. Code cũng có hàm gọi Ollama qua REST API khi bạn chạy với --that.

"""Ước bộ nhớ cần để chạy một mô hình ngôn ngữ trên máy, và gọi mô hình đang chạy bằng Ollama.

Bộ nhớ cho trọng số = số tham số x số bit mỗi tham số / 8. Lượng tử hóa (quantization) giảm số bit:
llama.cpp hỗ trợ từ 1,5 tới 8 bit theo README (đọc ngày 11/11/2026). Cộng thêm phần dư cho bộ nhớ đệm ngữ cảnh
và chương trình; hệ số dư 1,2 ở đây là giả định để ước lượng thô, con số thật phụ thuộc mô hình và độ dài ngữ cảnh.
Gọi thật: python uoc_bo_nho.py --that "câu hỏi"  (cần Ollama đang chạy và đã tải mô hình)
"""
import json
import sys
import urllib.request

HE_SO_DU = 1.2


def gb_can(ti_tham_so, so_bit):
    return ti_tham_so * so_bit / 8 * HE_SO_DU


def bang(ram_gb):
    dong = [f"Máy có {ram_gb} GB bộ nhớ dùng được cho mô hình:"]
    for ti in (1, 4, 8, 27):
        o = []
        for bit in (4, 8, 16):
            can = gb_can(ti, bit)
            o.append(f"{bit:>2} bit {can:5.1f} GB {'vừa' if can <= ram_gb else 'không'}")
        dong.append(f"  {ti:>2} tỉ tham số: " + " | ".join(o))
    return dong


def hoi_ollama(cau_hoi, mo_hinh="gemma4", dia_chi="http://localhost:11434/api/chat"):
    """Gọi REST API của Ollama trên máy (theo README Ollama): POST /api/chat với stream false."""
    du_lieu = json.dumps({"model": mo_hinh, "messages": [{"role": "user", "content": cau_hoi}],
                          "stream": False}).encode()
    yc = urllib.request.Request(dia_chi, data=du_lieu, headers={"Content-Type": "application/json"})
    with urllib.request.urlopen(yc, timeout=300) as phan_hoi:
        return json.load(phan_hoi)["message"]["content"]


def chay_thu():
    dong = bang(8) + bang(16)
    print("\n".join(dong))
    return dong


if __name__ == "__main__":
    if len(sys.argv) > 2 and sys.argv[1] == "--that":
        print(hoi_ollama(" ".join(sys.argv[2:])))
    else:
        chay_thu()

Kết quả với máy 8 GB: mô hình 1 tỉ tham số vừa ở mọi mức; 4 tỉ tham số vừa ở 4 bit (khoảng 2,4 GB) và 8 bit (4,8 GB) nhưng không vừa ở 16 bit (9,6 GB); 8 tỉ tham số chỉ vừa ở 4 bit (4,8 GB); 27 tỉ tham số không vừa kể cả ở 4 bit (16,2 GB). Với máy 16 GB, mô hình 8 tỉ tham số vừa cả ở 8 bit. Đây là lý do mô hình lượng tử hóa 4 bit là lựa chọn phổ biến cho máy cá nhân.

Máy 8 GB chạy được mô hình nào Bộ nhớ ≈ tham số × bit / 8 × 1,2 1 tỉ tham sốVừa mọi mức4 bit: 0,6 GB 4 tỉ tham sốVừa 4 và 8 bit16 bit: 9,6 GB 8 tỉ tham sốChỉ vừa 4 bit4,8 GB 27 tỉ tham sốKhông vừa4 bit: 16,2 GB Ước lượng thô: ngữ cảnh dài cần thêm bộ nhớ
Máy 8 GB chạy được mô hình nào 1 tỉ tham sốVừa mọi mức4 bit: 0,6 GB 4 tỉ tham sốVừa 4 và 8 bit16 bit: 9,6 GB 8 tỉ tham sốChỉ vừa 4 bit4,8 GB 27 tỉ tham sốKhông vừa4 bit: 16,2 GB Ước lượng thô: ngữ cảnh dài cần thêm bộ nhớ
Hình 1. Máy 8 GB chạy được mô hình nào, theo ước lượng bộ nhớ bằng tham số nhân số bit chia 8 nhân 1,2: mô hình 1 tỉ tham số vừa mọi mức (4 bit chỉ 0,6 GB); 4 tỉ tham số vừa ở 4 và 8 bit (16 bit cần 9,6 GB); 8 tỉ tham số chỉ vừa ở 4 bit (4,8 GB); 27 tỉ tham số không vừa (4 bit cần 16,2 GB). Ngữ cảnh dài cần thêm bộ nhớ.

GPU, CPU và Apple Silicon

Có GPU rời với bộ nhớ đồ họa (VRAM) đủ chứa mô hình thì chạy nhanh nhất. Không có GPU vẫn chạy được trên CPU, chỉ chậm hơn. README của llama.cpp ghi Apple Silicon được hỗ trợ hàng đầu, tối ưu qua ARM NEON, Accelerate và Metal; và có chế độ suy luận lai CPU cộng GPU để tăng tốc một phần khi mô hình lớn hơn tổng VRAM. Nghĩa là máy laptop thông thường vẫn thử được mô hình nhỏ; muốn mô hình lớn hơn và nhanh hơn thì bộ nhớ (RAM hoặc VRAM) là thứ đáng đầu tư nhất.

Cài và chạy với Ollama

Theo README của Ollama, cài trên macOS và Linux bằng lệnh tải tập lệnh cài đặt từ trang chính thức, trên Windows bằng một lệnh PowerShell tương ứng; trang README cũng có hướng dẫn cài thủ công cho Linux. Sau khi cài, chạy và trò chuyện với một mô hình bằng ollama run kèm tên mô hình (README dùng ví dụ gemma4); danh sách mô hình nằm ở thư viện trên trang Ollama.

Ollama có REST API để chạy và quản lý mô hình: gửi yêu cầu POST tới http://localhost:11434/api/chat với tên mô hình, danh sách tin nhắn và stream là false để nhận cả câu trả lời một lần. Hàm hoi_ollama trong đoạn code trên làm đúng như vậy bằng thư viện chuẩn của Python. README cũng giới thiệu thư viện Python chính thức, cài bằng pip install ollama, với hàm chat nhận tên mô hình và danh sách tin nhắn.

Trước khi cài bất cứ thứ gì, đọc kỹ lệnh cài trên trang chính thức và chỉ chạy lệnh tải từ đúng tên miền của dự án.

llama.cpp: điều khiển nhiều hơn

llama.cpp là bộ suy luận mô hình ngôn ngữ viết bằng C và C++, nền của nhiều công cụ chạy mô hình cục bộ. README nêu các điểm chính: lượng tử hóa số nguyên 1,5; 2; 3; 4; 5; 6 và 8 bit; tối ưu cho Apple Silicon; chạy lai CPU và GPU; và nhiều nền tảng tăng tốc phần cứng. README có ví dụ chạy trực tiếp một mô hình định dạng GGUF tải từ Hugging Face bằng công cụ dòng lệnh, và chế độ máy chủ để gọi qua mạng nội bộ. Mô hình cho llama.cpp thường ở định dạng GGUF; xem cách tìm và đọc thẻ mô hình trong bài Hugging Face là gì.

Chọn Ollama nếu bạn muốn bắt đầu nhanh; chọn llama.cpp nếu muốn chỉnh chi tiết mức lượng tử hóa, cách chia CPU và GPU, hay nhúng vào chương trình C++.

Chọn mô hình

Ba câu hỏi khi chọn: mô hình có vừa bộ nhớ không (dùng ước lượng ở trên, chừa dư); giấy phép mô hình cho phép bạn dùng vào việc gì (đọc thẻ mô hình, một số mô hình mở có giấy phép riêng); và mô hình có hỗ trợ tiếng Việt đủ tốt không. Cách chắc nhất để trả lời câu cuối là thử trên vài chục câu hỏi tiếng Việt của chính bạn và so kết quả, như cách làm bộ đánh giá.

Bắt đầu thế nào cho gọn

Một lộ trình nhỏ cho lần đầu: cài Ollama, chạy một mô hình nhỏ khoảng 1 đến 4 tỉ tham số để chắc mọi thứ hoạt động, hỏi vài câu bằng tiếng Việt và để ý tốc độ trả lời. Sau đó gọi mô hình từ Python qua REST API như hàm trong bài, ghi lại thời gian trả lời cho từng câu. Khi đã quen, thử một mô hình lớn hơn vừa với bộ nhớ, so chất lượng và tốc độ với mô hình nhỏ trên cùng bộ câu hỏi. Cuối cùng, ghép mô hình chạy trên máy vào một dự án nhỏ như chatbot hỏi đáp tài liệu của bài RAG; bạn sẽ có một ứng dụng AI hoàn chỉnh chạy hoàn toàn trên máy, không tốn phí gọi API, rất hợp để đưa vào portfolio.

Ghi lại cấu hình máy, tên mô hình, mức lượng tử hóa và tốc độ đo được trong README của dự án. Người đọc sẽ biết dự án chạy được trên máy như thế nào, và chính bạn sẽ có số liệu để chọn mô hình cho lần sau.

Cẩn thận
  • Tải mô hình 16 bit lớn hơn bộ nhớ máy rồi thấy máy treo.
  • Quên rằng ngữ cảnh dài cũng tốn bộ nhớ, ước lượng chỉ theo trọng số.
  • Chạy lệnh cài từ trang lạ thay vì trang chính thức của dự án.
  • Dùng mô hình mở vào việc thương mại mà không đọc giấy phép trên thẻ mô hình.
  • Kỳ vọng mô hình nhỏ trên máy giỏi ngang mô hình lớn nhất qua API.

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

Máy không có GPU có chạy được không?

Được. Mô hình nhỏ lượng tử hóa 4 bit chạy được trên CPU, chỉ chậm hơn. Bắt đầu với mô hình 1 đến 4 tỉ tham số.

Lượng tử hóa có làm mô hình kém đi không?

Giảm số bit có thể làm chất lượng giảm phần nào, tùy mức và mô hình. Mức 4 bit thường là điểm cân bằng phổ biến; hãy tự so trên câu hỏi của bạn.

Chạy trên máy có an toàn hơn về dữ liệu không?

Dữ liệu không gửi tới máy chủ của hãng mô hình, nên phù hợp với dữ liệu nhạy cảm. Vẫn cần cẩn thận với các tiện ích, giao diện bên thứ ba có thể gửi dữ liệu ra ngoài.

Có thể dùng mô hình chạy trên máy cho RAG không?

Được. Thay lời gọi API bằng lời gọi Ollama trong đoạn code RAG; phần tìm kiếm và ghép prompt giữ nguyên.

Học tiếp

Nếu bạn muốn học Python và AI bài bản cùng giảng viên, tham khảo khóa học AI của Big-O Coding.

Muốn học bài bản cùng giảng viên?

Khóa AI – Introduction to Machine Learning: nền tảng Máy học từ thuật toán cơ bản đến Neural Networks và LLM, học bằng Python. Học thử buổi 1 miễn phí.

Xem Khóa AI

Nguồn tham khảo

Chia sẻ: Facebook LinkedIn
Nhắn Zalo tư vấnZalo Gọi 0937 401 483