dynamo:面向多节点分布式环境的高性能推理框架
项目介绍
dynamo 是由 NVIDIA 开发的一款面向生成式 AI 和推理模型的高通量低延迟推理框架,专为多节点分布式环境设计。该框架旨在与推理引擎无关(支持 TRT-LLM、vLLM、SGLang 或其他引擎),并捕获特定于大型语言模型(LLM)的能力,以满足复杂推理任务的需求。
项目技术分析
dynamo 的设计理念基于以下几点技术优势:
- 解耦预填充与解码推理:通过最大化 GPU 吞吐量,实现了吞吐量与延迟之间的平衡。
- 动态 GPU 调度:基于需求波动优化性能。
- LLM 感知请求路由:消除不必要的 KV 缓存重新计算,提高效率。
- 加速数据传输:使用 NIXL 减少推理响应时间。
- KV 缓存卸载:利用多种内存层次结构,提高系统吞吐量。
dynamo 采用 Rust 语言实现性能优化,同时使用 Python 语言实现可扩展性,是一款完全开源的项目,采用 Apache-2.0 许可证。
项目及技术应用场景
dynamo 的核心应用场景包括:
- 多节点推理部署:在分布式环境中部署推理任务,有效利用计算资源。
- 生成式 AI 服务:为生成式 AI 应用提供高效的服务支持,如文本生成、图像生成等。
- 推理性能优化:通过智能调度和缓存管理,优化推理性能和响应时间。
以下是安装和运行 dynamo 的基本步骤:
安装
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get install -yq python3-dev python3-pip python3-venv libucx0
python3 -m venv venv
source venv/bin/activate
pip install ai-dynamo[all]
运行和交互
dynamo 支持多种后端,例如 mistralrs
、sglang
、vllm
和 tensorrtllm
。以下是使用 vllm
后端运行一个 Hugging Face 模型的示例命令:
dynamo run out=vllm deepseek-ai/DeepSeek-R1-Distill-Llama-8B
LLM 服务
dynamo 提供了一种简单的方式启动本地的推理组件,包括:
- OpenAI 兼容前端:高性能的 OpenAI 兼容 HTTP API 服务器,使用 Rust 语言编写。
- 基础和 KV 感知路由器:负责路由和负载均衡的组件。
- 工作节点:预配置的 LLM 推理引擎。
以下是启动 dynamo 分布式运行时服务的示例:
启动 Dynamo 分布式运行时服务
docker compose -f deploy/docker-compose.yml up -d
启动 Dynamo LLM 服务组件
cd examples/llm
dynamo serve graphs.agg:Frontend -f configs/agg.yaml
发送请求
curl localhost:8000/v1/chat/completions -H "Content-Type: application/json" -d '{
"model": "deepseek-ai/DeepSeek-R1-Distill-Llama-8B",
"messages": [
{
"role": "user",
"content": "Hello, how are you?"
}
],
"stream":false,
"max_tokens": 300
}' | jq
项目特点
dynamo 的以下特点使其在多节点分布式推理环境中脱颖而出:
- 性能与扩展性:通过 Rust 和 Python 的结合,实现了高性能与易扩展的双重优势。
- 推理引擎无关性:支持多种推理引擎,为用户提供了灵活的选择。
- 智能化调度与缓存:通过动态 GPU 调度和 KV 缓存卸载,显著提高了系统吞吐量和响应时间。
dynamo 作为 NVIDIA 的开源项目,不仅提供了高效的推理服务,还通过开源社区的力量不断发展和完善。对于需要在多节点环境中部署推理服务的用户来说,dynamo 是一个值得尝试的选择。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考