在同等 4 卡 A100 环境下,如何量化对比 LLaMA-70B 与 Qwen-72B 的推理延迟与首 token 时间?

解读

面试官想知道三件事:

  1. 你是否能把“延迟”拆成**首 token 时间(TTFT)单 token 延迟(TPOT)**两个独立指标;
  2. 你是否能在4×A100 80 GB这一国内常见上限资源里,把实验做成“可复现、可上线”的工程方案,而不是只跑个 demo;
  3. 你是否能用同一套 LLMOps 压测脚本把结果量化出来,并给出业务可接受的阈值(如 TTFT ≤ 800 ms,TPOT ≤ 50 ms/token)。

知识点

  1. 模型架构差异:LLaMA-70B 采用 GQA(group-query attention),Qwen-72B 使用 MQA+RoPE 外推,注意力计算量不同。
  2. 量化策略:国产卡常需 INT8/INT4 量化,A100 上优先用 AWQ/GPTQ,保持 16 GB 显存余量给 KV-cache。
  3. 并行维度:4 卡只能做 张量并行(TP=4),流水线并行(PP)会引入额外气泡,反而拉长 TTFT。
  4. KV-cache 预算:batch-size=1 时,LLaMA-70B 2048 ctx 需要 约 14 GB KV-cache,Qwen-72B 因层数更深需 约 16 GB,需提前用 nvidia-smi dmon 留 5 GB 安全裕度。
  5. 压测工具链:国内落地用 vLLM 0.4.2+TensorRT-LLM 0.8,配合自研 llmperf 脚本,开 100 条并发流,每条 prompt 512 token、output 256 token,持续 10 min,取 P50/P99。
  6. 指标定义
    • TTFT = 收到第一个 token 的 wall-clock 时间 – 请求发出时间
    • TPOT =(最后一个 token 时间 – 第一个 token 时间)/ (output_len – 1)
  7. 合规要求:若模型权重来自海外,需通过 《生成式 AI 服务管理暂行办法》 安全评估,压测前要先做 内容审计钩子,避免日志里出现敏感 token。

答案

步骤一:环境锁定

  1. 机器:阿里云 ecs.ebmgn7.26xlarge,4×A100 80 GB,NVLink 全互联,BIOS 关闭 NUMA。
  2. 驱动:NVIDIA 535.54.03 + CUDA 12.2,nccl-tests 测得 带宽 193 GB/s,保证 TP4 无降速。
  3. 镜像:官方 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 可直接上线。

拓展思考

  1. 如果客户只有 2×A100,如何在不量化到 INT3 的前提下保证 TTFT ≤ 1 s?
    答:可开 投机采样(speculative decoding),用 Qwen-7B 做 draft,单次前向生成 5 token,接受率 75 % 时,等效 TPOT 可降 30 %,但需额外维护一个小模型,显存占用增加 5 GB,需权衡。
  2. 若业务场景是 流式输出,首 token 后每 3 token 回包一次,如何重新定义“延迟”?
    答:把指标拆成 TTF3T(time to first 3 tokens)3TPT(3-token package time),用 WebSocket 回包时间戳对齐,避免 TCP 拥塞对 P99 的干扰。
  3. 国产化替代:当 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 可持平,需在报告里明确标注“国产化因子”,方便后续商务报价。