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 推理服务。