Ollama 0.32.14 loại bỏ hỗ trợ GPU cho các dòng card RTX 30 bằng cách lược bỏ các CUDA kernel sm_86, khiến thời gian chạy tự động chuyển sang CPU mà không có thông báo, dẫn đến tốc độ tạo mô hình chậm đi đáng kể.
Thay đổi gì trong bản 0.32.14
Bản binary mới chỉ được xây dựng cho các kiến trúc tính toán 7.5, 8.9, 10.0 và 12.0. Kiến trúc 8.6 – tên mã của dòng NVIDIA RTX 30-series, A40 và A6000 – đã bị thiếu. Khi trình khởi chạy tìm kiếm kernel tương ứng mà không thấy, nó sẽ báo lỗi GPU “split” trong ollama ps, sau đó tiếp tục chạy mà không có sự tăng tốc.
Tại sao cơ chế dự phòng cũ không còn hoạt động
Các bản phát hành trước đó có đi kèm một lộ trình phụ, nếu các kernel chính thất bại, nó sẽ tải thư viện CUDA 12. Thư viện đó vẫn chứa mã cho sm_86, cho phép phần cứng đó chạy được mô hình. Trong bản 0.32.14, mã dự phòng đã vô tình bị xóa bỏ, vì vậy trình khởi chạy bỏ qua hoàn toàn GPU và chạy trên bộ vi xử lý của máy chủ.
Ai sẽ bị ảnh hưởng
Bất kỳ ai đang sử dụng RTX 3080, 3080 Ti, 3090, 3090 Ti, A40, A6000 hoặc bất kỳ card nào khác dựa trên khả năng tính toán (compute capability) 8.6 đều sẽ thấy tốc độ bị chậm lại. Sự thay đổi này diễn ra âm thầm – không có thông báo lỗi, không bị treo máy – chỉ là sự sụt giảm đáng kể về hiệu suất (throughput).
Cách kiểm tra xem bạn có đang chạy trên CPU hay không
- Bắt đầu quá trình tạo (generation) và trong một terminal khác, chạy
nvidia-smi. Nếu cột “Memory-Used” vẫn ở mức 0 MiB, nghĩa là công việc đang được xử lý trên CPU. - Kiểm tra nhật ký (logs) của Ollama để tìm dòng có chứa
library=CUDA compute=8.6. Nếu không thấy dòng này, điều đó xác nhận cơ chế dự phòng chưa bao giờ được kích hoạt. - So sánh số lượng token mỗi giây (token-per-second) với mức cơ sở (baseline) GPU đã biết; một mô hình lớn vốn chỉ mất vài phút ở các bản phát hành trước đây thì nay sẽ mất hàng chục phút.
Việc thiết lập các biến môi trường như CUDA_VISIBLE_DEVICES không giúp khắc phục vấn đề vì các kernel bị thiếu là do bị bỏ sót trong quá trình biên dịch (compile-time), chứ không phải là một cờ (flag) trong thời gian chạy (runtime).
Cách khắc phục nhanh: quay về bản 0.32.13
Windows
- Gỡ cài đặt bản Ollama hiện tại.
- Tải trình cài đặt 0.32.13 từ trang GitHub releases của dự án.
- Chạy trình cài đặt và khởi động lại dịch vụ Ollama.
Linux
sudo systemctl stop ollama
# replace <package> with the 0.32.13 .deb or .rpm you downloaded
sudo dpkg -i <package> # for Debian-based
# or sudo rpm -Uvh <package> # for RPM-based
sudo systemctl start ollama
Sau khi hạ cấp, hãy lặp lại bước kiểm tra nvidia-smi; bạn sẽ thấy mức sử dụng VRAM khác 0 và tốc độ tạo tăng vọt.
Cần lưu ý gì trong các bản phát hành tương lai
Việc thiếu hụt sm_86 có vẻ là một sơ suất trong script build hơn là một sự loại bỏ có chủ đích. Cho đến khi những người duy trì khôi phục các kernel bị thiếu hoặc kích hoạt lại cơ chế dự phòng CUDA 12, bất kỳ bản nâng cấp nào vượt quá 0.32.13 đều tiềm ẩn rủi ro tương tự. Hãy theo dõi trình theo dõi lỗi (issue tracker) của dự án để tìm bản vá bổ sung lại các kernel 8.6, và kiểm tra việc sử dụng GPU ngay sau mỗi lần cập nhật.
Tóm lại: bản phát hành 0.32.14 đã vô tình vô hiệu hóa khả năng tăng tốc của dòng RTX 30-series. Hãy xác minh hoạt động của GPU bằng nvidia-smi, và nếu bạn đang sử dụng các dòng card này, hãy quay lại bản 0.32.13 cho đến khi các kernel bị thiếu được khôi phục.
