GPU 的细粒度与模型并行和流水线并行关系
使用模型并行和流水线并行之后会涉及到一个模型切分细粒度的问题,先切分多头(并行执行),每一个多头在切分不同阶段(串行执行)。这种情况下GPU的细粒度是多少
在这种模型并行和流水线并行结合且按多头和阶段切分的情况下,GPU 的细粒度会因模型结构和具体的切分策略而有所不同。
以一个具有 8 个头的多头注意力机制的 Transformer 层为例,假设使用 4 个 GPU 进行模型并行和流水线并行。
首先进行多头切分,将 8 个头平均分配到 4 个 GPU 上,每个 GPU 负责 2 个头的计算,这就是**多头切分的粒度。**此时每个 GPU 在这一步的计算相对独立,但在后续可能需要进行一些信息汇总或交互。
然后对于每个头所对应的计算阶段(比如计算注意力权重、进行线性变换等阶段),进一步在每个 GPU 内部进行流水线切分。假设每个头的计算分为 3 个阶段,在每个 GPU 上这 3 个阶段就形成了一个小的流水线。
例如,在第一个 GPU 上,对于它负责的 2 个头,首先头 1 的第一阶段计算开始