第7章:模型加载、权重格式与显存预算

📅 2026/6/16 9:51:05
第7章:模型加载、权重格式与显存预算
1. 项目背景某金融科技团队要将一个70B参数的模型部署到生产环境。运维拿到四张A100-80GB GPU后直接启动了vLLM服务,结果启动日志显示CUDA out of memory——四张卡合计320GB显存,但连一个70B模型都跑不起来。经过一番排查,团队发现了几个致命问题:第一,gpu_memory_utilization用了默认值0.9,但KV Cache的预留算法在长上下文场景下放大了显存占用;第二,团队下载的是FP32原始权重(70B × 4 bytes = 280GB模型权重),但实际显存还要加上KV Cache、CUDA context、中间激活等多层开销,四张卡根本不够;第三,团队额外用了swap_space=4(4GB CPU内存做KV Cache备份),但这个参数在多GPU场景下每个Worker都会独立占用一份。痛点:模型部署不是"买够显存就完事"。实际显存占用 = 模型权重 + KV Cache预分配 + CUDA context + 中间激活 + 通信缓冲。其中模型权重由dtype决定(FP16是FP32的一半),KV Cache由max_model_len和gpu_memory_utilization共同决定。如果不在部署前做精确的显存预算估算,上线后要么OOM,要么刻意压低参数导致吞吐下降。本章将从模型目录结构开始,讲解权重格式(safetensors、分片)、显存计算公式和调参实验方法,让读者掌握"看一眼模型大小就知道需要多少显存"的能力。