AMD-AGI/FarSkip-Collective

GitHub: AMD-AGI/FarSkip-Collective

该项目通过让 MoE 架构中的通信与计算原生重叠,减少分布式训练和推理中的通信瓶颈,从而提升大规模稀疏模型的 GPU 硬件利用率。

Stars: 2 | Forks: 0

# FarSkip-Collective [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![arXiv](https://img.shields.io/badge/arXiv-2511.11505-b31b1b.svg)](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绕过, 请求拦截, 逆向工具, 通信计算重叠