Skip to content

大模型推理加速技术总览

内容整理自学习笔记,仅供面试备考参考;不构成录用、培训或考试承诺。

1. 当前优化模型最主要的技术手段有哪些?

大模型加速优化可从三个层面入手:

层面技术手段说明
算法层面蒸馏、量化通过模型压缩减少计算量
软件层面计算图优化、模型编译优化计算图的执行效率
硬件层面FP8NVIDIA H 系列 GPU 开始支持,兼有 FP16 的稳定性和 INT8 的速度

2. 推理加速框架有哪些?都有什么特点?

2.1 FasterTransformer

NVIDIA 推出的 FasterTransformer 不修改模型架构,而是在计算加速层面优化 Transformer 的 encoder 和 decoder 模块:

  • 尽可能多地融合除了 GEMM 以外的操作
  • 支持 FP16、INT8、FP8
  • 移除 encoder 输入中无用的 padding 来减少计算开销

2.2 TurboTransformers

腾讯推出的 TurboTransformers 由 computation runtime 及 serving framework 组成,适用于 CPU 和 GPU,无需预处理便可处理变长的输入序列:

  • 与 FasterTransformer 类似,融合了除 GEMM 之外的操作以减少计算量
  • Smart batching:对 batch 内不同长度的序列最小化 zero-padding 开销
  • 对 LayerNorm 和 Softmax 进行批处理,使其更适合并行计算
  • 引入模型感知分配器,确保在可变长度请求服务期间内存占用较小

2.3 vLLM

vLLM 的两大核心技术:

技术说明
Continuous batching有 iteration-level 的调度机制,每次迭代 batch 大小都变化,在大量查询下仍可很好工作
PagedAttention受操作系统中虚拟内存和分页思想启发的注意力算法,是模型加速的秘诀

3. vLLM 篇

3.1 vLLM 的功能有哪些?

  • 文本生成的速度最快
  • 高吞吐量服务:支持各种解码算法,如 parallel sampling、beam search 等
  • 与 OpenAI API 兼容:只需替换端点 URL 即可使用

3.2 vLLM 的优点有哪些?

优点说明
推理速度最快实验多次发现 vLLM 的推理速度是最快的
高吞吐量服务支持各种解码算法(parallel sampling, beam search 等)
兼容 OpenAI API使用 OpenAI API 只需替换端点 URL

3.3 vLLM 的缺点有哪些?

缺点说明
添加自定义模型复杂如果模型没有使用与 vLLM 中现有模型类似的架构,过程会变得复杂
缺乏适配器支持没有 LoRA、QLoRA 等适配器单独使用的选项
缺少权重量化有时 LLM 不需要使用 GPU 内存,权重量化对减少 GPU 内存消耗至关重要

3.4 vLLM 离线批量推理

python
# pip install vllm
from vllm import LLM, SamplingParams

prompts = [
    "Funniest joke ever:",
    "The capital of France is",
    "The future of AI is",
]

sampling_params = SamplingParams(temperature=0.95, top_p=0.95, max_tokens=200)
llm = LLM(model="huggyllama/llama-13b")
outputs = llm.generate(prompts, sampling_params)

for output in outputs:
    prompt = output.prompt
    generated_text = output.outputs[0].text
    print(f"Prompt: {prompt!r}, Generated text: {generated_text!r}")

3.5 vLLM API Server

bash
# 启动服务
python -m vllm.entrypoints.api_server --env MODEL_NAME=huggyllama/llama-13b
bash
# 查询模型
curl http://localhost:8000/generate \
  -d '{
    "prompt": "Funniest joke ever:",
    "n": 1,
    "temperature": 0.95,
    "max_tokens": 200
  }'

4. Text Generation Inference 篇

4.1 介绍一下 Text Generation Inference

Text Generation Inference(TGI)是用于文本生成推断的 Rust、Python 和 gRPC 服务器,在 HuggingFace 中已有 LLM 推理 API 使用。

4.2 TGI 的功能有哪些?

  • 内置服务评估:可以监控服务器负载并深入了解其性能
  • Flash Attention 优化:使用 flash attention(和 v2)和 Paged attention 优化 transformer 推理代码
  • Docker 环境:所有依赖项都安装在 Docker 中,开箱即用
  • 支持 HuggingFace 模型:轻松运行自己的模型或使用任何 HuggingFace 模型中心模型
  • 推理控制:精度调整、量化、张量并行性、重复惩罚等

4.3 TGI 的优点有哪些?

优点说明
内置服务评估监控服务器负载并深入了解性能
Flash Attention 优化对未使用该技术的模型可以进行优化
Docker 部署现成的环境,无需配置
HuggingFace 支持轻松运行任何 HF 模型
推理控制丰富精度调整、量化、张量并行、重复惩罚等

4.4 TGI 的缺点有哪些?

缺点说明
缺乏适配器支持可使用适配器部署 LLM,但目前还没有官方支持或文档
源代码编译困难从 Rust + CUDA 内核编译,对不熟悉 Rust 的人有挑战
文档不完整基础知识在 README 中,更多细节需在问题或源代码中搜索

4.5 TGI 使用 Docker 运行 Web Server

bash
mkdir data

docker run --gpus all --shm-size 1g -p 8080:80 \
  -v data:/data ghcr.io/huggingface/text-generation-inference:0.9 \
  --model-id huggyllama/llama-13b \
  --num-shard 1

TGI 通过 Docker 部署简单快捷,适合快速搭建 LLM 推理服务。