点击上方“视学算法”,选择加"星标"或“置顶

重磅干货,第一时间送达

萧箫 发自 凹非寺
量子位 报道 | 公众号 QbitAI

在不做乘加操作(multiply-adds)的情况下,能计算矩阵乘法吗?

矩阵乘法包含大量a+b×c类运算,因此常在运算中将乘法器和加法器进行结合成一个计算单元,进行乘法累加操作。

近似算法的话,确实可以!

这是来自MIT的最新研究,他们提出了一种新的近似算法MADDNESS,在确保一定精度的情况下,将速度提升到了现有近似算法的10倍,比精确算法速度快100倍,被ICML 2021收录。

研究还认为,新算法可能比最近大火的稀疏化、因子化等操作更有前途。

目前,作者已经开源了算法代码,感兴趣的小伙伴们可以去尝试一下。

一起来看看。

用K聚类算法搞个查找表

这个算法,借鉴了一种叫做乘积量化(Product Quantization)的方法。

其中,量化本质上是一种近似操作。

由于矩阵乘法中的每个元素,都可以看做是两个向量的点积,因此可以通过查找相似向量,来近似地估计向量的点积,而无需再进行大量乘法运算。

乘积量化的具体原理如下:

当我们输入一个要计算的向量a的时候,函数g(·)会对a进行一个近似操作,从一个提前设置好的数值查找表中,找到与它最相近的那个值,并输出一个近似的向量g(a)。

与此同时,这张表格中的每个值,都已经提前做过点积计算了,因此在输出g(a)的同时,它与查询向量(query vector)b对应的近似点积计算结果h(b)也能被查表并输出。

最后,只需要用f(·,·)函数对g(a)和h(b)做加法运算,而不需要再做乘法计算了。

简单来说,就是通过近似查表的方法,节省了矩阵乘法中的乘法计算时间。

那么,这样的数值查找表,究竟要设置什么数值,才能确保在近似计算过程中,损失的计算精度最小呢?

这里借鉴了一下K聚类算(K-means)的思路,即将数据预分为K组,随机选取K个对象作为初始聚类中心,再通过训练迭代,确保在将样本分到K个类中时,每个样本与其所属类中心的距离之和最小。

可视化的K聚类算法

通过这种方法计算出来的数值查找表,能更准确地近似矩阵乘法的数值计算结果。

根据这样的思路,作者们提出了一种高效的向量乘积量化函数,能在单CPU中每秒编码超过100GB的数据;同时,还提出了一种针对低位宽整数的高速求和函数。

然后,基于这两类函数,整出了一套全新的矩阵乘法算法MADDNESS。

这个近似算法的效果如何呢?

精度保持,效率提升数倍

这个算法所需要的算力并不高,在搭载英特尔酷睿i7-4960HQ(2.6GHz)处理器的Macbook Pro上就能完成。

他们在Keras版本的VGG16模型上进行了测试,所用的数据集是CIFAR-10/100,对一系列最新的近似算法进行了评估:

从图中来看,在效率提升接近10倍的情况下,采用MADDNESS(图中红线)仍然能在CIFAR-10上保持几乎不变的精度。

即使是在CIFAR-100上,在精度几乎不变的情况下,MADDNESS和MADDNESS-PQ也同样实现了效率最大化的结果。

除了最新算法外,与其他的现有算法相比(包括作者们在2017年提出的Bolt算法),效果同样非常拔尖。

对比计算速度的话,MADDNESS的点积速度就能比现有最快方法快两倍左右。

当然,也有读者指出,这篇论文还存在一些待解决的问题:

①论文用的是VGG16模型,但没有在Transformer等更经典的模型(如BERT)中进行实验;②虽然对矩阵乘法进行了加速,但毕竟只是近似算法,意味着潜在的精度损失;③没有在GPU中测试评估结果。

但他仍然认为,这不失为一篇非常有意思的研究。

作者介绍

Davis Blalock,MIT的计算机系博士生,致力于研发快速机器学习算法,他认为速度是衡量机器学习模型的一个非常重要的因素。

John Guttag,MIT计算机系教授,研究方向是机器学习、AI和计算机视觉,目前的研究项目集中在医疗AI和医学成像上。

值得一提的是,这两位研究人员,此前还炮轰过神经网络中的剪枝算法

他们针对其中的81种算法进行了横向对比,发现“没有明确证据表明,这些算法在10年内,对任务效果有明显改善”。

研究一作Davis Blalock还认为:

这些改进都是所谓的“微调”,而不是科研人员声称的“核心创新”,甚至有些改进方法可能根本就不存在。

在对AI模型进行效率提升上,两位作者确实是很严格了。

项目地址:
https://github.com/dblalock/bolt

论文地址:
https://arxiv.org/abs/2106.10860

参考链接:
[1]https://mp.weixin.qq.com/s/VK2W9zD83ddSzYSLLS21UQ
[2]https://news.ycombinator.com/item?id=28375096

本文系网易新闻•网易号特色内容激励计划签约账号【量子位】原创内容,未经账号授权,禁止随意转载。

点个在看 paper不断!

