nixl

GitHub
989 292 中等 1 次阅读 今天NOASSERTION开发框架
AI 解读 由 AI 自动生成,仅供参考

NIXL(NVIDIA Inference Xfer Library)是英伟达推出的一款开源库,专为加速 AI 推理框架中的点对点通信而设计。在大规模模型推理场景下,数据在不同节点、不同内存层级(如 CPU 与 GPU)或存储系统间的传输往往成为性能瓶颈,NIXL 正是为了解决这一痛点而生。它通过模块化的插件架构,统一抽象了各类内存和存储后端,让开发者能够高效地管理数据流动,从而显著提升如 NVIDIA Dynamo 等推理系统的整体吞吐量。

这款工具主要面向从事 AI 基础设施开发的工程师和研究人员,特别是那些需要优化分布式推理性能、处理海量键值缓存(KV Cache)迁移的技术团队。NIXL 的独特亮点在于其高度的灵活性与兼容性:它不仅支持多种后端插件扩展,还深度集成了 UCX 高性能通信库及 GDRCopy 技术以挖掘极致带宽,同时提供了便捷的 Python API 和详细的基准测试工具(如 NIXLBench),帮助用户快速验证和优化传输策略。目前,NIXL 专注于 Linux 环境,旨在为构建下一代高效能 AI 推理服务提供坚实的数据传输基石。

使用场景

某大型电商公司正在构建基于 NVIDIA Dynamo 的实时推荐系统,需要在多节点 GPU 集群间高速传输海量用户行为特征数据(KV Cache)。

没有 nixl 时

  • 内存拷贝繁琐:开发人员需手动编写代码在 CPU 内存与 GPU 显存间搬运数据,不仅代码冗余,还极易因指针错误导致服务崩溃。
  • 通信延迟高企:缺乏针对 AI 推理优化的点对点传输机制,跨节点数据同步耗时过长,导致用户刷新页面时推荐结果加载明显卡顿。
  • 存储适配困难:面对文件系统、块存储和对象存储等多种后端,团队不得不为每种存储类型重复开发适配接口,维护成本极高。
  • 资源调度僵化:无法统一抽象不同硬件层的内存资源,导致集群中部分 GPU 因等待数据传输而空闲,整体算力利用率不足 60%。

使用 nixl 后

  • 零拷贝加速:nixl 直接提供统一的内存抽象层,自动处理 CPU 与 GPU 间的数据流转,消除了手动拷贝需求,代码量减少 40% 且稳定性大幅提升。
  • 毫秒级传输:依托底层 UCX 优化及点对点通信加速,跨节点特征数据同步延迟降低至毫秒级,实现了推荐结果的“秒开”体验。
  • 插件化扩展:通过 nixl 的模块化插件架构,团队仅需配置即可无缝切换文件、块或对象存储,新存储后端的接入时间从数周缩短至数小时。
  • 算力满负荷运行:高效的数据流转机制消除了计算等待瓶颈,集群 GPU 利用率攀升至 90% 以上,显著降低了单位请求的硬件成本。

nixl 通过统一内存抽象与加速点对点通信,将复杂的分布式数据搬运转化为透明高效的基础设施,让研发团队能专注于核心算法迭代。

运行环境要求

操作系统
  • Linux
GPU

需要 NVIDIA GPU(用于 CUDA 加速),支持 CUDA 12 或 CUDA 13,需安装 GDRCopy 以获得最佳性能(可选但推荐)

内存

未说明

依赖
notes仅支持 Linux 环境(测试于 Ubuntu 22.04/24.04 和 Fedora),不支持 macOS 和 Windows。可通过 PyPI 直接安装预编译包(nixl[cu12] 或 nixl[cu13])。若从源码构建,需手动编译 UCX 及可选的 ETCD C++ API。支持通过 Docker 容器部署。Rust 绑定可选构建。
python3.12 (示例中使用,建议版本)
UCX 1.20.x
PyTorch
meson
ninja
pybind11
tomlkit
etcd (可选,用于分布式元数据协调)
GDRCopy (可选,用于高性能)
nixl hero image

快速开始

NVIDIA 推理传输库 (NIXL)

