原生 transformers 推理性能较差,建议替换为:
| 推理引擎 | 适用场景 | 性能提升 |
|---|---|---|
| vLLM | 高并发、API 服务 | ⭐⭐⭐⭐⭐ |
| TGI (Text Generation Inference) | HuggingFace 生态 | ⭐⭐⭐⭐ |
| llama.cpp | CPU / 小显存 / 本地 | ⭐⭐⭐⭐ |
| TensorRT-LLM | 极致性能、NVIDIA GPU | ⭐⭐⭐⭐⭐ |
✅ 生产环境首选:vLLM
pip install vllmfrom vllm import LLM, SamplingParams
llm = LLM(model="meta-llama/Meta-Llama-3-8B-Instruct")
params = SamplingParams(temperature=0.7, max_tokens=512)
output = llm.generate(["你好"], params)| 量化方式 | 精度损失 | 性能提升 |
|---|---|---|
| AWQ | 很小 | ⭐⭐⭐⭐ |
| GPTQ | 小 | ⭐⭐⭐ |
| 4-bit (bitsandbytes) | 中 | ⭐⭐ |
✅ 推荐:
Llama-3-8B-Instruct-AWQ❌ 错误方式:
for prompt in prompts:
model.generate(prompt)✅ 正确方式:
results = llm.generate(prompts)如果是 HTTP 对接:
httpx.AsyncClientimport httpx
async with httpx.AsyncClient(timeout=60) as client:
r = await client.post(url, json=data)stream=True❌ 设置过大:
"max_tokens": 2048✅ 合理限制:
"max_tokens": 512| 场景 | 推荐 |
|---|---|
| 问答 | temperature=0.1~0.3 |
| 创作 | temperature=0.7~1.0 |
export VLLM_ATTENTION_BACKEND=flash-attnvllm serve meta-llama/Meta-Llama-3-70B-Instruct \
--tensor-parallel-size 2重点关注:
locustwrk| 方案 | 吞吐 | 延迟 |
|---|---|---|
| transformers | 低 | 高 |
| vLLM | 高 | 低 |
| vLLM + AWQ | 很高 | 很低 |
✅ 生产最优解
Llama 3 8B
+ vLLM
+ AWQ 量化
+ FlashAttention 2
+ 流式输出如果你愿意,可以告诉我:
我可以直接给你一套 可落地的配置 + 示例代码。