Closed
Description
为了保证Fluid分布式训练的稳定性,我们需要在CE系统上添加一些评估指标 (KPI) 来检测每个合并到 develop 分支的代码 (merge request) 是否能够正常的跑多机训练,我们需要使用 aws benchmarking工具来向AWS提交任务并根据输入的日志来计算每个KPI的值:
- 加速比
batch_size | trainers | pservers | GPUs per trainer | thoughput (sampels / sec) |
---|---|---|---|---|
64 | 1 | 0 | 1 | t0 |
64*8 | 1 | 0 | 8 | t1 |
64*8 | 2 | 4 | 8 | t2 |
64*8 | 4 | 8 | 8 | t3 |
参考 https://en.wikipedia.org/wiki/Speedup ,采用吞吐加速比的计算方法
speedup(8GPUs) = t1 / t0
可以得出以下样例结果:
GPUs | speedup |
---|---|
1 | 1 |
8 | 6 |
16 | 10 |
32 | 20 |
- 对于每个任务,我们还需要计算以下指标
- convergence speed:
准确率大于某一值(例如0.6)需要总的训练时间 - GPU memory:
trainer节点和pserver节点的显存占用 - speed:
训练任务的总吞吐 - accuracy
验证精度是否对齐,例如验证单卡(batch_size=80), 32卡4节点(batch_size=20)同样训练5个pass后,test acc
相差小于0.001
- 总结
最终分布式训练在CE上的各项KPI如下:
KPI | value (1*GPU) | value (8*GPUs) | value (16*GPUs) | value (32*GPUs) |
---|---|---|---|---|
speedup | 1 | 6 | 10 | 20 |
speed | 120 (sampels/sec) | 768 (sampels/sec) | 1344 (samples/sec) | 2304 (samples/sec) |
converence speed acc > 0.6 | 1000s | 800s | 700s | 600s |
gpu memory | 12000 (MB) | 12000 (MB) | 12000 (MB) | 12000 (MB) |
test acc_4passes | 0.002 | 0.002 | 0.002 | 0.002 |
注:以上指标值均为样例数据,以实际实验数据为准。
Metadata
Metadata
Labels
No labels