AI 时代的显卡选择
2024 7 14 11:11 PM 375次查看
先说下结论吧:
- 个人学习最简单的方案:16 寸 MacBook Pro M3 Max 128 GB 内存,靠谱的低价约 28000+ RMB。最大可进行约 70B Int8 量化模型的推理(如 Qwen2-72B-Instruct-GPTQ-Int8)。
- 个人学习+游戏需求:RTX 4090,不太好买,约 15000+ RMB。最大可进行约 30B Int4 量化模型或 7B 模型的推理。
- 小规模部署:双 RTX 4090。最大可进行约 70B Int4 或 AWQ 量化模型的推理(如 Qwen2-72B-Instruct-GPTQ-Int4)。
- 训练 70B 的模型:租 8 * Tesla A800/A100/H800/H100 80GB 的服务器(越往右性价比越高),每天约 1000~3000 RMB。
- 追求速度:用各个厂商的云服务。
其他不推荐的选项:
- 192 GB 内存的 Mac Studio 或 Mac Pro:型号较老,价格太贵,唯一的优势是可以进行约 70B 模型的推理。
- RTX 3090 等其他游戏显卡:相较于 RTX 4090 的性价比较低。
- Tesla A100 等高端专业显卡:价格太高,如果要进行 70B 模型的推理需要 2 张(约 15 万 RMB),性价比不如 4 张 RTX 4090。如果用于训练和微调,闲置时有点浪费。
- AMD 显卡:性价比较高,但生态不如 NVIDIA,这意味着很多库和工具不支持 AMD 显卡或性能较差,较新的论文和库一般都只有 NVIDIA 版。不适合学习,除非你确定正好能满足你的需求。
- 国产显卡:价格不低,生态较差,很多库无法使用或需要专门安装老版本的魔改版。
接下来进行解释。
MacBook Pro 的方案是最简单的,价格也不算离谱,耗电也远低于独立显卡。16 寸的性能会好于 14 寸,所以建议买 16 寸。缺点是推理速度大概只有 RTX 4090 的一半,但它是 128 GB 显存最便宜的方案(除了魔改 2080)。此外,生态不如 NVIDIA,但可能因为很多开发者用 Mac,所以支持得还不错。
192 GB 的 Mac Studio 或 Mac Pro 可以跑更大的模型,例如 70B 半精度模型的推理。但是 5 万以上的价格已经超过普通人的承受力了,作为公司的工作站又有点浪费,性价比上不如独立显卡方案。
RTX 4090 一直是一款性价比很高的理财产品,缺点是被美国断供了。它的算力差不多是 RTX 3090 的两倍,而且后者默认矿卡。
它有两个缺点:一是显存只有 24 GB,二是通信带宽受限于 PCIe 4.0,只有 64 GB/s。它的显存对于游戏而言当然够了,但是对大模型而言,比如推理 70B 的模型,大概要 6 张才能跑。而这么多的卡又需要大量的通信,速度也会受限。
如果和 Tesla A100 对比的话,它的单精度算力甚至低于 RTX 4090,但是在 NVLink 加持下,通信带宽达到了 900 GB/s,这使它在实际使用中比后者快不少。
以训练一个小模型为例,Tesla A100 的速度大概是单张 RTX 4090 的两倍,是两张 RTX 4090 的三倍——你没看错,两张 RTX 4090 的训练速度比一张还慢,足以说明通信速度的影响有多大。
但是我并不推荐买 Tesla A100 这种高端专业显卡,它们的优势主要在训练和微调时。而一般的小公司并不太需要随时训练,大概率是训练出一个模型就一直用,除非有了新的基础模型或数据集。因此租显卡更为划算。
NVIDIA 以外的显卡,如果确定需求单一且能满足的话,可以考虑。但是如果是个人学习的话,总会想尝试些新的技术,这时候由于它们的生态差距,你可能会很难受。
另外,国产显卡有很多试用的机会,实在想买可以先试用一下。
分析完优缺点以后,再来考虑买多少张显卡。其实更多的显卡对于推理速度的影响并不太大,因此只要考虑总共需要的显存大小即可。
Hugging Face 提供了一个 Model Memory Calculator 用来估算模型的显存占用。
需要注意的是,这里的估算比较乐观,如果需要更高的上下文数量、并发量和缓存的话,显存最好多预留几 GB。
以 Qwen2-72B-Instruct 为例,它估算出来的 Int4 量化版推理只需要 33.59 GB 显存。然而如果你用 Ollama 部署的话,会发现默认就占用了 40 GB 显存;如果用 vLLM 部署的话,默认会占用 42 GB 显存。
此外,更多的显存可以避免在突发长上下文的请求时 OOM,也可以给 KV Cache 更多的空间,这也会极大影响性能。比如用 lmdeploy 部署时,多 500 MB 缓存可能让速度提升 25%。
另一个需要注意的是推理速度。
如果显存够用的话,vLLM 比 Ollama 快很多。同样是双 RTX 4090 部署 Qwen2-72B-Instruct-GPTQ-Int4,二者在 1 并发时大约 15 tokens/s,2 并发时约 30 tokens/s,但是超过 2 并发时,Ollama 的性能并不再提升,vLLM 却可以在 32 并发时达到约 300 tokens/s。
如果是离线任务,无需考虑延迟的情况下,32 并发能达到更高的吞吐率;但是如果是实时任务,让人等太久也不好,此时减少并发数来降低延迟也是必要的。
此外,如果要达到更快的速度,KV Cache 也会占用一部分显存,甚至可能把 48 GB 显存全占满还提示显存不够用。
较高的上下文也会占用更多的显存,特别是如果把 gpu-memory-utilization 设置得很高,KV Cache 已经把显存占完了,此时突然有一个很长的提示词发过来,很可能因为显存不够导致 vLLM 死掉。
值得注意的是,15 tokens/s 对人类的阅读速度而言还是较慢的。
如果延迟是一个很重要的体验的话,使用云服务会更好。
另一个办法是换成更小的模型,但是准确性可能会打较大折扣。
关于模型,个人建议 70B 左右的就够了,更大的已经无法用 8 * Tesla A100 的方案来微调了,而较小模型的确实不够智能。
大参数的量化模型在同等显存占用的情况下,准确性一般好于小参数的不量化模型。
除显卡外,内存也是很重要的,最好不要低于显存容量,不然可能加载模型时内存爆掉。还有 LM Studio 这类工具可以将模型的一部分加载到内存来降低显存占用(当然会影响速度)。
CPU 在推理和训练时大概率会让单核跑到 100%,在模型加载时会让所有核跑到 100%,所以性能也不能太差,不然会拖后腿。
最后,如果实在没钱的话,还有不少白嫖显卡的途径,启智甚至可以做任务白嫖到 8 * A100。
0条评论 你不来一发么↓