Flux FAQ:NCCL连接失败? kernels命名规则?一文解答所有疑问

Flux FAQ:NCCL连接失败? kernels命名规则?一文解答所有疑问

【免费下载链接】flux A fast communication-overlapping library for tensor/expert parallelism on GPUs. 【免费下载链接】flux 项目地址: https://gitcode.com/GitHub_Trending/flux17/flux

在使用Flux进行GPU上的张量/专家并行计算时,您是否遇到过NCCL连接失败、 kernels命名规则不清晰等问题?本文将汇总Flux使用过程中的常见疑问,为您提供一站式的解决方案和知识梳理。

一、Kernels支持与命名规则

1.1 Kernels类型及对应模块

Flux主要支持以下几类kernels,它们在不同的模块中实现,各自承担着特定的并行计算任务:

  • Dense MLP layer0(AllGather + GEMM):位于src/ag_gemm目录,该模块实现了包含AllGather操作和通用矩阵乘法(GEMM)的密集型MLP第一层计算。
  • Dense MLP layer1(GEMM + ReduceScatter):在src/gemm_rs中,实现了由GEMM和ReduceScatter操作组成的密集型MLP第二层计算。
  • MoE layer0(AllGather + Scatter + GroupGEMM):对应src/moe_ag_scatter模块,用于实现MoE(混合专家模型)的第一层,集成了AllGather、Scatter以及分组GEMM操作。
  • MoE layer1(GroupGEMM + Gather + Topk-reduce + ReduceScatter):位于src/moe_gather_rs,实现了MoE的第二层计算,包含分组GEMM、Gather、Topk-reduce和ReduceScatter等操作。

Flux支持具有张量并行、专家并行以及张量+专家并行的MoE kernels。您可以在examples/moe_flux_only.py中找到一个EP=4的最小示例(注意启用了序列并行,且ffn_tp_size为2)。

1.2 MoE工作流示例

为了更好地理解TP+EP MoE情况下的工作流程,可参考docs/assets/toy_example.png,该图示直观展示了相关操作的执行过程,其中EP的通信在Flux的实现中与GroupGEMM进行了重叠。

关于kernels的详细信息,可查阅设计指南

二、连接问题解决

2.1 NCCL/NVSHMEM连接失败

当初始化Flux时遇到NCCL/NVSHMEM连接挂起或失败的问题,可能是launch.sh脚本中的网络配置存在问题。一个可能的解决方案是手动导出合适的NCCL_SOCKET_IFNAME变量。您可以尝试将其设置为通过ifconfig命令获取的第一个网络接口名称,例如:export NCCL_SOCKET_IFNAME=bond0

如果仍然无法建立连接,可尝试在启动脚本中设置更多描述网络配置的环境变量:

  • export NVSHMEM_BOOTSTRAP_UID_SOCK_IFNAME=bond0
  • export NVSHMEM_IB_ADDR_FAMILY=AF_INET6
  • export NVSHMEM_SYMMETRIC_SIZE=10000000000

三、安装与性能优化

3.1 安装耗时过长

若Flux的安装过程耗时太久,您可以在安装前设置export OMP_NUM_THREADS=128,较高的线程数可能会提高编译速度。

3.2 Kernels性能未达预期

当kernels的性能未如预期时,可能需要对其进行调优,因为kernels的性能在不同硬件和不同形状下可能会有所差异。关于如何调优kernels,请参考调优指南

3.3 性能对比参考

在实际应用中,您可能想了解Flux与其他方案的性能差异。docs/assets/e2e_latency.png展示了端到端延迟的对比情况,docs/assets/flux_moe.pngdocs/assets/torch_moe.png则分别呈现了Flux的MoE和Torch的MoE相关性能表现,可为您的性能优化提供参考。

通过本文的解答,希望能帮助您解决在使用Flux过程中遇到的常见问题,顺利进行GPU上的张量/专家并行计算工作。

【免费下载链接】flux A fast communication-overlapping library for tensor/expert parallelism on GPUs. 【免费下载链接】flux 项目地址: https://gitcode.com/GitHub_Trending/flux17/flux

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值