n
的最小堆(优先队列)来维护每个 NPU 的当前负载,初值全为 0。直觉:把大的任务优先安排,并始终让它落到当前最“空闲”的设备,可有效压低最大负载。
大模型训练通常采用数据并行的训练方式,处理大规模数据集(样本),加速训练过程,具休的:
假设有n个NPU,m个样本,把m个样本分给n个NPU,每个NPU上有一份完整模型,各自计算自己的样本数据,其中m>=n,保证每个NPU至少分到一个样本,且样本不能切分,一个样本必须完整的被分到个NPU上
每个NPU的运行时间跟所分到的样本的长度和呈正相关。如果每个NPU上的样本长度和相差较大,会形成木桶效应,执行快的NPU等待执行慢的NPU,最终执行时间由最大样本和长度的NPU决定。
试着编号一段程序对样本进行均衡分配,设n个NPU上分得的最大的样本和为lmax,使lmax最小,即求min(lmax)