NVIDIA 推理传输库 (NIXL) 旨在加速 NVIDIA Dynamo 等 AI 推理框架中的点对点通信,同时通过模块化的插件架构为多种类型的内存(例如 CPU 和 GPU)以及存储(例如文件、块和对象存储)提供抽象层。

许可证 GitHub 发布

文档与资源

  • NIXL 概述 - 核心概念/架构概述 (docs/nixl.md)

  • Python API - Python API 的使用方法及示例 (docs/python_api.md)

  • 后端指南 - 后端/插件开发指南 (docs/BackendGuide.md)

  • 遥测 - 可观测性与遥测细节 (docs/telemetry.md)

  • Doxygen 指南 - API/类图概览 (docs/doxygen/nixl_doxygen.md)

  • Doxygen 图片 - 图表资源 (docs/doxygen/)

  • NIXLBench 文档 - 基准测试使用指南 (benchmark/nixlbench/README.md)

  • KVBench 文档 - KVBench 工作流与教程 (benchmark/kvbench/docs/)

支持的平台

NIXL 目前仅支持 Linux 环境。已在 Ubuntu (22.04/24.04) 和 Fedora 上进行过测试。macOS 和 Windows 当前不支持;请使用 Linux 主机或容器/虚拟机。

预编译发行版

PyPI Wheel

nixl 的 Python API 和库(包括 UCX)可以直接通过 PyPI 获得。 例如,如果您在 Linux 主机、容器或虚拟机上运行 GPU,可以执行以下安装命令:

对于 CUDA 12,可执行:

pip install nixl[cu12]

对于 CUDA 13,可执行:

pip install nixl[cu13]

为保持向后兼容性,pip install nixl 将自动安装 nixl[cu12],继续无缝兼容 CUDA 12 用户,而无需更改下游项目的依赖项。

如果环境中同时安装了 nixl-cu12nixl-cu13,则优先使用 nixl-cu13

源码构建的先决条件(Linux)

Ubuntu:

$ sudo apt install build-essential cmake pkg-config

Fedora:

$ sudo dnf install gcc-c++ cmake pkg-config

Python

$ pip3 install meson ninja pybind11 tomlkit

UCX

NIXL 已在 UCX 1.20.x 版本上进行了测试。

GDRCopy 在 GitHub 上可用,对于实现最佳性能至关重要,但即使没有 GDRCopy,UCX 和 NIXL 也能正常工作。

$ git clone https://github.com/openucx/ucx.git
$ cd ucx
$ git checkout v1.20.x
$ ./autogen.sh
$ ./contrib/configure-release-mt       \
    --enable-shared                    \
    --disable-static                   \
    --disable-doxygen-doc              \
    --enable-optimizations             \
    --enable-cma                       \
    --enable-devel-headers             \
    --with-cuda=<cuda 安装路径>         \
    --with-verbs                       \
    --with-dm                          \
    --with-gdrcopy=<gdrcopy 安装路径>
$ make -j
$ make -j install-strip
$ ldconfig

ETCD(可选)

NIXL 可以使用 ETCD 在分布式环境中进行元数据分发和节点间协调。要将 ETCD 与 NIXL 结合使用:

ETCD 服务器和客户端

$ sudo apt install etcd etcd-server etcd-client

# 或者使用 Docker
$ docker run -d -p 2379:2379 quay.io/coreos/etcd:v3.5.1

ETCD CPP API

https://github.com/etcd-cpp-apiv3/etcd-cpp-apiv3 安装。

$ sudo apt install libgrpc-dev libgrpc++-dev libprotobuf-dev protobuf-compiler-grpc
$ sudo apt install libcpprest-dev
$ git clone https://github.com/etcd-cpp-apiv3/etcd-cpp-apiv3.git
$ cd etcd-cpp-apiv3
$ mkdir build && cd build
$ cmake ..
$ make -j$(nproc) && make install

其他插件

部分插件可能有额外的构建要求,请参阅以下内容:

开始使用

构建与安装

$ meson setup <构建目录名称>
$ cd <构建目录名称>
$ ninja
$ ninja install

构建选项

发布版本(默认)

$ meson setup <构建目录名称>

调试版本

$ meson setup <构建目录名称> --buildtype=debug

NIXL 特定的构建选项

