文档 |
路线图 |
Slack |
微信群 |
知乎 |
English |
中文
DLSlime 是一个以 PeerAgent 为中心的分布式 AI 通信与微服务工具包。 PeerAgent 是运行时枢纽:SlimeRPC、DLSlimeCache 等应用服务构建在 PeerAgent 之上;NanoCtrl 围绕 PeerAgent 提供服务治理和协调元数据; 下层 endpoint API 则驱动 RDMA、NVLink、Ascend Direct 等异构传输。
DLSlime 支持按层接入:应用可以从直接使用 endpoint 开始,也可以加入 PeerAgent 协调、使用 NanoCtrl 做服务治理,或在其上构建 SlimeRPC 和 DLSlimeCache 这样的服务化组件。这些能力同时以 Python/C++ API、本地服务和 HTTP 控制面契约暴露,因此 DLSlime 可以嵌入已有的服务框架、推理系统、缓存 系统或 RL 系统,而不要求替换整套运行栈。
2025
- [2025/12] DLSlime 亮相全球 C++ 及系统软件技术大会,分享“兼顾灵活性和高效性的异构传输库的设计与实现”。查看会议页面。
- [2025/09] DLSlime 以“面向高效异构训推的统一通信库 DeepLink DLSlime”开源发布。阅读微信文章。
- [2025/07] DLSlime 支持上海 AI 实验室发布的 DeepLink 超大规模跨域混训技术方案,包括“3D 并行 + PS”架构及千公里级跨域异构混训落地。查看上海 AI 实验室新闻。
- [2025/06] DLSlime 为 LMDeploy 提供 DeepSeek-V3 PD 分离支持。。
DLSlime 围绕 PeerAgent 组织。应用服务挂载到 PeerAgent 上,NanoCtrl 提供服务治理和协调元数据,endpoint API 驱动底层传输引擎和设备。下图展示 这些层级关系,同时避免应用逻辑绑定到单一传输或拓扑。
- 服务启动后以通用 entity 的形式注册到 NanoCtrl,例如
kind=cache或kind=rpc-worker。 - 每个服务挂载到 PeerAgent 上,而不是自己直接管理 transport state。
- PeerAgent 将 resource record 和 memory region 注册到 NanoCtrl。
- 客户端按
kind和 scope 发现服务,并通过服务对应的 PeerAgent 访问它。 - PeerAgent 通过 NanoCtrl/Redis 交换连接意图和内存区元数据。
- Endpoint 对象通过 RDMA、NVLink、Ascend Direct 或所选 backend 发起实际传输。
当应用已经自行控制 peer placement、metadata exchange 和 memory lifetime 时, 可以直接使用 Endpoint API。这是 DLSlime 中最低层的使用方式:它绕过 NanoCtrl 和 PeerAgent,将应用传输逻辑直接映射到 endpoint-to-endpoint 数据移动。
典型例子包括两进程 RDMA read/write 测试、NVLink 传输检查,以及需要显式控制 初始化过程的 backend bring-up。
示例:p2p_rdma_rc_read.py, p2p_rdma_rc_write.py, p2p_nvlink.py 和 p2p_ascend_read.py。
python dlslime/examples/python/p2p_rdma_rc_read.py
python dlslime/examples/python/p2p_rdma_rc_write.py
python dlslime/examples/python/p2p_rdma_rc_write_with_imm_data.py
python dlslime/examples/python/p2p_rdma_rc_send_recv_gdr.py
torchrun --nproc_per_node=2 dlslime/examples/python/p2p_nvlink.py
python dlslime/examples/python/p2p_ascend_read.pyAscend Direct 设置见 docs/huawei_ascend/README.md。
当应用希望做点对点数据移动,但不想自己管理连接建立、内存区发现和过期状态 清理时,可以使用 PeerAgent。每个进程拥有一个 PeerAgent,通过 NanoCtrl 注册 资源,然后使用 PeerAgent facade 读写远端内存。
这条路径和直接使用 Endpoint 复用同一套数据面,但将协调工作交给 NanoCtrl 和 PeerAgent。它适合多进程服务、动态 peer 发现,以及 SlimeRPC、DLSlimeCache 这类更高层组件。
示例: p2p_rdma_rc_read_ctrl_plane.py 和 p2p_rdma_multi_agents_ctrl_plane.py。
nanoctrl start
python dlslime/examples/python/p2p_rdma_rc_read_ctrl_plane.py当多个 PeerAgent client 需要共享一个 RDMA-backed cache service 时,可以使用 DLSlimeCache。PeerAgent A 和 PeerAgent B 通过 NanoCtrl 发现 Cache Service, 从服务获取 cache assignment metadata,然后通过同一套 PeerAgent 和 endpoint 数据面读写 cache slabs。
在这条路径中,NanoCtrl 让 Cache Service 作为已注册服务可被发现;Cache Service 拥有 cache memory region 和 assignment manifests;PeerAgent client 负责数据移动,而应用进程不需要内嵌 cache placement 逻辑。
示例:cache_client_example.py 和 dlslime-cache design。
nanoctrl start
dlslime-cache start --ctrl http://127.0.0.1:4479 \
--host 127.0.0.1 --port 8765 --memory-size 1G
python dlslime/examples/python/cache_client_example.py --url http://127.0.0.1:8765
dlslime-cache stop当应用逻辑需要调用 Python service,同时希望将传输和 peer 协调留在 DLSlime 内部时,可以使用 SlimeRPC。客户端进程在自己的 PeerAgent 之上使用 SlimeRPC proxy,服务进程在自己的 PeerAgent 之上通过 SlimeRPC server 暴露 Python methods,NanoCtrl 负责让 RPC service 可被发现。
RPC request 和 response 由 PeerAgent transport 承载,而不是走 control plane。 这样 service invocation 保持在应用层,同时复用下层 PeerAgent、endpoint 和 mailbox 数据路径。
示例:rpc_example.py 和 rpc_flatbuf_example.py。
nanoctrl start
python dlslime/examples/python/rpc_example.py --ctrl http://127.0.0.1:4479当 prefill 和 decode 作为独立服务角色运行时,可以用 DLSlime 支持 PD 分离 推理。它遵循 LMDeploy DistServe 的模式:proxy 将请求路由到专门的 Prefill 和 Decode workers,Prefill 计算 prompt KV cache,Decode 生成 token,KV cache 迁移/数据面 backend 在两类角色之间传输 KV cache。
在 DLSlime 中,每个 Prefill 或 Decode worker 都可以建模为一个拥有自己
PeerAgent 的服务。NanoCtrl 按 kind 发现 worker 角色,保存 PeerAgent 的
resource 和 memory metadata,并让 serving proxy 或 worker 建立所需的
prefill-to-decode 连接。KV cache 传输使用 PeerAgent 和 endpoint 数据面,
不经过 control plane。
LMDeploy 参考: DistServe with DLSlimeBackend 和 DistServe with MooncakeBackend.
Coming soon.
pip install dlslime dlslime-ctrlPyPI 包使用默认 CMake flags 构建。需要可选传输后端或本地 C++ 改动时,建议 从源码构建。
git clone https://github.com/deeplink-org/DLSlime.git
cd DLSlime
pip install -v --no-build-isolation -e dlslime
pip install -e dlslime-ctrl # 可选:Rust 控制面通过环境变量传递 CMake flags:
BUILD_NVLINK=ON BUILD_TORCH_PLUGIN=ON \
pip install -v --no-build-isolation -e dlslime仅构建 C++:
cmake -S dlslime -B build -GNinja -DBUILD_PYTHON=OFF -DBUILD_RDMA=ON
cmake --build build| Flag | 默认值 | 说明 |
|---|---|---|
BUILD_RDMA |
ON |
构建 RDMA 传输引擎 |
BUILD_PYTHON |
CMake 中为 OFF,pyproject.toml 中为 ON |
构建 Python bindings |
BUILD_NVLINK |
OFF |
构建 NVLink 传输引擎 |
BUILD_ASCEND_DIRECT |
OFF |
构建 Ascend Direct 传输 |
BUILD_TORCH_PLUGIN |
OFF |
构建 DLSlime torch backend |
BUILD_BENCH |
OFF |
构建 C++ 传输引擎 benchmark |
BUILD_TEST |
OFF |
构建 C++ 测试 |
USE_MACA |
OFF |
为 torch backend 构建启用 Metax 平台支持 |
Benchmark 命令和历史性能表格已经移动到独立目录:
- dlslime/bench/README.md - 传输、endpoint、cache、RPC benchmark 入口
- docs/benchmark-rpc.md - SlimeRPC vs Ray benchmark 说明
常用入口:
# 两节点聚合 RDMA 传输 benchmark
torchrun --master-addr <addr> --master-port 6006 \
--nnodes 2 --nproc-per-node 8 --node-rank <rank> \
dlslime/bench/python/agg_transfer_bench_spmd.py \
--qp-num 8 --transfer-engine dlslime \
--batch-size 64 --num-iteration 100 --num-concurrency 8
# SlimeRPC vs Ray 本地 benchmark
bash dlslime/bench/python/run_rpc_bench.shdlslime/ 核心 Python package、C++ bindings 和运行时 primitives
├── dlslime/ Python 源码
├── examples/ Endpoint、PeerAgent、cache、RPC 示例
├── bench/ Benchmark 脚本和 benchmark README
└── tests/ Python 和 C++ 测试
dlslime-ctrl/ Rust 控制面(服务注册、可观测性)
docker/ dlslime-ctrl 的 Docker Compose 部署
docs/ 设计文档、路线图和平台说明
scripts/ 仓库级自动化(release.sh 等)
- 文档索引
- 路线图
- DLSlimeCache 设计
- Endpoint ownership model
- Endpoint DeviceSignal refactor
- 华为 Ascend 说明
- English README
See LICENSE.






