【阿里云计算】【开发者成长】揭秘阿里云大规模深度学习性能优化实践


【阿里云计算】【开发者成长】揭秘阿里云大规模深度学习性能优化实践
本文插图

作者 | 阿里云异构计算AI加速负责人 游亮
近日 , 斯坦福大学公布了最新的 DAWNBench 深度学习榜单 , 这是人工智能领域最权威的竞赛之一 , 是衡量深度学习优化策略、模型架构、软件框架、云和硬件等综合解决方案实力的标准之一 。
在图像识别(Image Classification on ImageNet)榜单中 , 阿里云包揽了训练时间、训练成本、推理延迟以及推理成本四项第一 。
DAWNBench 官方显示 , 阿里云异构计算服务训练 ImageNet 128 万张图片仅需 2 分 38 秒 , 基于含光 800 的 AI 服务识别一张图片仅需 0.0739ms , 同时在训练成本和推理成本上也实现世界纪录的突破 。
此次 , 阿里云创造四项纪录得益于阿里云自研加速框架 AIACC 及平头哥含光 800 芯片 。
其中 , AIACC 是阿里云自主研发的飞天 AI 加速引擎 , 首次实现了统一加速 Tensorflow、PyTorch、MxNet 和 Caffe 等主流深度学习框架 , 在相同的硬件平台下 , AIACC 能够显著提升人工智能训练与推理的性能 。
作为 AIACC 的研发负责人 , 我将在本文内与大家分享阿里云基于 AIACC 的大规模深度学习应用架构和性能优化实践 。
大规模分布式训练是未来趋势 随着深度学习模型越来越复杂 , 对计算力的需求也越来越高 。 ResNet-50 训练 ImageNet 128 万张图片 90 个 epoch 可以达到 75% 的 Top-1 精度 , 用一块 P100 的 GPU 需要大概 5 天的时间 , 而各大厂都分别施展了各自的大规模分布式训练大法来缩短该标杆的训练时间 。
2017 年 7 月 , Facebook 自己设计了 Big Basin 服务器 , 每台服务器用了 8 块 P100 通过 NVLink 互联 , Facebook 用了 32 台合 256 张 P100 用了 1 个小时就训练完 。
2017 年 9 月 , UCBerkeley 发表了一篇文章 , 用了 2048 块 NKL 将训练记录缩短到了 20 分钟 。
2017 年 11 月 , 日本的 Preferred Network 采用了 1024 块 P100 将训练记录缩短到了 15 分钟 。
2017 年 11 月 , Google 也发表了一篇文章 , 用了 256 个 TPUv2 在 30 分钟内训练完 。
2018 年 11 月 13 号 , Sony 公司使用了 2176 块 V100 , 将训练记录缩短到 3 分 44 秒……
这些大厂都在争夺分布式训练的战略制高点 , 可以看出大规模分布式训练会是未来业界技术发展的趋势 。
深度学习应用基础架构 我们先来看看深度学习应用的基础架构 。 整个深度学习应用基础架构图 , 分为 4 个层次 。
【阿里云计算】【开发者成长】揭秘阿里云大规模深度学习性能优化实践
本文插图

从下往上第一层是资源层 , 资源层包括计算资源、存储资源和网络资源 。 我们在做深度学习应用时 , 需要 GPU 服务器的计算资源来做深度学习训练和推理 , 需要存储资源来存训练代码和数据 , 需要网络资源处理多机之间的通信 。
第 2 层是调度层 , 包括了基于容器的调度和基于物理机调度两种调度方式 , 负责向下调度计算资源、存储资源和网络资源 , 向上调度框架层和应用层的计算任务 。
第 3 层是框架层 , 当前主流的深度学习计算框架包括了 Tensorflow、PyTorch、MXNET、Caffe 等主流计算框架 。
第 4 层是应用层 , 应用层包括了图像识别、人脸识别、目标检测、视频识别、CTR 预估、自然语言理解、语音识别等深度学习的应用 , 应用层是由框架层的计算框架来描述和计算用户自己的模型和算法 。
大规模深度学习应用的架构和挑战 先来看一下为什么要做大规模深度学习 。
举个例子 , 我们曾训练一个模型 , 如果用一张 GPU 卡 , 需要 7 天的时间 , 意味着调整模型参数之后 , 可能在 7 天后才知道这个参数是否正确 。 如果我们用一台 8 卡 GPU 的服务器 , 就只需要不到一天的时间就可以训练完 。 如果我们有 10 台这样的 8 卡服务器训练的话 , 可能两三个小时就可以训练完一个模型 。 这样就能很快发现参数是否正确 。


推荐阅读