AMD-AGI/FarSkip-Collective
GitHub: AMD-AGI/FarSkip-Collective
该项目通过让 MoE 架构中的通信与计算原生重叠,减少分布式训练和推理中的通信瓶颈,从而提升大规模稀疏模型的 GPU 硬件利用率。
Stars: 2 | Forks: 0
# FarSkip-Collective
[](https://opensource.org/licenses/MIT) [](https://arxiv.org/abs/2511.11505)
## 概述
FarSkip-Collective 模型修改了混合专家架构,以实现原生的通信与计算重叠,同时获得与原始 MoE 架构相当的性能。
通过显著减少暴露的通信开销,该架构在 GPU 上为更稀疏、更大规模的 MoE 架构释放了更高的硬件利用率。
本仓库基于 [FarSkip-Collective: Unhobbling Blocking Communication in Mixture of Experts Models](https://arxiv.org/abs/2511.11505) 中所述的研究。
FarSkip 模型修改了 MoE transformer 块的依赖图,并使用部分和过时的激活作为 MoE 子块的输入,从而允许 MoE 通信的重叠。
FarSkip-Collective 架构的准确性已通过 100B+ 参数规模的大规模 MoE 和大规模预训练消融实验得到验证。
我们在下面分别提供了针对训练和推理的优化实现。训练使用 [Primus](https://github.com/AMD-AGI/Primus) 框架 + MegatronLM 后端实现,并遵循 Primus `dev/farskip` 分支中的细节[链接](https://github.com/AMD-AGI/Primus/tree/dev/farskip)。
推理引擎使用 SGLang 实现,并遵循我们下文描述的设置。
对于训练,我们提供了 FarSkip-Collective 的重叠实现和参考实现。主要实现是优化的重叠实现,可在前向和反向传播中实现通信重叠。
参考实现用于调试和原型设计。当激活确定性子层路径时,参考实现和重叠实现会产生逐位精确的前向传播。
## 设置(推理)
1. 拉取 LMSYS AMD SGLang Docker 镜像(MI30x / MI325x 机器)
```
docker pull lmsysorg/sglang:v0.5.6-rocm700-mi30x # sha256:1e4030610e482c9f09c29309b223d2ad1f1ed4c56c2e00d5c352f5673a860770
```
2. 启动交互式 Docker 容器
```
IMAGE_NAME=lmsysorg/sglang:v0.5.6-rocm700-mi30x
docker run \
-it \
--rm \
--network=host \
--ipc=host \
--privileged \
--device=/dev/kfd \
--device=/dev/dri \
--device=/dev/infiniband \
--group-add video \
--cap-add=SYS_PTRACE \
--security-opt seccomp=unconfined \
--shm-size 200G \
-v $HOME:$HOME \
--name 'sglang_env' \
$IMAGE_NAME \
/bin/bash
```
## 用法
在 `inference` 目录下,我们提供了 FarSkip 的 SGLang 实现。
### 单节点
要使用经过 FarSkip-Collective 连通性修改的 DeepSeek-V3 进行单节点推理测试,请在 Docker 容器内运行:
```
cd "/path-to-farskip/inference/" # TODO replace with correct path
MODE=FARSKIP bash scripts/benchmark_farskip_deepseek_v3.sh
```
这里 `MODE` 通过以下选项控制所使用的架构路径。
| FLAG | DESCRIPTION |
|----------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------|
| `MODE=FARSKIP` | 启用 FarSkip-Collective 模型连通性和通信与计算重叠实现 |
| `MODE=FARSKIP_REFERENCE` | 启用 FarSkip-Collective 模型连通性,使用不带通信与计算重叠的更简单的参考实现(用于测试) |
| `MODE=OFF` | 常规 DeepSeek-V3 模型架构推理(原始路径) |
### 多节点
除了单节点设置外,在每个节点上,根据集群的 NIC 驱动程序(例如 Mellanox、Broadcom 等),在容器内安装相关的 NIC 驱动程序。
对于多节点启动,我们需要在运行之前在每个节点上设置 `MASTER_ADDR` 和 `RANK`。
要使用经过 FarSkip-Collective 连通性修改的 DeepSeek-V3 进行 2 节点测试,请在每个节点的 Docker 容器内运行:
```
# rank=0
RANK=0 MASTER_ADDR=: MODE=FARSKIP bash scripts/multinode_benchmark_farskip_deepseek_v3.sh
# rank=1
RANK=1 MASTER_ADDR=: MODE=FARSKIP bash scripts/multinode_benchmark_farskip_deepseek_v3.sh
```
### 更多详情
出于调试目的,要测试 `DeepseekV2FarSkipDecoderLayer` 和 `DeepseekV2ReferenceFarSkipDecoderLayer` 解码器类,您可以设置 `FARSKIP_DISABLE_CONNECTIVITY=1`。
这仍将使用新的相应 FarSkip 解码器类,但使用常规的模型连通性,从而使 FarSkip 失效(您可以在 `deepseek_v2.py` 下找到更多详细信息)。
### 引用
```
@article{dukler2025farskip,
title={FarSkip-Collective: Unhobbling Blocking Communication in Mixture of Experts Models},
author={Dukler, Yonatan and Li, Guihong and Shah, Deval and Appia, Vikram and Barsoum, Emad},
journal={arXiv preprint arXiv:2511.11505},
year={2025}
}
```
标签:DLL 劫持, MegatronLM, SGLang, 人工智能, 凭据扫描, 大语言模型, 模型推理, 模型训练, 混合专家模型, 用户模式Hook绕过, 请求拦截, 逆向工具, 通信计算重叠