ROCm项目中LLM推理框架vLLM与TGI的实践指南

【免费下载链接】ROCm 【免费下载链接】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部署
  1. 启动容器:
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
  1. 启动API服务:
python -m vllm.entrypoints.api_server --model /app/model --dtype float16 --port 8000 &
  1. 测试请求:
curl http://localhost:8000/generate -H "Content-Type: application/json" -d '{"prompt": "什么是AMD Instinct?", "max_tokens": 80, "temperature": 0.0 }'
多GPU部署
  1. 使用张量并行(-tp参数):
python -m vllm.entrypoints.api_server --model /app/model --dtype float16 -tp 2 --port 8000 &
  1. 多实例部署示例:
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服务
  1. 启动服务:
export ROCM_USE_FLASH_ATTN_V2_TRITON=True
text-generation-launcher --model-id NousResearch/Meta-Llama-3-70B --dtype float16 --port 8000 &
  1. 测试请求:
curl http://localhost:8000/generate_stream -X POST -d '{"inputs":"什么是AMD Instinct?","parameters":{"max_new_tokens":20}}' -H 'Content-Type: application/json'
多GPU服务
  1. 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 &

性能优化建议

  1. 内存配置:对于大模型,适当增加共享内存(--shm-size)可以提升性能
  2. Flash Attention:确保启用ROCM_USE_FLASH_ATTN_V2_TRITON环境变量
  3. 量化选择:根据硬件配置选择合适的量化方案(bfloat16/float16等)
  4. 并行策略:多GPU场景下合理设置张量并行度

结语

ROCm平台为LLM推理提供了强大的支持,通过vLLM和TGI这两个框架,开发者可以在AMD硬件上高效部署大型语言模型服务。无论是单GPU开发环境还是多GPU生产部署,ROCm都能提供稳定高效的推理能力。

实际部署时,建议根据具体模型大小、硬件配置和业务需求,灵活调整框架参数和部署方案,以达到最佳的性能和资源利用率。

【免费下载链接】ROCm 【免费下载链接】ROCm 项目地址: https://gitcode.com/gh_mirrors/roc/ROCm

Logo

免费领 200 小时云算力,进群参与显卡、AI PC 幸运抽奖

更多推荐