# 示例:自定义选项
$ meson setup <构建目录名称> \
    -Dbuild_docs=true \           # 构建 Doxygen 文档
    -Ducx_path=/path/to/ucx \     # 自定义 UCX 安装路径
    -Dinstall_headers=true \      # 安装开发头文件
    -Ddisable_gds_backend=false   # 启用 GDS 后端

常见构建选项:

  • build_docs: 构建 Doxygen 文档(默认:false)
  • ucx_path: UCX 安装路径(默认:系统路径)
  • install_headers: 安装开发头文件(默认:true)
  • disable_gds_backend: 禁用 GDS 后端(默认:false)
  • cudapath_inc, cudapath_lib: 自定义 CUDA 路径
  • static_plugins: 以逗号分隔的静态构建插件列表
  • enable_plugins: 以逗号分隔的启用插件列表(例如 -Denable_plugins=UCX,POSIX)。不能与 disable_plugins 同时使用。
  • disable_plugins: 以逗号分隔的禁用插件列表(例如 -Ddisable_plugins=GDS)。不能与 enable_plugins 同时使用。

环境变量

有几个环境变量可用于配置构建:

  • NIXL_NO_STUBS_FALLBACK: 如果未设置或设为 0,则在库构建失败时构建 NIXL 存根库。

构建文档

如果您已安装 Doxygen,可以构建文档:

# 配置时启用文档生成
$ meson setup <构建目录名称> -Dbuild_docs=true
$ cd <构建目录名称>
$ ninja

# 文档将生成在 <构建目录名称>/html 中
# 安装完成后(ninja install),文档将在 <prefix>/share/doc/nixl/ 中可用

Python 接口

NIXL 通过 pybind11 提供了 Python 绑定。有关详细的 Python API 文档,请参阅 docs/python_api.md

安装 Python 绑定的首选方式是从 PyPI 使用 pip:

pip install nixl[cu12]

或者对于 CUDA 13 版本:

pip install nixl[cu13]

从源码安装

先决条件:

即使您使用其他类型的 Python 虚拟环境管理器,或直接使用系统范围的 Python 安装而不使用虚拟环境,uv 仍然是必需的。

使用 uv 创建 Python 虚拟环境的示例:

curl -LsSf https://astral.sh/uv/install.sh | sh
export PATH="$HOME/.local/bin:${PATH}"

uv venv .venv --python 3.12
source .venv/bin/activate
uv pip install tomlkit

使用 python-virtualenv 的示例:

curl -LsSf https://astral.sh/uv/install.sh | sh
export PATH="$HOME/.local/bin:${PATH}"

python3 -m venv .venv
source .venv/bin/activate
pip install tomlkit

不使用虚拟环境而直接使用系统范围 Python 安装的示例:

curl -LsSf https://astral.sh/uv/install.sh | sh
export PATH="$HOME/.local/bin:${PATH}"

pip install tomlkit

然后按照 PyTorch 官网上的说明安装 PyTorch:https://pytorch.org/get-started/locally/

安装完先决条件后,您可以从源码构建并安装 NIXL 二进制文件和 Python 绑定。您需要执行以下步骤:

  1. 构建并安装 NIXL 二进制文件。
  2. 构建并安装特定于 CUDA 平台的包(nixl-cu12nixl-cu13)。
  3. 构建并安装 nixl 元包。

对于 CUDA 12:

pip install .
meson setup build
ninja -C build install
pip install build/src/bindings/python/nixl-meta/nixl-*-py3-none-any.whl

对于 CUDA 13:

pip install .
./contrib/tomlutil.py --wheel-name nixl-cu13 pyproject.toml
meson setup build
ninja -C build install
pip install build/src/bindings/python/nixl-meta/nixl-*-py3-none-any.whl

要检查安装是否成功,可以运行以下命令:

python3 -c "import nixl; agent = nixl.nixl_agent('agent1')"

如果安装成功,应输出:

2026-01-08 13:36:27 NIXL INFO    _api.py:363 Backend UCX was instantiated
2026-01-08 13:36:27 NIXL INFO    _api.py:253 Initialized NIXL agent: agent1

您还可以运行一个完整的 Python 示例来测试安装:

python3 examples/python/expanded_two_peers.py --mode=target --use_cuda=true --ip=127.0.0.1 --port=4242 &
sleep 5
python3 examples/python/expanded_two_peers.py --mode=initiator --use_cuda=true --ip=127.0.0.1 --port=4242

