Bỏ qua đến nội dung chính
AI Local
Cửa sổ code nối với biểu tượng Ollama và llama.cpp

Tesla P40 24GB chạy LLM: rẻ nhưng vướng ở đâu?

AIDev TeamTham vấn chuyên môn: Nguyễn Việt Chung

Đăng 13 phút đọc

Mục lục · 20

Tesla P40 đáng thuê để chạy LLM nếu bạn dùng Ollama hoặc llama.cpp bản CUDA 12, vì giá giờ chưa bằng nửa RTX 3090. Bản CUDA 13 của llama.cpp, runtime CUDA của LM Studio và vLLM thì báo lỗi trên card này. Mình đo hai card cạnh nhau để biết P40 chậm hơn bao nhiêu khi sinh chữ, khi đọc prompt dài, và khi nào vẫn rẻ hơn.

Tesla P40 24GB chạy được LLM (mô hình ngôn ngữ lớn) cỡ 9B đến 35B bằng Ollama hoặc llama.cpp, với điều kiện phần mềm còn được dựng cho CUDA 12. Ngày 26/10/2026, mình thuê một máy P40 và một máy RTX 3090 trên AIDev Cloud, cài cùng bộ công cụ và chạy cùng model Qwen3.5. P40 vướng ở ba chỗ: phần mềm bản mới bỏ hỗ trợ card này, tốc độ đọc prompt chỉ bằng khoảng một phần năm RTX 3090, và driver đã ở nhánh hỗ trợ cuối cùng.

Kết quả chính:

  • Ollama 0.40.11 tự bỏ qua thư viện CUDA 13 và chuyển sang CUDA 12, nên chạy được trên P40 mà bạn không phải làm gì. llama.cpp bản dựng cho CUDA 13.4, runtime CUDA của LM Studio và vLLM 0.32.0 đều dừng với lỗi no kernel image is available.

  • Khi một người hỏi, llama.cpp trên P40 sinh 35,2 token/giây (token là mẩu chữ model đọc và sinh ra, thường ngắn hơn một từ) với Qwen3.5-9B, RTX 3090 sinh 112,9. Khi mở 16 slot (16 chỗ xử lý câu hỏi song song) cho 16 người hỏi cùng lúc, P40 lên 191 token/giây.

  • Khi đọc prompt 4.096 token, P40 chậm hơn RTX 3090 khoảng 5,4 lần với model 9B.

  • Qwen3.5-35B-A3B (model MoE, mỗi token chỉ chạy khoảng 3B tham số) vừa trong 24GB của P40 và sinh 50,9 token/giây, nhanh hơn model 9B trên cùng card.

Tesla P40 24GB là card gì?

Tesla P40 là card dành cho máy chủ, chip GP102 đời Pascal. Theo bài mô tả chi tiết của Microway, card có 3.840 nhân CUDA, 24GB bộ nhớ GDDR5 với băng thông tối đa 346GB/s, công suất giới hạn 250W và khoảng 12 TFLOPS khi tính số thực 32 bit. Compute capability (mã đời kiến trúc mà phần mềm CUDA dùng để biết card hỗ trợ lệnh nào) của P40 là 6.1.

Trên máy mình thuê, nvidia-smi báo 23.040MiB, còn llama.cpp thấy 22.905MiB dùng được. Card không hỗ trợ bf16 (kiểu số thực 16 bit hay dùng khi huấn luyện model; log vLLM trong bài cũng ghi điều này) và tính số thực 16 bit (fp16) rất chậm. Bài giá thuê GPU theo giờ có số đo SDXL ở fp16 trên P40 nếu bạn cần tạo ảnh.

Với LLM, con số quan trọng nhất là 24GB VRAM. Mức này bằng RTX 3090, đủ để nạp trọn model 27B nén 4 bit hoặc model MoE 35B. Gói P40 Standard trên AIDev Cloud giá 7.000đ/giờ, chưa tới một nửa gói RTX 3090 Standard (15.000đ/giờ).

Phần mềm nào chạy LLM được trên Tesla P40?

Mình cài bốn công cụ phổ biến lên máy P40 và chạy cùng model Qwen3.5-9B nén 4 bit (Q4_K_M):

Công cụ, phiên bản

Chạy trên P40?

Ghi chú

Ollama 0.40.11

Chạy

tự chọn thư viện CUDA 12

llama.cpp b11889 bản CUDA 12.8

Chạy

bản mình dùng để đo

llama.cpp b11889 bản CUDA 13.4

Lỗi

no kernel image is available

LM Studio llmster 0.0.25, runtime CUDA

Lỗi

runtime đòi compute capability từ 7.5

