MxNet的混合精度
使用float16的好处:
1. 借助Tensor Cores加快计算速度:这种GPU本身支持半精度计算;(不支持半精度计算的,例如CPU,反而会更慢)
2. 减少显存空间占用量: Model变小; 可以放更复杂的网络,可以使用更大的batch;减少访存量,减小通信量;
怎样做效果好:
1. 输入数据,网络模型,中间激活,都用float16;
2. 使用float32的:最后一层在softmax之前的输出(因为softmax的分母要做Reduction规约); 参数服务器里的共享w;
3. 临时改变Scale的:反向传播的激活函数梯度;