进阶端侧 / 本地 3 分钟阅读发布于 · 更新于

单卡 RTX 4090 运行 Qwen2.5-Coder 32B

Qwen2.5-Coder 32B 的哪个版本在多长的上下文下能装进 24GB 显卡,以及需要 32K 时该换用的 MoE 代码模型。

面向的技术栈

RTX 4090 24GB · Ollama/llama.cpp(GGUF Q4_K_M,4K)或 Linux 上的 vLLM(AWQ INT4,8K 以内宽裕)

最近一次修改后未重新实机运行 —— 命令请当作起点,而不是已验证的配方。

Qwen2.5-Coder32BRTX 4090GGUF

开始之前

一张 RTX 4090 或其他 24GB 显卡,以及下载之前要做的两个决定:用哪种格式,以及你实际需要多长的上下文。在这张卡上,Qwen2.5-Coder 32B 提供的几种格式落在不同的判定区间里,而上下文长度会让每一种都越过一条线。如果你用 Windows,AWQ 路线意味着 vLLM,而它只支持 Linux,所以要准备 WSL2。

bash
nvidia-smi --query-gpu=name,memory.total,memory.used --format=csv

格式和上下文窗口决定能不能装下

Qwen2.5-Coder 32B 的 GGUF Q4_K_M 在 4K 上下文下约 21.7 GB,占 24GB 显卡的 90%,本站称之为偏紧。8K 时 95%,到 16K 就放不下了。Qwen2.5-Coder 32B 的 AWQ INT4 在 4K 上下文下约 18.1 GB,75%,属于宽裕;8K 仍宽裕(80%),16K 偏紧(89%),32K 放不下。本索引还收录了 EXL2 3.5bpw 版本,4K 下约 16.0 GB,是三者中最小的,但 ExLlamaV2 已归档、没有服务端,只适合本地聊天。

bash
# GGUF via Ollama: simplest path; Ollama's default 4K window is the one that fits
ollama pull qwen2.5-coder:32b

# AWQ via vLLM (Linux / WSL2): more headroom, 8K stays comfortable
vllm serve Qwen/Qwen2.5-Coder-32B-Instruct-AWQ \
  --max-model-len 8192 \
  --host 127.0.0.1 --port 8000

如果你需要长上下文:MoE 代码模型

如果要跨整个文件甚至整个仓库写代码,32B 稠密模型在 24GB 上还没到实用的上下文长度就没空间了。本索引里的 Qwen3-Coder 30B-A3B 能撑得更长:Qwen3-Coder 30B-A3B 的 GGUF Q4_K_M 在 4K 上下文下约 19.7 GB(82%,宽裕),32K 下约 22.6 GB(94%,偏紧);AWQ INT4 在 4K 上下文下约 16.4 GB,32K 下约 19.2 GB,占显卡 80%,仍然宽裕。它是混合专家模型,每个 token 只读取约 3B 激活参数,所以带宽上限比 32B 稠密模型高得多。本站没有它的实测数据,也不跑代码能力评测,无法判断哪个模型写代码更好。

bash
# Long-context coding on one 24GB card (Linux / WSL2).
# Substitute a real AWQ conversion — this site could not confirm
# which repo publishes one, so it does not guess a name.
vllm serve <an-AWQ-build-of-Qwen3-Coder-30B-A3B-Instruct> \
  --max-model-len 32768 \
  --host 127.0.0.1 --port 8000

# Or GGUF Q4_K_M at 32K (tight) through llama.cpp:
# llama-server -m <Qwen3-Coder-30B-A3B Q4_K_M .gguf> -ngl all -c 32768

确认它真的跑在 GPU 上

在占用 90% 的情况下,GGUF Q4_K_M 留给显示器或第二个进程的余量很少。只要有别的东西在占显存,它就是那个放不下的模型,而新版 Ollama 和 llama.cpp 这时会悄悄把一部分层挪到 CPU 上,而不是直接报错。加载时盯着显存,并确认层都放在了哪里。

bash
nvidia-smi --query-gpu=memory.used,utilization.gpu --format=csv -l 1

# Ollama: PROCESSOR should read 100% GPU
ollama ps

# llama.cpp: confirm every layer offloaded
# load_tensors: offloaded 65/65 layers to GPU

数字大概该是什么样

本索引有一条基础版 Qwen2.5 32B 的实测记录,规模和架构相同:RTX 4090 上用 llama.cpp 跑 GGUF Q4_K_M 为 44 tok/s。这不是 Coder 版本的实测。但生成速度受「显存带宽 ÷ 权重体积」约束,而两个文件大小相同,所以上限一样:1,008 GB/s 除以 18.7 GB 权重约为 54 tok/s。AWQ 的权重更小,意味着上限更高,但本索引在这个规模上没有 AWQ 的实测数据。

跑不起来的时候

在有其他程序运行时 GGUF Q4_K_M 爆显存,或 Ollama 显示有 CPU 份额:占卡 90% 时这是预料之中的,关掉别的 GPU 程序或改用 AWQ。只有调大上下文才出问题:GGUF 几乎没有给 KV 缓存增长的空间(8K 时 95%,16K 放不下),AWQ 到 16K 偏紧、32K 放不下 —— 要长上下文,请用上面的 MoE 代码模型。vLLM 在桌面机上启动失败:`--gpu-memory-utilization`(默认 0.9)是相对整张卡的比例,显示器或浏览器占的显存都会从 vLLM 的预算里扣,关掉它们或把值调低一点。处理长文件时提示词很慢:任何格式的 32B 稠密模型都这样,prefill 是算力瓶颈。

常见问题

Qwen2.5-Coder 32B 在 RTX 4090 上能宽裕运行吗?

取决于格式和上下文长度。Qwen2.5-Coder 32B 的 GGUF Q4_K_M 在 4K 上下文下约 21.7 GB,占显卡 90%,本站称之为偏紧,16K 时放不下。Qwen2.5-Coder 32B 的 AWQ INT4 在 4K 上下文下约 18.1 GB(75%),8K 以内宽裕,16K 偏紧,32K 放不下。

本索引里哪个代码模型能在 24GB 显卡上跑 32K 上下文?

Qwen3-Coder 30B-A3B。它的 AWQ INT4 在 32K 下约 19.2 GB,占显卡 80%,宽裕;GGUF Q4_K_M 在 32K 下为 22.6 GB,偏紧但放得下。Qwen2.5-Coder 32B 的 AWQ 和 GGUF 在这张卡上都放不下 32K。本站不跑代码能力评测,所以不按质量给这两个模型排序,只比较放不放得下。

大概能有多少 tok/s?

本索引在 RTX 4090 上用 llama.cpp 实测同规模的基础版 Qwen2.5 32B(GGUF Q4_K_M)为 44 tok/s。对 Coder 版本来说这是一个合理的参照,因为文件大小、也就是带宽上限(约 54 tok/s)是一样的。这个规模的 AWQ 没有实测数据,Qwen3-Coder 30B-A3B 也没有。

这篇指南用到了什么

接下来

看看 🟢 RTX 4090 还能跑哪些模型反向查询 —— 24GB、4096 上下文,按质量排序

本文涉及的模型

它真的跑起来了吗?

复制命令并不等于它能用,所以站内只在这里问一次。除了你的这个回答之外,不收集任何东西。

相关指南

部署指南仅供学习参考。每个模型均有独立许可协议 — 下载或部署前请阅读 Hugging Face 官方模型卡。