Ollama trên VPS không GPU: chạy được model nào, chậm ở đâu

Chia sẻ bài viết

Mục lục
Ollama trên VPS không GPU: chạy được model nào, chậm ở đâu

Trả lời nhanh: Chạy được nhưng phải hiểu giới hạn. Trên CPU, mô hình khoảng 3 tỉ tham số sinh được vài chữ mỗi giây, mô hình 7 tới 8 tỉ tham số thì chậm hơn nhiều và cần khoảng 8GB RAM. Mô hình lớn hơn gần như không dùng được cho tương tác thời gian thực. Tốc độ bị chặn bởi băng thông bộ nhớ chứ không phải số nhân, nên thêm nhân giúp rất ít. Ổ nhanh chỉ giúp lúc nạp mô hình, sau đó mô hình nằm trong RAM.

Tự chạy mô hình nghe hấp dẫn vì không phải trả tiền theo lượt gọi. Nhưng cần biết trước bạn sẽ nhận được tốc độ nào để không thất vọng.

Tóm tắt nhanh
  • Mô hình nhỏ chạy được trên CPU, mô hình lớn thì không thực dụng.
  • Nút thắt là băng thông bộ nhớ, không phải số nhân CPU.
  • RAM phải đủ chứa toàn bộ mô hình, thiếu là chậm thảm hại.
  • Ổ nhanh chỉ rút ngắn lúc nạp mô hình lần đầu.

Thực tế tốc độ trên CPU

Cỡ mô hìnhRAM cầnTrải nghiệm trên CPU
khoảng 1 tỉ tham số2 tới 3GBChấp nhận được cho tác vụ ngắn
khoảng 3 tỉ tham số4 tới 6GBChậm nhưng dùng được cho việc chạy nền
khoảng 7 tới 8 tỉ tham số8 tới 10GBChậm, không hợp cho trò chuyện
trên 13 tỉ tham số16GB trở lênKhông thực dụng nếu không có GPU

Con số thay đổi theo mức nén của mô hình và theo băng thông bộ nhớ của máy, nhưng thứ tự thì luôn đúng: càng lớn càng chậm, và độ chậm tăng nhanh hơn kích thước.

Vì sao thêm nhân không giúp nhiều

Sinh mỗi chữ đòi hỏi đọc qua toàn bộ trọng số của mô hình. Với mô hình 8 tỉ tham số ở mức nén phổ biến, đó là khoảng 5GB dữ liệu phải đi qua bộ nhớ cho mỗi chữ.

Nút thắt vì vậy là băng thông bộ nhớ chứ không phải khả năng tính toán. Thêm nhân giúp một chút ở giai đoạn đầu khi xử lý câu hỏi, nhưng ở giai đoạn sinh chữ thì gần như không đổi.

Khi nào tự chạy hợp lý

Hợp lý khi: dữ liệu nhạy cảm không được gửi ra ngoài, tác vụ đơn giản như phân loại hay tóm tắt ngắn, chạy nền không cần trả lời ngay, hoặc lượng gọi rất lớn với tác vụ đơn giản.

Không hợp lý khi: cần chất lượng cao, cần trả lời nhanh cho người dùng, hoặc lượng gọi thấp. Ba trường hợp này dùng API rẻ hơn và tốt hơn nhiều, cả về tiền lẫn công vận hành.

Nói thẳng con số: một VPS đủ RAM chạy mô hình 8 tỉ tham số tốn tiền thuê hàng tháng cố định, trong khi dùng API cho lượng gọi vừa phải thường rẻ hơn và cho chất lượng cao hơn hẳn. Tự chạy đáng làm vì lý do dữ liệu, ít khi vì lý do chi phí.

Đo tốc độ thật trên máy của bạn

# Do so tu moi giay khi chay tren CPU
ollama run TEN_MODEL --verbose
# Doc dong eval rate o cuoi, don vi la token moi giay

# Xem model chiem bao nhieu bo nho
ollama ps
free -h

# Trong luc chay, kiem nghen o dau
top -bn1 | head -5      # us cao la dang tinh toan
vmstat 2 20             # si va so khac 0 la dang trao trang, rat te

