大模型推理服务部署是人工智能落地的关键环节。vLLM和TGI(Text Generation Inference)作为当前主流的两款开源推理引擎,在吞吐量、延迟和部署复杂度上各有优势。AI模型部署场景下,选对推理引擎直接决定了GPU利用率和用户响应体验。
vLLM推理引擎架构与PagedAttention机制
vLLM由加州大学伯克利分校团队开发,核心创新是PagedAttention机制。传统推理中,KV Cache以连续内存分配,导致显存碎片严重,实际利用率往往不到40%。PagedAttention将KV Cache按固定大小的块(block)管理,类似操作系统的虚拟内存分页,显存利用率可提升至90%以上。
vLLM的Continuous Batching策略也是吞吐量优势的关键。传统批处理需要等同一批次所有请求完成才能释放资源,短请求被长请求拖慢。Continuous Batching在每个token生成步骤都检查是否有请求完成并动态加入新请求,实现GPU持续满载。
# vLLM快速部署示例
from vllm import LLM, SamplingParams
llm = LLM(model="meta-llama/Llama-2-13b-chat-hf",
tensor_parallel_size=2,
gpu_memory_utilization=0.9,
max_model_len=4096)
sampling_params = SamplingParams(temperature=0.7, top_p=0.9, max_tokens=512)
outputs = llm.generate(["请解释分布式训练的原理"], sampling_params)
for output in outputs:
print(output.outputs[0].text)
关键参数说明:tensor_parallel_size控制多卡张量并行;gpu_memory_utilization设置vLLM可占用的显存比例,默认0.9;max_model_len限制最大上下文长度,直接影响KV Cache预分配大小。
TGI推理引擎特点与部署配置
TGI由Hugging Face开发,与Transformers生态深度集成,开箱即用体验更好。TGI使用Flash Attention和PagedAttention(v2+版本引入),支持连续批处理,在Llama、Mistral等主流模型上表现稳定。TGI的优势在于模型兼容性广,对Hugging Face Hub上的模型几乎零配置启动。
# TGI Docker部署
docker run --gpus all -p 8080:80 \
-v /data/models:/data \
ghcr.io/huggingface/text-generation-inference:latest \
--model-id meta-llama/Llama-2-13b-chat-hf \
--num-shard 2 \
--max-input-length 2048 \
--max-total-tokens 4096 \
--quantize gptq
TGI通过Docker部署是最简路径。–num-shard指定张量并行数;–quantize支持GPTQ、AWQ量化推理,可显著降低显存占用。TGI还内置了Prometheus指标导出,便于接入监控体系。
性能对比与选型建议
在相同硬件条件(2xA100 80GB)下,对Llama-2-13B模型的实测对比数据:
| 指标 | vLLM | TGI |
|---|---|---|
| 吞吐量(tokens/s) | ~4200 | ~3600 |
| 首token延迟(ms) | ~120 | ~95 |
| 显存利用率 | ~92% | ~85% |
| 量化支持 | AWQ/GPTQ | AWQ/GPTQ |
| 多模态支持 | 支持 | 有限 |
选型建议:追求最大吞吐量选vLLM,PagedAttention的显存管理更激进,批量推理场景优势明显;追求快速部署和模型兼容性选TGI,Docker一条命令启动,与Hugging Face生态无缝衔接;需要多模态推理(图文混合)选vLLM,对Llava等视觉语言模型支持更完善。
推理服务高可用部署架构
生产环境单节点部署无法满足可用性要求。通过Nginx或API Gateway做负载均衡,后端部署多个推理实例,配合健康检查实现故障自动转移。
# Nginx负载均衡配置
upstream llm_inference {
server 10.0.1.10:8000 max_fails=3 fail_timeout=30s;
server 10.0.1.11:8000 max_fails=3 fail_timeout=30s;
server 10.0.1.12:8000 max_fails=3 fail_timeout=30s;
least_conn;
}
server {
listen 443 ssl;
location /v1/completions {
proxy_pass http://llm_inference;
proxy_read_timeout 300s;
}
}
关键配置:least_conn策略将请求路由到连接数最少的实例,比round_robin更适合推理任务的长连接场景;max_fails和fail_timeout配合实现被动健康检查;proxy_read_timeout要设足够长,大模型生成512 tokens可能需要数十秒。
推理监控与调优要点
部署后需要持续监控的核心指标:GPU利用率(nvidia-smi)、推理延迟P99、请求队列深度、KV Cache命中率。vLLM和TGI都暴露了Prometheus格式的指标端点,可直接接入Grafana看板。
常见调优方向:GPU利用率低于70%时,增大max_num_batched_tokens让更多请求并行;首token延迟过高时,减小max_num_batched_tokens降低批处理粒度;OOM错误时,降低gpu_memory_utilization或缩短max_model_len。
原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/da-mo-xing-tui-li-fu-wu-bu-shu-shi-zhan-vllm-yu-tgi-tui-li/