作者: Nicolas Vasilache, Oleksandr Zinenko, Theodoros Theodoridis, Priya Goyal, Zachary DeVito, William S. Moses, Sven Verdoolaege, Andrew Adams, Albert Cohen
提交/修订日期: 2018年2月13日提交,2018年6月29日修订 (v3)
主题分类: 编程语言 (cs.PL); 机器学习 (cs.LG)
摘要:
基于卷积和循环网络的深度学习模型现已无处不在,用于分析海量的音频、图像、视频、文本和图数据,应用于自动翻译、语音转文字、场景理解、用户偏好排序、广告投放等领域。构建这些网络的竞争框架(如 TensorFlow、Chainer、CNTK、Torch/PyTorch、Caffe1/2、MXNet 和 Theano)在可用性与表达性、研究或生产导向以及支持的硬件之间探索不同的权衡。这些框架在计算算子的有向无环图(DAG)上运行,封装了高性能库(如用于 NVIDIA GPU 的 CUDNN 或用于各种 CPU 的 NNPACK),并自动化了内存分配、同步和分布。
当计算不适用于现有的高性能库调用时,通常需要以高昂的工程成本开发自定义算子。这在研究人员发明新算子时经常需要,此类算子会遭受严重的性能损失,从而限制了创新步伐。此外,即使存在框架可以使用的现有运行时调用,它也往往无法为用户特定的网络架构和数据集提供最佳性能,错过了算子间的优化以及了解数据大小和形状后可进行的优化。
本文的主要贡献包括:
1. 一种接近深度学习数学的语言,称为 Tensor Comprehensions。
2. 一个多面体即时编译器,用于将深度学习 DAG 的数学描述转换为具有委托内存管理和同步的 CUDA 内核,同时提供算子融合和针对特定尺寸的专门化等优化。
3. 一个由自动调优器填充的编译缓存。