# Neu bi trao trang: model qua lon so voi RAM, phai chon ban nen manh hon
Bộ nhớ máyCỡ mô hình chạy đượcTrải nghiệm trên CPU
2 GBMô hình rất nhỏChỉ để thử, không dùng được cho việc thật
4 GBMô hình nhỏ, nén mạnhChậm nhưng chạy được với việc phân loại đơn giản
8 GBMô hình cỡ trung, nénChấp nhận được cho việc chạy nền, không hợp chat trực tiếp
16 GBMô hình cỡ trung, nén nhẹ hơnVẫn chậm hơn nhiều so với gọi dịch vụ

Nút thắt nằm ở băng thông bộ nhớ

Chạy mô hình ngôn ngữ trên vi xử lý bị giới hạn bởi tốc độ đọc bộ nhớ chứ không phải bởi số phép tính. Mỗi lần sinh ra một từ, máy phải đọc qua toàn bộ trọng số của mô hình. Thêm nhân không làm bộ nhớ đọc nhanh hơn, nên đường cong lợi ích phẳng rất sớm.

Hệ quả thực tế: máy 8 nhân không nhanh gấp đôi máy 4 nhân ở việc này. Nếu đang cân nhắc nâng cấp, thêm bộ nhớ để chạy được bản nén nhẹ hơn thường cho kết quả tốt hơn thêm nhân.

Khi nào tự chạy trên máy không có card đồ họa là hợp lý

  • Việc chạy nền, không ai ngồi chờ: phân loại thư, gắn nhãn tài liệu, tóm tắt hàng loạt vào ban đêm.
  • Dữ liệu không được rời khỏi máy của bạn. Đây là lý do chính đáng nhất và thường là lý do duy nhất.
  • Khối lượng đều đặn rất lớn khiến chi phí gọi dịch vụ vượt chi phí máy.
  • Không hợp khi: cần trả lời cho người dùng theo thời gian thực, hoặc cần chất lượng ngang mô hình lớn.

Cách làm thực dụng nhất với phần lớn đội: dùng dịch vụ theo lượt cho phần cần chất lượng và tốc độ, tự chạy mô hình mở cho phần dữ liệu nhạy cảm và phần khối lượng lớn không gấp.

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

Ollama chạy trên VPS không GPU được không?

Được với mô hình nhỏ. Mô hình khoảng 3 tỉ tham số trở xuống dùng được cho tác vụ nền, mô hình lớn hơn thì quá chậm cho tương tác.

Cần bao nhiêu RAM?

Xấp xỉ kích thước file mô hình cộng thêm phần đệm. Mô hình 8 tỉ tham số cần khoảng 8 tới 10GB RAM.

Thêm nhân CPU có nhanh hơn không?

Rất ít, vì nút thắt là băng thông bộ nhớ chứ không phải khả năng tính toán.

Tự chạy có rẻ hơn dùng API không?

Thường là không với lượng gọi vừa phải, vì tiền thuê máy là chi phí cố định. Tự chạy đáng làm chủ yếu vì lý do dữ liệu không được gửi ra ngoài.

Hạ tầng NVMe Enterprise của TND
VPS ổ Enterprise U.2 NVMe, CPU xung cao, đặt tại Việt Nam
Truy vấn SQL, PHP dựng trang, build Next.js hay đóng gói app iOS và Android: phần lớn các bước này chạy đơn luồng và đập liên tục vào ổ đĩa. Nghẽn nằm ở tốc độ đọc ghi và xung nhịp CPU, không phải ở việc có thật nhiều nhân. Ổ Enterprise U.2 NVMe chuẩn máy chủ chạy RAID 10 cho IOPS đọc ghi ngẫu nhiên gấp 5 đến 7 lần ổ SATA SSD, khác hẳn NVMe M.2 phổ thông. Chạy trên chip Intel Xeon Platinum dòng xung cao, backup tự động hàng tuần, bàn giao trong 5 phút.
Xem VPS Enterprise U.2 NVMe RAID 10, CPU xung cao

Bài viết liên quan