分析 CNTK 训练 Alexnet 的变体时,结果如下:
Description................ ............Mean ..........StdDev .............Min .............Max ...........Count ...........Total
Main Thread
_Minibatch Iteration : 4379.453 ms 401.522 ms 3984.586 ms 7079.859 ms 64 00:04:40.285
__Forward + Backward : 467.035 ms 375.025 ms 407.861 ms 3443.404 ms 64 29890.221 ms
__Weight Update : 3912.241 ms 214.278 ms 3570.211 ms 4104.718 ms 64 00:04:10.383
Data Reader
当同时使用 SGD 和动量 SGD 时,权重更新构成了训练时间的大部分:
learner = momentum_sgd(ot.parameters, 0.015,0.9,gaussian_noise_injection_std_dev=0.0000001)
问题是使用高斯噪声注入,这通过等待 CPU 提供所需的随机值来瓶颈 GPU。删除参数可解决此问题:
learner = momentum_sgd(ot.parameters, 0.015,0.9)