ROCm项目中LLM推理框架vLLM与TGI的实践指南
·
ROCm项目中LLM推理框架vLLM与TGI的实践指南
【免费下载链接】ROCm 项目地址: https://gitcode.com/gh_mirrors/roc/ROCm
前言
在大型语言模型(LLM)的应用场景中,高效的推理服务是至关重要的环节。ROCm作为AMD的开放计算平台,为LLM推理提供了强大的硬件支持和软件生态。本文将详细介绍如何在ROCm环境下使用两种主流的LLM推理框架:vLLM和Hugging Face TGI(Text Generation Inference)。
vLLM推理框架
核心优势
vLLM凭借其创新的分页注意力(paged attention)机制脱颖而出,这一技术通过动态分配GPU高带宽内存(HBM)显著提升了内存利用率和推理吞吐量。传统方法需要为模型的最大输出token长度预留内存,而vLLM则根据实际解码长度智能分配资源。
vLLM还集成了多项现代LLM加速技术:
- Flash Attention优化注意力计算
- HIP/CUDA图加速
- 多GPU张量并行
- GPTQ和AWQ量化技术
- Token推测执行
安装与配置
Docker环境准备
docker build -f Dockerfile.rocm -t vllm-rocm .
单GPU部署
- 启动容器:
docker run -it \
--network=host \
--group-add=video \
--ipc=host \
--cap-add=SYS_PTRACE \
--security-opt seccomp=unconfined \
--device /dev/kfd \
--device /dev/dri \
-v <模型路径>:/app/model \
vllm-rocm \
bash
- 启动API服务:
python -m vllm.entrypoints.api_server --model /app/model --dtype float16 --port 8000 &
- 测试请求:
curl http://localhost:8000/generate -H "Content-Type: application/json" -d '{"prompt": "什么是AMD Instinct?", "max_tokens": 80, "temperature": 0.0 }'
多GPU部署
- 使用张量并行(-tp参数):
python -m vllm.entrypoints.api_server --model /app/model --dtype float16 -tp 2 --port 8000 &
- 多实例部署示例:
ROCR_VISIBLE_DEVICES=0,1 python -m vllm.entrypoints.api_server --model /data/llama-2-7b-chat-hf --dtype float16 –tp 2 --port 8000 &
ROCR_VISIBLE_DEVICES=2,3 python -m vllm.entrypoints.api_server --model /data/llama-2-7b-chat-hf --dtype float16 –tp 2--port 8001 &
Hugging Face TGI框架
框架特点
TGI是Hugging Face推出的LLM服务框架,同样支持多种高性能加速技术:
- Flash Attention和Paged Attention
- HIP/CUDA图优化
- 多GPU张量并行
- 多种量化方案
- Token推测执行
安装与使用
容器启动
docker run --name tgi --rm -it --cap-add=SYS_PTRACE --security-opt seccomp=unconfined
--device=/dev/kfd --device=/dev/dri --group-add video --ipc=host --shm-size 256g
--net host -v $PWD:/data
--entrypoint "/bin/bash"
--env HUGGINGFACE_HUB_CACHE=/data
ghcr.io/huggingface/text-generation-inference:latest-rocm
单GPU服务
- 启动服务:
export ROCM_USE_FLASH_ATTN_V2_TRITON=True
text-generation-launcher --model-id NousResearch/Meta-Llama-3-70B --dtype float16 --port 8000 &
- 测试请求:
curl http://localhost:8000/generate_stream -X POST -d '{"inputs":"什么是AMD Instinct?","parameters":{"max_new_tokens":20}}' -H 'Content-Type: application/json'
多GPU服务
- 4GPU部署示例:
export ROCM_USE_FLASH_ATTN_V2_TRITON=True
text-generation-launcher --model-id NousResearch/Meta-Llama-3-8B --dtype float16 --port 8000 --num-shard 4 &
性能优化建议
- 内存配置:对于大模型,适当增加共享内存(--shm-size)可以提升性能
- Flash Attention:确保启用ROCM_USE_FLASH_ATTN_V2_TRITON环境变量
- 量化选择:根据硬件配置选择合适的量化方案(bfloat16/float16等)
- 并行策略:多GPU场景下合理设置张量并行度
结语
ROCm平台为LLM推理提供了强大的支持,通过vLLM和TGI这两个框架,开发者可以在AMD硬件上高效部署大型语言模型服务。无论是单GPU开发环境还是多GPU生产部署,ROCm都能提供稳定高效的推理能力。
实际部署时,建议根据具体模型大小、硬件配置和业务需求,灵活调整框架参数和部署方案,以达到最佳的性能和资源利用率。
更多推荐

所有评论(0)