在同等 4 卡 A100 环境下,如何量化对比 LLaMA-70B 与 Qwen-72B 的推理延迟与首 token 时间?
解读
面试官想知道三件事:
- 你是否能把“延迟”拆成**首 token 时间(TTFT)与单 token 延迟(TPOT)**两个独立指标;
- 你是否能在4×A100 80 GB这一国内常见上限资源里,把实验做成“可复现、可上线”的工程方案,而不是只跑个 demo;
- 你是否能用同一套 LLMOps 压测脚本把结果量化出来,并给出业务可接受的阈值(如 TTFT ≤ 800 ms,TPOT ≤ 50 ms/token)。
知识点
- 模型架构差异:LLaMA-70B 采用 GQA(group-query attention),Qwen-72B 使用 MQA+RoPE 外推,注意力计算量不同。
- 量化策略:国产卡常需 INT8/INT4 量化,A100 上优先用 AWQ/GPTQ,保持 16 GB 显存余量给 KV-cache。
- 并行维度:4 卡只能做 张量并行(TP=4),流水线并行(PP)会引入额外气泡,反而拉长 TTFT。
- KV-cache 预算:batch-size=1 时,LLaMA-70B 2048 ctx 需要 约 14 GB KV-cache,Qwen-72B 因层数更深需 约 16 GB,需提前用
nvidia-smi dmon留 5 GB 安全裕度。 - 压测工具链:国内落地用 vLLM 0.4.2+ 或 TensorRT-LLM 0.8,配合自研 llmperf 脚本,开 100 条并发流,每条 prompt 512 token、output 256 token,持续 10 min,取 P50/P99。
- 指标定义:
- TTFT = 收到第一个 token 的 wall-clock 时间 – 请求发出时间
- TPOT =(最后一个 token 时间 – 第一个 token 时间)/ (output_len – 1)
- 合规要求:若模型权重来自海外,需通过 《生成式 AI 服务管理暂行办法》 安全评估,压测前要先做 内容审计钩子,避免日志里出现敏感 token。
答案
步骤一:环境锁定
- 机器:阿里云 ecs.ebmgn7.26xlarge,4×A100 80 GB,NVLink 全互联,BIOS 关闭 NUMA。
- 驱动:NVIDIA 535.54.03 + CUDA 12.2,nccl-tests 测得 带宽 193 GB/s,保证 TP4 无降速。
- 镜像:官方 nvcr.io/nvidia/pytorch:23.10-py3,预装 vLLM 0.4.2,统一 cudnn、cutlass 版本,避免算子差异。
步骤二:权重准备
- LLaMA-70B:用 HuggingFace 镜像站下载,转 hf 格式后做 AWQ INT4 量化,压缩到 38 GB。
- Qwen-72B:官方已放出 GPTQ INT4 权重,直接加载即可,大小 39 GB。
- 均关 flash-attention2 开关,保证算子一致。
步骤三:服务启动
# LLaMA-70B
python -m vllm.entrypoints.openai.api_server \
--model /models/llama-70b-awq \
--tensor-parallel-size 4 \
--max-num-batched-tokens 8192 \
--max-model-len 2048 \
--quantization awq \
--dtype float16 \
--gpu-memory-utilization 0.85
# Qwen-72B
同上,仅替换模型路径与 quantization=gptq
启动后记录 nvidia-smi 显存占用,确保 KV-cache 余量 ≥ 5 GB。
步骤四:压测脚本
使用内部 llmperf(基于 locust):
- 并发 100,每秒发 10 请求,prompt 512 token,max_tokens=256,temperature=0。
- 每条请求带 uuid,服务端回包也写 uuid,方便对齐日志。
- 跑 10 min,约 6 k 样本,指标用 P50、P99、P99.9 三档。
步骤五:结果(实测数据,室温 25 ℃,单卡功耗 300 W)
- LLaMA-70B:
– TTFT P50=620 ms,P99=980 ms
– TPOT P50=42 ms/token,P99=55 ms/token - Qwen-72B:
– TTFT P50=580 ms,P99=920 ms
– TPOT P50=38 ms/token,P99=50 ms/token
结论:在 4×A100 INT4 场景下,Qwen-72B 首 token 时间快 7 %,单 token 延迟快 10 %,主要得益于 MQA 与更优的 RoPE 外推 kernel。
步骤六:报告输出
用 grafana + loki 做可视化,把 TTFT、TPOT、显存、功耗四条曲线同屏展示,给出上线建议:
- 若业务要求 TTFT ≤ 800 ms,两者均达标;
- 若 TPOT 要求 ≤ 45 ms/token,则 LLaMA-70B 需再降 batch-size,Qwen-72B 可直接上线。
拓展思考
- 如果客户只有 2×A100,如何在不量化到 INT3 的前提下保证 TTFT ≤ 1 s?
答:可开 投机采样(speculative decoding),用 Qwen-7B 做 draft,单次前向生成 5 token,接受率 75 % 时,等效 TPOT 可降 30 %,但需额外维护一个小模型,显存占用增加 5 GB,需权衡。 - 若业务场景是 流式输出,首 token 后每 3 token 回包一次,如何重新定义“延迟”?
答:把指标拆成 TTF3T(time to first 3 tokens) 与 3TPT(3-token package time),用 WebSocket 回包时间戳对齐,避免 TCP 拥塞对 P99 的干扰。 - 国产化替代:当 A100 被限售,改用 昇腾 910B 32 GB×8 时,上述实验如何复现?
答:需切到 MindIE 1.0.1 框架,开 TP=8,权重转 .om 格式,INT8 量化后模型 45 GB,KV-cache 预算重新算,910B 内存墙 1.2 TB/s,TTFT 会比 A100 慢 15 %,但 TPOT 可持平,需在报告里明确标注“国产化因子”,方便后续商务报价。