ROCm项目中的LLM推理框架实践指南
概述
在人工智能领域,大型语言模型(LLM)的推理部署是一个关键环节。AMD ROCm平台为LLM推理提供了强大的硬件加速支持,特别是针对AMD Instinct系列处理器进行了深度优化。本文将详细介绍如何在ROCm平台上使用两种主流的LLM推理框架:vLLM和Hugging Face TGI。
vLLM推理框架
核心优势
vLLM凭借其创新的PagedAttention算法在LLM推理领域脱颖而出。该算法通过动态分页机制显著降低了内存消耗并提高了吞吐量。传统方法需要为模型的最大输出token长度预留GPU高带宽内存(HBM),而vLLM则根据实际解码长度动态分配内存,这种机制在以下场景特别有效:
- 多个请求共享相同的键值内容
- 大范围束搜索(beam search)
- 并行处理多个请求
此外,vLLM还集成了多种现代LLM加速和量化算法,包括:
- Flash Attention
- HIP和CUDA图
- 张量并行多GPU支持
- GPTQ和AWQ量化
- Token推测技术
安装与部署
1. 构建Docker镜像
git clone https://github.com/vllm-project/vllm.git
cd vllm
docker build -f Dockerfile.rocm -t vllm-rocm .
单处理器系统部署
- 启动容器:
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 }'
多处理器系统部署
-
启动容器(同上)
-
使用张量并行启动服务(以2个GPU为例):
python -m vllm.entrypoints.api_server --model /app/model --dtype float16 -tp 2 --port 8000 &
- 多实例部署示例(使用不同端口和GPU):
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 &
性能优化建议
对于MI300X处理器,ROCm提供了预构建的优化Docker镜像,包含:
- ROCm运行时
- vLLM框架
- PyTorch
- 调优配置文件
Hugging Face TGI框架
核心特性
Text Generation Inference(TGI)是Hugging Face推出的LLM服务框架,支持多种高性能加速算法:
- Flash Attention和Paged Attention
- CUDA/HIP图
- 张量并行多GPU支持
- GPTQ和AWQ量化
- Token推测技术
安装与部署
1. 启动TGI容器
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
单处理器部署
- 启动服务:
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'
多处理器部署
- 启动服务(以4个GPU为例):
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 &
总结
ROCm平台为LLM推理提供了强大的支持,无论是使用vLLM还是TGI框架,都能充分发挥AMD处理器的性能优势。开发者可以根据具体需求选择合适的框架和部署方式:
- vLLM适合需要高效内存管理和高吞吐量的场景
- TGI提供更全面的服务和基准测试工具
对于MI300X等高性能处理器,建议使用ROCm提供的优化镜像以获得最佳性能。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考