大家好,我是章北海
大模型训练动辄几千个 A100,几个月的训练,上亿美元的成本。
像 GPT-4o 这样的模型训练成本约为 1 亿美元,Anthropic 最新的大模型训练成本可能高达 10 亿美元。
前段时间震惊海外的 DeepSeek V3 最亮眼的是大幅压缩的预训练成本,也使用了 2000 多个 H800GPU、2 个月时间和 550 万美元。
训练模型这事儿跟普通人太过遥远。。。
本地部署做做推理还稍微能拼一拼
众所知识,模型参数越大、精度越高,做推理时所需的显卡性能越强(显存、算力、带宽)。
大模型按模型参数量分为:亿级(比如常见的 0.5B)、十亿级(4B、7B、8B)、百亿级(14B、32B、72B)、千亿级(110B、405B)等等。
大模型参数浮点精度包括:float32(占用 4 字节,32bit)、float16(16bit)、int8(8bit)、int4(4bit)等。
我看到一种大致的估算关系,不过这样太不严谨了:
1 亿参数:约需要 1-2GB 显存; 10 亿参数:约需要 8-10GB 显存; 100 亿参数:约需要 30-40GB 显存; 1000 亿参数:则至少需要 80GB 甚至更多显存。
HuggingFace上有一个模型运行时所需显存的评估工具 accelerate estimate-memory
https://huggingface.co/spaces/hf-accelerate/model-memory-usage
这个工具可以计算用于推理和训练的模型的内存使用量,解决诸如:
一个大模型,比如 Qwen2.5-72B,需要多少 GPU 显存才可以推理和训练呢? 不同的数据类型,不同的量化,可以节省多少内存呢?
在网页中输入模型名称或 URL,该工具将提供内存使用情况的全面细分,包括数据类型、最大层、总大小和使用不同优化器的训练内存使用情况。比如我让其计算阿里Qwen2.5-72B的显存需求,结果如下:
dtype | Largest Layer or Residual Group | Total Size | Training using Adam (Peak vRAM) |
---|---|---|---|
float32 | 4.64 GB | 276.21 GB | 1.08 TB |
float16/bfloat16 | 2.32 GB | 138.11 GB | 552.42 GB |
int8 | 1.16 GB | 69.05 GB | N/A |
int4 | 594.0 MB | 34.53 GB | N/A |
精度为float32 所需显存时276G, 到int4,就仅需34G了
我在朋友的服务器上测试了一下,Ollama run qwen:72b
总共使用了约 69GB 显存,这个值和用工具测试的int8是一致的。
由此可见,ollama是对qwen2.5做过量化的。
如何选择显卡?推荐两个测评网站
一是NVIDIA 显卡排行榜,此网站能实时对比各种型号显卡,主要是英伟达消费级显卡。
https://technical.city/zh/video/nvidia-rating
二是大语言模型推理专用显存天梯,主要关注内存带宽,这里还有对苹果芯片的测评
https://vmem-for-llms.kcores.com/index-cn
目前国内企业都还在各显神通拿A100,路子不硬就L40、A6000,是在没招的就消费级4090了。
个人啊,咬咬牙4090吧,不过个人没必要一定本地离线跑大模型,毕竟现在大模型api都约等于白送的白菜价。