大数据 > 12倍端到端加速,陈天奇创业公司OctoML提出克服二值网络瓶颈新方

12倍端到端加速,陈天奇创业公司OctoML提出克服二值网络瓶颈新方

2020-04-30 12:00阅读(61)

去年,TVM开发团队Chen Tianqi等人创建了它,以“使机器学习能够部署在所有硬件上”。 不久前,该公司推出了首款软件即服务产品,该产品可以帮助开发人员更轻松

1
去年,TVM开发团队Chen Tianqi等人创建了它,以“使机器学习能够部署在所有硬件上”。 不久前,该公司推出了首款软件即服务产品,该产品可以帮助开发人员更轻松,更快速地将ml模型部署到设备上。 最近,该公司的官方博客Riptide推出了一种快速的端到端二进制神经网络,当使用TVM进行优化时,它可以实现多达12倍的端到端加速。 该公司的机器学习系统工程师Josh Fromm在他的博客中详细介绍了Riptide。

是由TVM开发团队Chen Tianqi等人于去年创建的,旨在“使机器学习能够部署在所有硬件上”。 不久前,该公司推出了首款软件即服务产品,该产品可以帮助开发人员更轻松,更快速地将ml模型部署到设备上。 最近,该公司的官方博客Riptide推出了一种快速的端到端二进制神经网络,当使用TVM进行优化时,它可以实现多达12倍的端到端加速。 该公司的机器学习系统工程师Josh Fromm在他的博客中详细介绍了Riptide。

Riptide是一种新的模型量化方法,可以将模型量化为1或2位。 研究团队于今年3月在mlsys上介绍了Riptide。 本文重点介绍了为何应构建Riptide及其在幕后的工作方式。 该团队计划明年在octomizer中添加自动超低位功能。 在此之前,读者可以使用开源Riptide项目和mlsys论文中的信息来优化模型。

论文链接:https://proceedings.mlsys.org/static/paper_files/mlsys/2020/155-paper.pdf GitHub项目:https://github.com/jwfromm/riptide

动机和背景

机器学习发展 迅速。 几乎每个月,这些出色的新模型都会极大地改善视觉或语言任务的SOTA。 其中一些改进是由新算法和体系结构创新推动的,但对于深度学习任务,不断扩展的计算能力和内存也取得了长足的进步。

随着ML准确性的提高而扩展了全文本

,模型所需的计算能力和内存也在增加。

早在2016年,我们就可以看到模型规模与准确性之间的关系。 目前,许多SOTA模型只能在最新的NVIDIA GPU(或GPU集群)上有效运行。 许多用户无法在高端GPU上花费数千美元,这限制了模型部署的范围。 由于各种网络可能只需要训练一次,因此开发人员可能能够证明训练成本是合理且有效的。 但是,一旦部署了模型,它将由大量用户长时间运行。 为了以这种规模部署最新模型,通常需要将输入数据流传输到云并将预测返回给用户设备。 现在,许多应用程序都依赖此方法,但是它具有一些缺点,这体现在网络连接,延迟,隐私问题以及庞大而复杂的基础结构中。 为了避免这些缺点,许多团队探索了如何直接在低成本最终用户硬件(例如手机或IOT设备)上运行最新模型。 这是一个巨大的挑战,因为此类设备没有足够的计算能力或内存。 例如,树莓派3比NVIDIA Titan GPU慢4000倍。 为了使高精度模型适应这种平台,最近的研究方向已经开始探索如何使这种网络运行得更快并且占用更少的内存。 在更高级别上,这些技术遵循两种策略:体系结构优化和近似优化。 架构优化涉及寻找连接层的新方法,以减少延迟或提高参数有效性。 Mobilenet和squeezenet是专注于移动端的两种体系结构。 与创建新的移动设备友好模型相反,近似优化旨在通过在保持足够准确性的同时加快操作速度来提高现有模型的速度。

两种流行的近似优化方法。 在最近流行的近似优化中,知识蒸馏和修剪是两种代表性方法(如上图所示)。 前者试图使用大型教师网络来更好地培训学生,而后者则消除了对网络影响较小的权重和激活功能。 本文将重点介绍另一种方法,即二进制神经网络,该方法在泛化性能,加速潜力,内存压缩等方面具有出色的性能。 为了提高性能并减少内存需求,研究团队在部署模型时越来越多地量化激活功能和权重。 例如,在推理过程中,工程师可以将模型转换为可以执行int8(8位整数)运算的方式,而不是通常在培训中使用的float32(IEEE 754单精度浮点数) 处理。 小整数运算不仅比浮点运算快,而且占用的位数更少,因此它们可以通过充分利用可用的内存带宽来提高吞吐量。 在实践中,对许多模型进行了量化而没有明显的准确性损失,因此该技术非常受欢迎。