LM Studio llmster 0.0.25, runtime Vulkan

Chạy

runtime mặc định trên P40, chậm hơn CUDA

vLLM 0.32.0

Lỗi

PyTorch đi kèm không có kernel cho sm_61

Lỗi no kernel image is available nghĩa là chương trình không chứa mã máy dựng cho đời card của bạn. Các bản dựng cho CUDA 13 thường chỉ còn từ đời Turing (compute capability 7.5) trở lên. Đây cũng là lỗi PyTorch bản CUDA 13 báo trên P40, mình đã kể ở bài chạy ComfyUI trên GPU thuê.

Ollama xử lý chuyện này gọn nhất. Gói cài có hai bộ thư viện cuda_v12 và cuda_v13. Log của Ollama ghi rõ nó bỏ qua bộ CUDA 13 vì danh sách kiến trúc chỉ bắt đầu từ 750, rồi nạp bộ CUDA 12.

Terminal Ollama 0.40.11 trên Tesla P40: log ghi skipping CUDA device compute capability not in compiled architectures với thư mục cuda_v13, rồi inference compute với libdirs cuda_v12, ollama ps báo qwen3.5:9b 100% GPU context 4096

Tài liệu GPU của Ollama ghi hỗ trợ card NVIDIA từ compute capability 5.0, và card từ 5.0 đến 6.2 cần driver 570 trở lên. Driver trên máy P40 mình thuê là 580.173.02. Muốn biết card của bạn đang chạy bằng thư viện nào, lọc log của service:

bash
journalctl -u ollama | grep -E "skipping CUDA|inference compute|load_backend"
ollama ps

Ollama trên P40 tự đặt context (số token model nhớ được trong một cuộc hội thoại) 4.096 token thay vì 32.768 như trên RTX 3090, vì nó chọn context theo dung lượng VRAM mà card báo về. Bài chạy DeepSeek local giải thích cơ chế này và cách đặt lại.

Tesla P40 24GB sinh chữ nhanh bao nhiêu so với RTX 3090?

Mình dùng cùng script đo của bài so Ollama, llama.cpp, vLLM và LM Studio: gửi cùng lúc 1, 4 và 16 request vào API của từng công cụ, mỗi request sinh 256 token, chạy ba lượt và lấy trung bình hai lượt sau. Hai máy cùng gói Standard, cùng model Qwen3.5-9B Q4_K_M.

Máy, công cụ

1 người

4 người

16 người

Người thứ 16 chờ chữ đầu

P40, Ollama

30,3

30,6

30,6

125,7 giây

P40, LM Studio (Vulkan)

28,5

43,3

47,4

67,0 giây

P40, llama.cpp mặc định

35,2

93,5

93,4

33,8 giây

P40, llama.cpp -np 16

35,3

96,2

191,0

2,1 giây

RTX 3090, llama.cpp -np 16

112,3

255,4

442,0

2,0 giây

Ba cột giữa là tổng số token sinh ra mỗi giây của cả máy. -np 16 là tham số mở 16 slot của llama.cpp.

Biểu đồ token/giây cả máy khi 16 người hỏi cùng lúc: P40 Ollama 30,6, P40 LM Studio Vulkan 47,4, P40 llama.cpp mặc định 93,4, P40 llama.cpp np 16 là 191,0, RTX 3090 llama.cpp np 16 là 442,0

Khi một người hỏi, P40 chậm hơn RTX 3090 khoảng 3,2 lần (35,2 so với 112,9 token/giây, cùng cấu hình llama.cpp mặc định). Khi 16 người hỏi cùng lúc và mở đủ 16 slot, khoảng cách còn 2,3 lần. Lý do là lúc sinh từng token, card phải đọc toàn bộ model từ VRAM ra cho mỗi bước. Gộp nhiều người vào một bước thì cùng một lần đọc phục vụ được nhiều câu trả lời, nên P40 bớt bị băng thông thấp kéo chậm.

Ollama trên P40 không tăng tốc khi nhiều người hỏi vì xử lý lần lượt từng request với Qwen3.5. Người thứ 16 chờ hơn hai phút mới thấy chữ đầu tiên. Bài so Ollama, llama.cpp, vLLM, LM Studio giải thích chuyện slot và cách mở thêm.

Vì sao đọc prompt dài trên P40 chậm hơn hẳn?

Model làm hai việc khác nhau: đọc prompt (prefill, xử lý toàn bộ câu hỏi và tài liệu đính kèm cùng lúc) và sinh chữ (từng token một). Đọc prompt là phép nhân ma trận lớn, cần sức tính. Sinh chữ chủ yếu cần băng thông bộ nhớ. P40 yếu ở sức tính hơn nhiều so với băng thông, nên khoảng cách với RTX 3090 rộng hơn ở bước đọc prompt.

