文号
945833
阅读
51874
回复
2
收藏
0
16GB vRAM GPU的本地大模型选择
2025/07/26
原创
IP:湖南

目前主流大模型的参数量通常在7B 14B 32B这几个挡位,而我们在本地部署的时候通常会考虑量化技术,我们注意到,14b-32b之间模型大小存在一个断层


以主流Q4_K_M量化为例,通常7B模型的尺寸在4.68GB,14B模型在9GB,而32B则直接来到了19.8GB


而目前主流价位的GPU容量通常为8-16GB,14B模型可以较轻松的在12GB的GPU上跑起来,而32B模型在20GB的GPU上运行都较为困难


以目前小模型中表现较好的Qwen3为例,一些研究表明Qwen3在4bit量化时依然保持了接近fp16的性能,但是在3bit量化中性能急剧劣化

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

image.png


这就带来了一个问题,当我们拥有一个16GB的GPU的时候,我们应该选择低于4bit量化的32b模型还是几乎满血的4bit以上量化的14b模型?


根据这篇文章的结论,4bit量化的14b模型是远优于3bit量化的32b模型的,但是文中AWQ量化方式较为原始,实际上现在有更优秀的量化方式,例如i量化:

image.png

图中为iq3_m量化,我们可以看到注意力层中的V矩阵和fnn层中的down矩阵都是4bit的k量化,其余的为iq3s量化,这个模型的体积为14.9GB,在16GB的GPU上还能留出1GB作为KVCache


所以我们自然而然的想测试IQ3_M量化的qwen3-32b和14b模型哪个强


测试工具evalscope,测试数据集选用aime25

32B模型使用IQ3_M量化,14B模型使用Q5_K_M量化(根据上文的结论,该量化性能基本上和fp16无量化版本一致),32B模型因为考虑到要留足够的上下文空间,使用了闪电注意力和KVcache量化,量化精度为Q8_0,上下文长度12000,占用vRAM 15.8GB,14B模型为了统一变量也使用了一样的设置


def run_math_thinking(Model):
    from evalscope import TaskConfig, run_task
    task_cfg = TaskConfig(
        model=Model,
        api_url='http://192.168.3.11:1234/v1/chat/completions',
        eval_type='service',
        datasets=[
            'aime25',
        ],
        dataset_args={
            'math_500': {
                'filters': {'remove_until': '</think>'}
            }
        },
        eval_batch_size=1,
        generation_config={
            'max_tokens': 30000,  # 最大生成token数,建议设置为较大值避免输出截断
            'temperature': 0.6,  # 采样温度 (qwen 报告推荐值)
            'top_p': 0.95,  # top-p采样 (qwen 报告推荐值)
            'top_k': 20,  # top-k采样 (qwen 报告推荐值)
            'n': 1,  # 每个请求产生的回复数量
        },
        timeout=60000,
        stream=True
        # use_cache='outputs/20250427_234222'
    )
    run_task(task_cfg=task_cfg)

if __name__ == '__main__':
    run_math_thinking(Model='qwen3_32b')
    run_math_thinking(Model='qwen3_14b')


结果:

image.png

image.png

两者在AIME2025数据集上得到了完全相同的分数

值得注意的是,在14B能正确回答而32B错误的那些问题中,32B出现了明显的胡言乱语

image.png

这可能是量化过于极端导致的

而32B能回答正确,14B错误的问题中,可以发现14B确实是推导错误:

image.png

从目前的结果来看,32B模型似乎有更高的上限,但是极端量化也会导致胡言乱语现象


当然,目前样本数量过少,很难有足够说服力的结论,这两个模型的测试在我的GPU上跑了超过20小时,我接下来有机会会尽可能测试更多的数据集(虽然我的算力实在是太有限了)也希望各位朋友们能给出一些建议



7-31更新:
阿里今天新发布的模型 Qwen3-30b-a3b-thinking-2507杀死了比赛,比qwen3 32b更强的同时16gb显存刚好可以装入几乎无损的iq4-xs量化,速度远超32b的同时aime25甚至拿到了85分,即便卸载kvcache到内存,这个模型依然比32b更快
我尝试一段时间再下结论,目前看来这个模型很有希望成为16GB vRAM的最优解

image.png


更新:新的测试结果,qwen3-30ba3b-thinking-2507 unsloth的UD2.0 q3k_xl量化,aime25拿到了76分

强于32b q3量化和14b q5量化,应该是目前16GB GPU能运行的数学能力最强的模型了


image.png



8-6更新

最近开源届真过年了,OpenAI发布了gpt-oss-20b,官方提供的MXFP4量化就只有12GB,完美运行

[ 修改于1年3个月前 - 2025/08/06 09:51:29 ]
1年3个月前IP:浙江
945834
1楼

量化后似乎也可能显存溢出导致胡言乱语

以下是网上摘的一句

模型推理中间态对显存的占用不会因为量化而变小。

另外,方便问一下楼主用的是什么GPU吗

引用
评论
yuanfeng作者
1年3个月前IP:湖南
945869
2楼

GPU型号是3080ti laptop GPU 16GB

开启了共享显存,逻辑上是拥有40GB的显存空间,有24GB的地址空间是映射到内存,理论上应该不会有溢出导致胡言乱语的现象,不过也不能排除共享显存会不会出bug

引用
评论
1
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的