总体思路

  1. 根据Ascend PyTorch Profiler工具采集NPU的数据,识别通信算子。
  2. 识别通信算子并优化。
    • Tensor Parallelism(模型并行):模型并行是将层内模型权重切分到多个不同的Device上,从而降低每个Device的内存需求。

      优化手段:模型并行通信量大,尽量将模型并行通信域配置在同一节点内。在内存可用空间允许的情况下,使用计算通信并行技术,可参考计算通信并行优化算法

    • Data Parallelism(数据并行):数据并行是将同一全局数据(global batch)下的数据和计算切分到了不同Rank上,每个rank维护相同的模型参数和计算任务,从而减轻了单个设备上的计算和存储压力。

      优化手段:在内存可用空间允许的情况下,将DP域内梯度聚合AllReudce与反向计算并行。

    • Pipeline Parallelism(流水并行):此并行模式是将模型拆分为多个stage,将每一个stage(或多个)部署在不同的Rank上串接起来,前一个stage的输出作为后一个stage的输入的一种方式。对当前PP维度的FeatureMap进行点对点通信,通过TP维度的AllGather与PP维度的Send\Recv组合减小RDMA链路通信数据量,提升通信性能。

      优化手段:配合模型并行(TP)使用,减少PP维度的Send\Recv中RDMA链路通信数据量,提升通信性能