Mình đo bằng llama-bench, công cụ đo đi kèm llama.cpp: pp4096 là tốc độ đọc prompt 4.096 token, tg128 là tốc độ sinh 128 token.

Terminal llama.cpp b11889 trên Tesla P40: bản CUDA 13.4 báo CUDA error no kernel image is available và Aborted; bản CUDA 12.8 chạy llama-bench ra pp4096 877,90 và tg128 36,51 token/giây với 9B, 264,90 và 11,90 với 27B

Model Q4_K_M

Việc

Tesla P40

RTX 3090

P40 chậm hơn

Qwen3.5-9B

đọc prompt 4.096 token

877,9 token/giây

4.729,4 token/giây

5,4 lần

Qwen3.5-9B

sinh chữ

36,5 token/giây

126,3 token/giây

3,5 lần

Qwen3.5-27B

đọc prompt 4.096 token

264,9 token/giây

1.512,9 token/giây

5,7 lần

Qwen3.5-27B

sinh chữ

11,9 token/giây

43,4 token/giây

3,6 lần

Biểu đồ tốc độ đọc prompt 4.096 token: P40 với 9B 877,9 token/giây, RTX 3090 với 9B 4.729,4, P40 với 27B 264,9, RTX 3090 với 27B 1.512,9

Tính ra thời gian chờ: với model 27B, P40 cần khoảng 15,5 giây chỉ để đọc xong một prompt 4.096 token trước khi viết chữ đầu tiên, RTX 3090 cần khoảng 2,7 giây. Nếu bạn làm RAG (cho model đọc tài liệu rồi trả lời) hoặc dán file dài vào câu hỏi, đây là chỗ P40 làm bạn chờ lâu nhất. Chat ngắn thì ít bị ảnh hưởng hơn.

Model nào hợp với P40?

Với 24GB, P40 nạp được trọn các model mình thử. Chọn model nào thì tùy bạn cần nhanh hay cần model lớn:

Model (llama-bench, Q4_K_M)

File

Sinh chữ trên P40

Đọc prompt 4.096 token

Qwen3.5-9B

5,6GB

36,5 token/giây

877,9 token/giây

Qwen3.5-9B Q8_0

9,5GB

25,0 token/giây

922,8 token/giây

Qwen3.5-27B

16,7GB

11,9 token/giây

264,9 token/giây

Qwen3.5-35B-A3B

22,0GB

50,9 token/giây

1.046,1 token/giây

Kết quả bất ngờ nhất là Qwen3.5-35B-A3B. Đây là model MoE (mixture of experts, mỗi token chỉ đi qua một phần nhỏ của model), tổng 35B tham số nhưng mỗi token chỉ chạy khoảng 3B. File 22GB vẫn vừa P40, nvidia-smi báo đỉnh 21.327MiB khi đo, và tốc độ sinh chữ 50,9 token/giây còn nhanh hơn model 9B thường. Trên P40, nếu cần model mạnh mà vẫn đủ nhanh để chat, mình sẽ chọn loại MoE này trước model 27B (chỉ 11,9 token/giây).

Bản 8 bit (Q8_0) của model 9B chậm hơn bản 4 bit khi sinh chữ (25,0 so với 36,5 token/giây) vì file lớn gần gấp đôi. Bảng chọn model Ollama theo từng mức VRAM có ở bài chọn model Ollama theo VRAM.

Thuê P40 có rẻ hơn RTX 3090 tính trên mỗi token không?

Tùy số người dùng cùng lúc. Bảng dưới là tiền máy cho 1 triệu token sinh ra, mình tính từ giá thuê theo giờ và tốc độ đo được ở trên:

Cách dùng (llama.cpp b11889, Qwen3.5-9B)

Tesla P40, 7.000đ/giờ

RTX 3090, 15.000đ/giờ

1 người hỏi

55.240đ (35,2 token/giây)

36.906đ (112,9 token/giây)

16 người hỏi cùng lúc, 16 slot

10.180đ (191,0 token/giây)

9.427đ (442,0 token/giây)

Biểu đồ tiền máy cho 1 triệu token: P40 một người 55.240đ, RTX 3090 một người 36.906đ, P40 16 người 10.180đ, RTX 3090 16 người 9.427đ