二值化使量化达到极限,将网络权重和激活函数降低到仅一位,这将带来一些新的优化。 考虑两个1位值之间的所有可能的乘法(如下图所示),这与“和门”的逻辑真值表非常相似。

如果值为0的位表示-1,则上表将成为相同或门的真值表。

此等价关系使我们可以用更有效的二进制运算代替浮点运算。

比较浮点数乘积(上)和二进制点乘积(下)。

用于计算上图中点积的内部循环中的运算次数。 可以发现,二值化可以将第一层中的操作数减少到原始层的1/43,并将参数大小减少到1/32。当如此大的体积的优化效果首次由courbarioux等人提出时 ,二进制网络研究的兴起于2016年开始。当然,用1位值近似32位浮点数是有损的近似值。 与相应的全精度相比,二元网络通常具有显着的精度损失,并且top-1精度损失接近20%。 因此,二进制网络的研究重点一直放在如何减少精度损失上。

尽管许多研究团队在提??高二进制网络的准确性方面取得了长足的进步,但他们并未以可测量端到端加速度的方式来实现网络。 这种缺乏实现的方式不仅使人们难以知道二进制网络的实际速度,而且使二进制网络无法在许多实际环境中应用。 缺少实现

的原因是要编写一个简单的二进制矩阵乘法,尽管运算的数量相对较少,但它仍然比大多数全精度乘法慢得多。 函数的运行时间不取决于其运行的次数,并且内存的访问模式也起着重要的作用。 任何二进制网络的实现都必须与诸如openblas和mkldnn之类的库竞争。 这些库在大型工程团队中经历了多年的手动优化,其难度是可行的。 对于大多数研究机构而言,不可能花费大量时间和精力来构建具有竞争力的Kugen。 取而代之的是,他们假设可以根据操作次数预测加速度,从而在训练过程中模拟二值化。 为了解决这些问题,octoml研究人员提出了Riptide,这是一种发现并解决端到端二进制网络瓶颈的方法。 Riptide基于TVM,它是一种深度学习系统编译器,可以帮助我们自动生成优化的高性能二进制运算符。 到目前为止,二进制网络的优化仅关注有效实现低位卷积层的不同策略。 这种观点是基于这样的假设,即二进制网络的性能可以反映高精度网络的行为:如果核心卷积可以使用尽可能少的位达到足够高的精度,则整个网络将变得非常快。 但是,没有二进制网络仅由卷积组成。 卷积之间有许多关键的中间操作,需要使用这些中间操作来处理下一层数据。 在高精度网络中,可以忽略这些层的延迟,但是在二进制网络中,卷积可以实现43倍的加速,中间的“胶层”变得非常重要。

的两个卷积之间的“绑定层”及其计算复杂性。 H和W代表输入尺寸,f代表过滤器数量。

当前的大多数二进制网络在上图中至少包含四个蓝色层(在qconv和量化之间)。 首先,从左到右,将qconv的输出从整数形式量化为等效的浮点数。 然后,权重缩放(传播实值权重的大小)和批归一化(保持活动分布可预测)用于缩放。 然后,通过使用诸如relu之类的非线性激活函数,将结果重新量化为单个位,并打包用于下一个量化卷积。 为了了解

的重要性,可以想到squeezenet(一种更高效的移动部署体系结构)。 假设典型的输入大小约为200x200像素,并且二进制卷积的实现速度是全精度的43倍,则可以估计网络在绑定层中的总执行时间。

假设二值化可以将卷积速度提高近43倍。 可以进一步估计,粘合层的较高精度将消耗总推理时间的约70%。 这是一个相当大的瓶颈! 即使以较低的卷积速度(例如20和10倍),胶合层仍会消耗大约一半的推理时间。 因此,研究人员认为,为了实现二进制网络所承诺的加速,绑定层也必须是二进制的!

引入了融合胶操作,仅需两条指令即可完全取代粘合层。 有关详细信息,请参见本文。 关键思想是用移位运算代替乘法,将缩放项近似为2的幂,并用定点量化近似代替浮点加法和减法。 定点量化近似值可以直接添加到二进制卷积输出中。 综上所述,可获得以下等式:

其中n是用于量化网络激活的位数。 最后一行求解Q(a),给出完整的熔合方程。 通过替换此融合和绑定操作,可以创建一个完全二进制的网络:

研究人员还对Imagenet数据集进行了广泛的精度扫描,发现与其他SOTA二进制网络相比,上述内容中的融合和绑定操作将 不会造成任何精度损失。

这是个好消息,因为在体系结构级别消除了胶合瓶颈之后,您现在就可以开始