设模型总层数为 n,单卡最大承载层数为 c,micro batch 数为 m,硬件总卡数为 h。
可行的 PP 需要满足:
题目背景
在大模型训练流水线并行(PP)训练中,需要模型按层切分割多个加速卡(NPU/GPU)上,PP(Pipeline Parallelism,即加速卡数量/stage数)的选择直接影响训练效率:
题目要求
实现一个算法,输入模型总层数,单卡最大承载层数,micro batch数目、硬件总卡数,输出最优PP值和对应的气泡率(四舍五入,保留四位小数)
优化优先级:
一行数据,数据间用空格分隔,依次为模型层数、单卡最大承载层数、micro batch 数目、硬件总卡数
一行两个参数,数据间以空格分隔,最优 PP 值,最优 PP 值对应的气泡率(四舍五入,保留 4 位小数)。如果没有可行PP或输入参数个数不对或输入参数类型不是正整数的,输出 −1−1
输入
9 2 3 4
输出
-1 -1
说明
参数个数满足(4 个),9层模型,单卡最多2层,总卡数=4;
PP=1 →9>2,PP=2 →9%2=0,PP=3 →3>2,PP=4 →9%4=0;无可行PP
输入
10 5 2
输出
-1 -1
说明
3个数,不等4个,直接输出 −1−1
输入
8 4 3 4
输出
2 0.2500
说明
8层模型,单卡最大承载层数(4个),能整除且PP的卡层多4层,micro batch=3,总卡数=4;可行PP=2(每卡4层)、4(每卡2层);PP=2 气泡率 =(2−1)/(3+2−1)=0.25(更小),选PP=2。输出 PP 取值及 0.25,不满 0.2500