专栏名称: AI前线
我们专注大数据和机器学习,关注前沿技术和业界实践。每天发布高质量文章,技术案例等原创干货源源不断。同时有四千人的社群微课堂,每周一次业界大牛技术分享,也希望你能从这里分享前沿技术,交流深度思考。
目录
相关文章推荐
阿里云大数据AI平台  ·  从MaxCompute到Milvus:通过D ... ·  昨天  
阿里云大数据AI平台  ·  从MaxCompute到Milvus:通过D ... ·  昨天  
数据派THU  ·  多模态RAG实战指南:完整Python代码实 ... ·  3 天前  
51好读  ›  专栏  ›  AI前线

24分钟完成ImageNet训练,刷新世界纪录

AI前线  · 公众号  · 大数据  · 2017-09-18 19:29

正文

请到「今天看啥」查看全文


为了实现这一目标,我们需要确保该算法能够使用更多处理器并在每次迭代时加载更多数据——也就是说,要在 SGD 采用更大的 batch size。这里我们用单一英伟达 M40 GPU 来假定单机器用例。在特定范围内,batch size 越大,则单一 GPU 的速度就越快(如图 2 所示)。其原因在于,低级矩阵计算库在这种情况下拥有更高的执行效率。在利用 ImageNet 训练 AlexNet 模型时,其中每 GPU 的最优批量大小为 512。如果我们希望使用大量 GPU 并保证每 GPU 皆拥有理想的执行效率,则应当将批量大小设定为 16 x 512 = 8192。

图 2,在特定范围内,批量处理方式能够显著提升系统性能(例如 GPU)。本图中的数据收集自利用 ImageNet 数据集在英伟达 M40 GPU 上对 AlexNet 进行训练的实际流程。其中 batch size 为每 GPU 512 时,处理速度最快;batch size 为每 GPU 1024 时会发生内存不足。

在理想情况下,如果我们固定数据整体访问量并根据处理器数量线性增加 batch size,每次迭代的 batch size 越大,所需要的迭代次数就越少。在增大 batch size 的同时,我们可以使用更多处理器以保持单次迭代时间基本维持恒定。如此一来,我们就可以获得线性加速比(如表 1 所示)。

表 1,comp 表示计算,comm 表示机器之间的通讯, t 表示单次迭代时间。只要我们在增大 batch size 的同时使用更多机器,就可以将迭代次数维持到基本恒定。这样总时间就能够以线性速度大大减少。

可惜,SGD 算法的 batch size 并不能无限制地增大。SGD 采用较大的 batch size 时,如果还是使用同样的 epochs 数量进行运算,则准确度往往低于 batch size 较小的场景 ; 而且目前还不存在特定算法方案能够帮助我们高效利用较大的 batch size。表 2 所示为基准测试下的目标准确度。举例来说,如果我们将 AlexNet 的 batch size 设置为 1024 以上或者将 ResNet-50 的 batch size 设置为 8192 以上,则准确度的测试结果将严重下降(如表 4 与图 3 所示)。

表 2,未配合数据增强情况下的 ImageNet 训练基准结果







请到「今天看啥」查看全文