ICML 2021:矩阵乘法无需相乘,速度提升100倍,MIT开源最新近似算法相关推荐

  1. ICML 2021文章引发热议:矩阵乘法无需相乘,速度提升100倍

    ©作者 | Synced 来源 | 机器之心 在一篇被 ICML 2021 接收的论文中,MIT 的一位计算机科学博士生及其业界大佬导师为矩阵乘法引入了一种基于学习的算法,该算法具有一个有趣的特性-- ...

  2. 矩阵乘法无需相乘,速度提升100倍,MIT开源最新近似算法 | ICML 2021

    萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 在不做乘加操作(multiply-adds)的情况下,能计算矩阵乘法吗? 矩阵乘法包含大量a+b×c类运算,因此常在运算中将乘法器和加法器进 ...

  3. MIT 的新型开源系统 Taco 将数据分析速度提升 100 倍 !(附论文)

    来源:全球人工智能 概要:麻省理工学院(MIT)开发的一种新型计算机系统为涉及"稀疏张量"(sparse     tensor)的计算加快了速度,稀疏张量是主要由0组成的多维数据数 ...

  4. 开源sk-dist,超参数调优仅需3.4秒,sk-learn训练速度提升100倍

    作者 | Evan Harris 译者 | Monanfei 编辑 | Jane  出品 | AI科技大本营(ID:rgznai100) [导语]这篇文章为大家介绍了一个开源项目--sk-dist.在 ...

  5. 骗你不是人 硬盘传输速度提升100倍的方法

    这年头大家应该都用上固态硬盘了吧?之前说过,要想花最少的钱升级硬件,换块固态硬盘是最具性价比的方案,立竿见影. 总之现在固态硬盘应该是一种趋势,你看最近新出的笔记本电脑使用的基本都是固态硬盘,传统的机 ...

  6. 镭速-文件传输数据实时对比!一秒将传输速度提升100倍

    上世纪90年代,万维网的出现,使信息传输发生了翻天覆地的变化,大多数企业采用http超文本传输协议进行数据传输.然而随着社会的不断进步和科技发展,以及互联网新时代的引领,各行各业更是产生了大量前所未有 ...

  7. 机器学习让3D设计速度提升7倍!Adobe最新Substance 3D小白也能入门

    来源丨Adobe 编辑丨好困  新智元 Adobe研究了半天的机器学习又派上了用场,其宣布了Substance 3D全家桶的软件工具即将迎来一大波更新,性能将大幅提升,同时也整合进了Creative ...

  8. cuda矩阵相乘_CUDA入门实战2:将矩阵乘法速度提升5000倍

    本实验采用不同的方法来计算 8192 * 8192 的整型矩阵乘法运算. C语言版 C语言是大家公认的高性能语言,那我们就从C语言开始吧. // 用一位数组表示二维矩阵 mat1 = (int*) m ...

  9. 阿里 AI 研究成果入选国际顶会 ICML 2020,AI 推理速度提升 3 倍

    近日,人工智能国际顶会ICML 2020公布了论文收录结果,阿里巴巴7篇论文入选,是入选论文数量最多的中国科技公司.ICML是机器学习领域全球最具影响力的学术会议之一,今年接受率仅为21.8%. 根据 ...

最新文章

  1. Linux编译器GCC的使用
  2. redis主从配置 从而实现数据备份和读写分离
  3. CTFshow 反序列化 web267
  4. 在Javascript中 声明时用var与不用var的区别,== 和 ===的区别
  5. 数据结构(一)--稀疏数组
  6. Unity(创建脚本)
  7. 解决win10使用GPU跑程序遇到的一系列报错
  8. 电路理论与linkage Mapper的安装
  9. 【PL/SQL】开发程序
  10. MATLAB语言初步学习(三)
  11. 纯新手DSP编程--5.21--RTDX
  12. 用TestComplete实现一个关键字驱动测试框架
  13. kubernetes 升级到1.6
  14. VS编程,几个好用的Visual Studio插件推荐(二)
  15. Eviews回归结果解读
  16. RFC 文档中文目录
  17. FDTD Solutions自学整理笔记入门教程(2):PML
  18. 兼容IE8的文件下载,解决IE下载文本和图片直接打开问题
  19. 全新MN梦奈宝塔主机系统V1.5版本源码
  20. 你真的会用@Transactional吗?

热门文章

  1. 什么样的程序员才算成熟? 让程序员认清自己的所处的阶段
  2. 鸽巢原理(The Pigeonhole Principle)(抽屉原理)
  3. Oracle 10G重建EM DB Control.
  4. Numpy入门教程:03.数组操作
  5. 技术图文:如何进行代码的重构?以封装 BigOne API 为例
  6. 【怎样写代码】工厂三兄弟之抽象工厂模式(三):产品等级结构与产品族
  7. 【通俗理解线性代数】 -- 矩阵的等价与相似
  8. 与15级新加入团队同学的约定
  9. 2021《程序员》数字科技企业研发实力榜TOP50
  10. PyTorch攻势凶猛,程序员正在抛弃TensorFlow?