更多 Python 示例请参阅 examples/python/

Rust 绑定

构建

  • 使用 -Drust=true meson 选项来构建 Rust 绑定。
  • 使用 --buildtype=debug 进行调试构建(默认为 release)。
  • 或者手动构建:
    $ cargo build --release
    

安装

绑定将被安装到配置的安装前缀下的 nixl-sys 目录中。 可以通过 ninja 从项目构建目录完成安装:

$ ninja install

测试

# Rust 绑定测试
$ cargo test

在您的项目中使用时,只需在 Cargo.toml 中添加:

[dependencies]
nixl-sys = { path = "path/to/nixl/bindings/rust" }

其他构建选项

更多构建选项请参阅 contrib/README.md

构建 Docker 容器

要构建 Docker 容器,首先克隆当前仓库。此外,在尝试构建容器之前,请确保您能够拉取 Docker 镜像到本地机器。

在克隆的 NIXL 仓库根目录下运行以下命令:

$ ./contrib/build-container.sh

默认情况下,容器基于 Ubuntu 24.04 构建。若要构建适用于 Ubuntu 22.04 的容器,请使用 --os 选项,如下所示:

$ ./contrib/build-container.sh --os ubuntu22

要查看容器支持的所有选项,可以运行:

$ ./contrib/build-container.sh -h

容器还包含预构建的 Python wheel 文件,位于 /workspace/dist 目录下,便于安装或分发。此外,也可以使用单独的脚本构建该 wheel 文件(见下文)。

构建 Python wheel 文件

contrib 文件夹中还包含一个用于构建带有 UCX 依赖项的 Python wheel 文件的脚本。请注意,UCX 和其他 NIXL 依赖项必须已安装。

$ ./contrib/build-wheel.sh

使用 ETCD 运行

NIXL 可以使用 ETCD 在分布式节点之间交换元数据。这在容器化或云原生环境中尤为有用。

环境设置

要将 ETCD 与 NIXL 结合使用,需设置以下环境变量:

# 设置 ETCD 端点(必填)——将 localhost 替换为 ETCD 服务器的主机名
export NIXL_ETCD_ENDPOINTS="http://localhost:2379"

# 设置 ETCD 命名空间(可选,默认为 /nixl/agents)
export NIXL_ETCD_NAMESPACE="/nixl/agents"

运行 ETCD 示例

NIXL 包含一个演示使用 ETCD 进行元数据交换和数据传输的示例:

# 如果尚未运行 ETCD 服务器,请启动一个
# 例如:
# docker run -d -p 2379:2379 quay.io/coreos/etcd:v3.5.1

# 按照上述方法设置 ETCD 环境变量

# 运行示例。示例中的两个代理将通过 ETCD 交换元数据,并执行数据传输
./<nixl_build_path>/examples/nixl_etcd_example

nixlbench 基准测试

为了进行更全面的测试,nixlbench 基准测试工具支持使用 ETCD 进行工作节点协调:

# 构建 nixlbench(详情请参阅 benchmark/nixlbench/README.md)
cd benchmark/nixlbench
meson setup build && cd build && ninja

# 使用 ETCD 运行基准测试
./nixlbench --etcd-endpoints http://localhost:2379 --backend UCX --initiator_seg_type VRAM

代码示例

贡献指南

有关贡献指南,请参阅 CONTRIBUTING.mdCONTRIBUTING.md)。

第三方组件

本项目会下载并安装额外的第三方开源软件项目。在使用这些开源项目之前,请务必查看其许可证条款。

版本历史

v1.0.12026/04/14
v1.0.02026/03/13
0.10.12026/03/03
0.10.02026/02/18
0.9.02026/01/21
0.8.02025/11/20
0.7.12025/11/06
0.7.02025/10/24
0.6.12025/10/09
0.6.02025/09/18
0.5.12025/08/28
0.5.02025/08/06
0.4.12025/07/24
0.4.02025/07/10
0.3.12025/07/01
0.3.02025/06/02
0.2.12025/05/22
0.2.02025/05/01
0.1.12025/04/11
0.1.02025/03/18

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|1周前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|1周前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

160k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

109.2k|★★☆☆☆|今天
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|1周前
插件Agent图像

markitdown

MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|1周前
插件开发框架