Khi chỉ mình bạn dùng, RTX 3090 rẻ hơn P40 tính trên mỗi token vì nhanh gấp hơn ba lần mà giá giờ chỉ gấp khoảng hai lần. Khi máy phục vụ nhiều người cùng lúc, hai card gần ngang nhau, P40 đắt hơn khoảng 8%. Nhưng tính tiền theo token chỉ đúng khi máy luôn bận. Nếu bạn thuê máy để học, thử model hay chạy một bot nhỏ ít người dùng, phần lớn thời gian máy ngồi chờ, và khi đó giá giờ 7.000đ của P40 mới là con số bạn trả.

Driver cho Tesla P40 còn được hỗ trợ đến bao giờ?

NVIDIA thông báo trên diễn đàn nhà phát triển rằng nhánh driver 580 là nhánh cuối cùng hỗ trợ các đời Maxwell, Pascal và Volta. P40 thuộc đời Pascal. Máy P40 trên AIDev Cloud đang dùng driver 580.173.02 (báo CUDA 13.0), còn máy RTX 3090 đã lên driver 610.

Hệ quả thực tế là các bản phần mềm mới sẽ dần chỉ dựng cho CUDA 13 trở lên, như bạn thấy ở llama.cpp bản 13.4 và vLLM trong bài. Runtime CUDA của LM Studio còn bỏ P40 sớm hơn, ngay ở bản dựng cho CUDA 12. Hiện tại bạn vẫn chạy được nhờ các bản dựng cho CUDA 12 còn được phát hành song song: mình kiểm lại ngày 08/11/2026, bản llama.cpp b12202 vẫn có gói cuda-12.8 bên cạnh gói CUDA 13.5. Khi một dự án ngừng phát hành bản CUDA 12, bạn sẽ phải tự biên dịch hoặc giữ phiên bản cũ.

Khi nào nên và không nên thuê P40?

Nên dùng P40 khi:

  • Bạn học và thử LLM, chạy model đến 35B với Ollama hoặc llama.cpp, và muốn giá giờ thấp nhất cho card 24GB.

  • Bạn chạy bot hoặc API nhỏ, câu hỏi ngắn, ít người dùng cùng lúc.

  • Model MoE như Qwen3.5-35B-A3B đủ cho việc của bạn.

Không nên dùng P40 khi:

  • Bạn cần vLLM, LM Studio bản CUDA hoặc phần mềm nào chỉ phát hành bản CUDA 13.

  • Việc chính là RAG hoặc đọc tài liệu dài: đọc prompt chậm hơn RTX 3090 khoảng 5,4 đến 5,7 lần.

  • Bạn cần fine-tune với bf16, FlashAttention 2, hoặc tạo ảnh ở fp16. Bài RTX 3090 cũ có đáng mua để chạy AI so ba card ở các việc này.

Lỗi mình đã gặp trên Tesla P40

llama.cpp bản CUDA 13.4 dừng ngay khi chạy

Trang release của llama.cpp b11889 có hai bản dựng sẵn cho Ubuntu: CUDA 12.8 và CUDA 13.4. Driver 580 trên máy P40 báo CUDA 13.0, nên bản 13.4 nghe như lựa chọn hợp lý. Mình chạy thử llama-bench với bản này: chương trình nhận card, rồi dừng ở lượt tính đầu tiên:

text
CUDA error: no kernel image is available for execution on the device
  current device: 0, in function ggml_cuda_kernel_can_use_pdl at /__w/llama.cpp/llama.cpp/ggml/src/ggml-cuda/common.cuh:1676

Đổi sang bản llama-b11889-bin-ubuntu-cuda-12.8-x64 thì chạy bình thường. Với P40, bạn chọn bản dựng theo đời card chứ không theo số CUDA mà driver báo. Lệnh tải bản dùng được:

bash
wget https://github.com/ggml-org/llama.cpp/releases/download/b11889/llama-b11889-bin-ubuntu-cuda-12.8-x64.tar.gz
tar xzf llama-b11889-bin-ubuntu-cuda-12.8-x64.tar.gz
./llama-b11889/llama-server -m Qwen3.5-9B-Q4_K_M.gguf -ngl 99 --jinja -np 16 -c 65536

LM Studio nạp model lỗi khi chọn runtime CUDA

Trên P40, lms runtime survey mặc định dùng runtime Vulkan. Mình chọn runtime CUDA 12 bản 2.41.0 để mong nhanh hơn, và lệnh survey báo ngay là card không được hỗ trợ. Mình vẫn thử nạp model, và llama-server bên trong LM Studio dừng với SIGABRT:

text
Compatibility: No supported GPUs - No GPU with compute capability >= 7.5 was found
Error: Engine protocol runtime llama-server for HVBn0Drd5cwsb/qwXShPiECF exited before becoming healthy. exitCode=null, signal=SIGABRT
Terminal LM Studio llmster trên Tesla P40: survey runtime Vulkan thấy Tesla P40 22.50 GiB, chọn runtime CUDA 12 thì báo No GPU with compute capability 7.5, lms load lỗi SIGABRT và log ghi no kernel image is available

Mình quay lại runtime Vulkan:

bash
lms runtime select llama.cpp-linux-x86_64-vulkan-avx2@2.41.0
lms load qwen3.5-9b -y

Vulkan chạy được nhưng chậm hơn llama.cpp bản CUDA (28,5 so với 35,2 token/giây khi một người hỏi).

vLLM không khởi động trên P40

vLLM 0.32.0 kéo theo PyTorch 2.13.0 bản CUDA 13. Mình thử với model nhỏ Qwen3.5-0.8B, server dừng sau 75 giây:

Terminal vLLM 0.32.0 trên Tesla P40: cảnh báo không hỗ trợ bfloat16, torch 2.13.0+cu130 không có kernel cho sm_61, chỉ hỗ trợ sm_75 trở lên, CUDA error no kernel image is available, Engine core initialization failed

Tài liệu cài đặt vLLM ghi yêu cầu card NVIDIA có compute capability từ 7.5. Log gợi ý cài lại PyTorch bản CUDA 12.6, nhưng phần mã riêng của vLLM cũng dựng cho các đời card mới, nên mình không đi tiếp hướng này. Trên P40, mình dùng llama.cpp với -np khi cần phục vụ nhiều người.

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

Tesla P40 có chạy được Ollama không?

Có. Ollama 0.40.11 tự chọn thư viện CUDA 12 cho P40, Qwen3.5-9B chạy 100% trên GPU ở 30,3 token/giây khi một người hỏi. Ollama tự đặt context 4.096 token trên card này.

Tesla P40 có chạy được model 27B, 32B không?

Có, với bản nén 4 bit. Qwen3.5-27B Q4_K_M (16,7GB) chạy trọn trên GPU, sinh 11,9 token/giây. Bài chạy DeepSeek local có số đo deepseek-r1:32b trên P40.

Tesla P40 hay RTX 3090 cho người mới học AI?

Nếu chỉ chạy LLM bằng Ollama hoặc llama.cpp và muốn giá giờ thấp, P40 đủ dùng. Nếu bạn sẽ học thêm PyTorch, tạo ảnh, fine-tune hoặc vLLM, chọn RTX 3090 để khỏi gặp lỗi phần mềm như trong bài.

P40 dùng driver và CUDA bản nào?

Máy P40 mình thuê dùng driver 580.173.02, nvidia-smi báo CUDA 13.0. Phần mềm chạy trên card nên là bản dựng cho CUDA 12 (Ollama tự chọn, llama.cpp chọn bản cuda-12.8, PyTorch chọn bản cu126).

Đọc tiếp

Muốn thử P40 với model của bạn trước khi quyết định? Bạn có thể thuê Tesla P40 trên AIDev Cloud theo giờ, tải llama.cpp bản CUDA 12.8 như trong bài và đo trong khoảng một giờ. Nếu thấy chậm, đổi sang gói RTX 3090 và chạy lại cùng lệnh.

Đo ngày 26/10/2026 trên hai máy AIDev Cloud gói Standard (25 vCPU Xeon E5-2680 v4, 53GB RAM, Ubuntu 24.04.4): Tesla P40 24GB (driver 580.173.02, CUDA 13.0) và RTX 3090 24GB (driver 610.43.02, CUDA 13.3). Ollama 0.40.11, llama.cpp b11889 (bản CUDA 12.8 và 13.4), LM Studio llmster 0.0.25 (runtime Vulkan và CUDA 12 bản 2.41.0), vLLM 0.32.0 với PyTorch 2.13.0+cu130; model Qwen3.5 9B, 27B, 35B-A3B nén Q4_K_M và Q8_0. Thông số P40 (Microway), tài liệu GPU của Ollama và vLLM, thông báo driver của NVIDIA đọc cùng ngày, kiểm lại ngày 08/11/2026.

Tham vấn chuyên môn

Nguyễn Việt Chung

Nhà sáng lập AIDev và VietPlatform · Thạc sĩ AI MSE

  • Tốt nghiệp thủ khoa xuất sắc Thạc sĩ AI MSE.
  • Đồng sáng lập, CTO E-University, SVOnline: số hóa 10+ đại học, 40.000+ sinh viên.
  • Xây hệ thống AI cho doanh nghiệp tại VietPlatform.
Biên soạn: AIDev Team · Rà soát · Quy trình biên tập