Website được thiết kế tối ưu cho thành viên chính thức. Hãy Đăng nhập hoặc Đăng ký để truy cập đầy đủ nội dung và chức năng. Nội dung bạn cần không thấy trên website, có thể do bạn chưa đăng nhập. Nếu là thành viên của website, bạn cũng có thể yêu cầu trong nhóm Zalo "HI.AI Members" các nội dung bạn quan tâm.

Bài 4. Hết VRAM khi chạy model lớn

1. Đặt vấn đề

VRAM là bộ nhớ của GPU. Khi chạy model lớn, đặc biệt model 14B, 32B hoặc context dài trên GPU 16GB, hệ thống có thể hết VRAM. Khi đó model không load được, request lỗi, chạy rất chậm do offload sang CPU, hoặc Ollama/backend báo out of memory. Đây là lỗi phổ biến khi người triển khai muốn thử model lớn hơn khả năng phần cứng.

Trong bệnh viện, cần ưu tiên ổn định hơn tham vọng chạy model quá lớn.

2. Dấu hiệu nhận biết

  • Model không chạy được.
  • Lỗi out of memory.
  • nvidia-smi báo VRAM gần đầy.
  • Request bị dừng giữa chừng.
  • Ollama treo hoặc restart.
  • Model chạy chậm bất thường.
  • Một model lớn chạy được khi một người dùng, nhưng lỗi khi nhiều người dùng.
  • Context dài làm model lỗi.

3. Kiểm tra VRAM

Dùng:

 
nvidia-smi
 

Theo dõi realtime:

 
watch -n 1 nvidia-smi
 

Kiểm tra model loaded:

 
ollama ps
 

Cần xem:

  • VRAM tổng.
  • VRAM đã dùng.
  • Process nào dùng GPU.
  • Có nhiều model loaded không.
  • Model dùng CPU/GPU ra sao.

4. Nguyên nhân thường gặp

4.1. Model quá lớn

Model vượt khả năng VRAM.

4.2. Quantization quá nặng

Q8 hoặc Q6 có thể tốn VRAM hơn Q4.

4.3. Context quá dài

Context lớn làm tăng bộ nhớ cần thiết.

4.4. Nhiều request đồng thời

Mỗi request cần thêm bộ nhớ cho KV cache.

4.5. Nhiều model loaded

Nhiều model giữ trong VRAM cùng lúc gây thiếu bộ nhớ.

4.6. Tác vụ embedding hoặc process khác dùng GPU

Một tiến trình khác chiếm VRAM.

5. Cách xử lý nhanh

  • Dừng request nặng.
  • Chờ model unload hoặc restart Ollama nếu cần.
  • Kiểm tra process bằng nvidia-smi.
  • Dùng model nhỏ hơn.
  • Giảm context.
  • Giảm số request đồng thời.
  • Không chạy nhiều model cùng lúc.
  • Chuyển tác vụ lớn sang queue hoặc ngoài giờ.

Nếu cần khôi phục nhanh:

 
sudo systemctl restart ollama
 

Nhưng cần ghi nhận nguyên nhân trước khi restart nếu có thể.

6. Chọn model phù hợp VRAM 16GB

Với GPU 16GB, nên ưu tiên:

  • Model 4B cho tốc độ và nhiều người dùng.
  • Model 7B/8B quantized cho chất lượng tốt.
  • Model 14B chỉ khi benchmark cho thấy chấp nhận được.
  • Tránh model quá lớn làm mặc định toàn viện.

Model lớn chỉ nên cho nhóm ít người dùng và tác vụ chuyên sâu.

7. Giảm context

Nếu model gần đầy VRAM, giảm num_ctx có thể giúp. Có thể tạo nhiều cấu hình:

  • Model nhanh context nhỏ.
  • Model RAG context vừa.
  • Model phân tích sâu context lớn nhưng giới hạn người dùng.

Không nên đặt context lớn mặc định cho tất cả.

8. Quản lý keep-alive

Ollama có thể giữ model trong bộ nhớ sau khi dùng. Điều này giúp request sau nhanh hơn nhưng chiếm VRAM. Nếu nhiều model được gọi luân phiên, VRAM có thể bị chiếm. API trung gian cần quản lý model nào được dùng thường xuyên và tránh gọi quá nhiều model khác nhau.

9. Phòng ngừa

Cần:

  • Benchmark model trước khi dùng.
  • Ghi VRAM từng model.
  • Giới hạn model lớn.
  • Giới hạn context.
  • Có queue.
  • Không chạy batch GPU giờ cao điểm.
  • Theo dõi nvidia-smi.
  • Đào tạo quản trị viên hiểu VRAM.
  • Không chọn model chỉ vì tham số lớn.

10. Kết luận

Hết VRAM là lỗi thường gặp khi chạy model lớn hoặc context dài trên GPU giới hạn. Cách xử lý là chọn model phù hợp, dùng quantization hợp lý, giảm context, giới hạn request đồng thời và quản lý model loaded. Với bệnh viện, hệ thống ổn định với model vừa đủ thường có giá trị hơn hệ thống cố chạy model lớn nhưng chậm và lỗi.