学界 | OpenAI 发布稀疏计算内核,更宽更深的网络,一样的计算开销

作者:杨晓凡

概要:OpenAI 的研究人员们近日发布了一个高度优化的 GPU 计算内核,它可以支持一种几乎没被人们探索过的神经网络架构:带有稀疏块权重的网络。


OpenAI 的研究人员们近日发布了一个高度优化的 GPU 计算内核,它可以支持一种几乎没被人们探索过的神经网络架构:带有稀疏块权重的网络。取决于不同的稀疏程度,这些内核的运行速度可以比 cuBLAS 或者 cuSPARSE 快一个数量级。OpenAI 的研究人员们已经通过这些内核在文本情感分析和文本图像的生成中得到了顶尖的成果。


在深度学习领域,模型架构和算法的开发很大程度上受制于 GPU 对基础计算操作的支持到什么程度。具体来说,其中有一个问题就是通过 GPU 实现稀疏线性操作时计算效率太低。OpenAI 这次发布的计算内核就是为了支持这个的,同时也包含一些实现的多种稀疏模式的初期成果。这些成果已经展示出了一些潜力,不过还算不上是决定性的证据。OpenAI 的研究人员们也邀请更多深度学习领域的研究人员一起参与,携手继续改进这个计算内核,让更多的计算架构变得可能。


密集连接的层(左侧)可以用稀疏的、更宽的层(中间)或者稀疏的、更深的层(右侧)替代,而计算时间几乎不变


稀疏权重矩阵与密集权重矩阵有明显的不同,就是其中的很多值都是零。稀疏权重矩阵是许多模型所向往的基础部件,因为有稀疏的块参与的矩阵乘法和卷积操作的计算成本只是和块中非零数字的数目成比例而已。稀疏性的一个明显的好处,就是在给定的参数数目和计算资源限制下可以训练比别的方法宽得多、深得多的神经网络,比如实现带有上万个隐层神经元的LSTM网络(当下能训练的LSTM只有上千个隐层神经元而已)。


计算内核

密集权重矩阵(左)、稀疏块权重矩阵(中)的示意图。白色的区域意味着权重矩阵中对应的位置是0


这个计算内核可以让全连接和卷积层高效地利用稀疏块权重。对于卷积层来说,这个内核的输入和输出特征维度都可以是稀疏的;而空间维度中的连接性不受到任何影响。稀疏性的定义是在块的级别上定义的(如上右图),而且为大小为 8x8、16x16、32x32 的块做了优化(在这里展示的就是 8x8 的块)。在块的级别上,稀疏模式是完全可以自己配置的。由于这个内核在计算时会直接跳过值为 0 的块,所以消耗的计算资源就只和非零的权重的数目成正比,而不是像以往一样和输出/输出特征的数目成正比。存储这些参数的开销同样和非零的权重的数目成正比。



与 cuBLAS 相比,这个内核在不同稀疏比例下的加速倍数。测试条件:很宽的神经网络(12288 个隐层神经元),块大小为 32x32,mini-batch 大小为 32;测试硬件为 NVIDIA Titan X Pascal GPU,CUDA 版本为 8.0。在测试的这些稀疏比例下,相比 cuSPARSE 的速度提升比例还要高一些。


应用这个计算内核


OpenAI 的研究人员们也展示了一些在TensorFlow中进行稀疏矩阵乘法的示例代码


from blocksparse.matmul import BlocksparseMatMul

import tensorflow as tf

import numpy as np


hidden_size = 4096

block_size = 32

minibatch_size = 64


# Create a (random) sparsity pattern

sparsity = np.random.randint(2, size=(hidden_size//block_size,hidden_size//block_size))


# Initialize the sparse matrix multiplication object

bsmm = BlocksparseMatMul(sparsity, block_size=block_size)


# Input to graph

x = tf.placeholder(tf.float32, shape=[None, hidden_size])


# Initialize block-sparse weights

w = tf.get_variable("w", bsmm.w_shape, dtype=tf.float32)


# Block-sparse matrix multiplication

y = bsmm(x, w)

# Run

sess = tf.InteractiveSession()

sess.run(tf.global_variables_initializer())

result = sess.run([y], feed_dict = {x: np.ones((minibatch_size,hidden_size), dtype='float32')})


print(result)


微缩 LSTM


稀疏块内核有一种非常有意思的用途,就是用来创建微缩神经网络。微缩图之间可以进行连接,图中的任意两个节点都只需要很少的几个步骤就可以连接起来,即便整张图有数十亿个节点也可以。OpenAI的研究人员们想要实现这样的微缩连接性的原因是,即便网络是高度稀疏的,他们仍然希望信息可以在整张图中快速传播。人类大脑就显示出了微缩连接模式,从而也带来了「如果LSTM有同样的特性,它的表现能否有所提高」的问题。通过微缩稀疏连接性的应用,OpenAI 的研究人员们高效地训练了带有大约 2 万个隐层神经元的 LSTM 模型,同时网络的宽度也要比参数总数目类似的网络宽 5 倍。训练后的网络在文本生成建模、半监督情感分类上都有更好的表现。



在微缩图中,即便稀疏程度很高的情况下节点之间也只需要很少的步数就可以互相连接。上面动图里显示的是从二维 Watts-Strogatz 微缩图中,中央的节点(像素)向外激活的情况;另外为了更好的观感做了随机的平滑。在这张图中,不同节点之间路径长度的平均值小于5,和 OpenAI 研究员们的 LSTM 实验中 Barabasi-Albert 图的状况类似。


情感表征学习


OpenAI 的研究人员们训练了参数数目差不多的稀疏块权重网络和密集权重矩阵网络,对比它们的表现。稀疏模型在所有的情感数据集上都取得了更好的表现。在 IMDB 数据集上,OpenAI 的这个稀疏模型把此前最好的 5.91% 错误率大幅降低到了 5.01%。相比 OpenAI 此前一些实验中只在短句上有好的表现,这次在长句中也显示出了有潜力的结果。


基于生成式密集和稀疏模型提取的特征训练的线性模型的情感分类结果。这里的密集和稀疏模型有几乎相等的参数数目。


压缩任务的表现


借助稀疏的、更宽的 LSTM 模型,比特数每字符的压缩结果在实验中从 1.059 进步到了 1.048,同样是在具有差不多的参数数目的模型上达到的。带有稀疏块的线性层架构如果换成密集连接的线性层,这个结果也可以得到进一步的提高。OpenAI 的研究人员们在用于 CIFAR-10 的 PixelCNN++ 模型上做了一个简单的修改,把正常的 2D 卷积核换成了稀疏核,同时把网络变得更深的同时保持其它的超参数不变。修改之后的网络也把比特数每维度的数值从 2.92 降低到了 2.90,达到了这个数据集上的最好结果。


未来研究方向


神经网络中的多数权重在训练结束后都可以剪枝。如果让剪枝动作配合此次的稀疏内核使用,那推理时能节省多少计算时间、提高多少计算速度呢?


在生物大脑中,网络的稀疏结构有一部分是在成长时确定的(成长的另一个作用是改变连接强度)。人造神经网络中是否也能有类似的做法呢,就是不仅通过梯度学习连接权重,同时还学习最优的稀疏结构?近期有一篇论文就提出了一种学习稀疏块 RNN 的方法,OpenAI 最近也提出了一个算法用来在神经网络中做 L0 规范化,两者都可以在这个方向上起到作用。


OpenAI 的研究人员们这次训练了带有上万个隐层神经元的 LSTM 模型,带来了更好的文本建模表现。那么更广泛地说,带有很大的权重矩阵的模型如果用了稀疏层,就可以保持与更小的模型一样的参数数目和计算开销。相信一定有一些领域能让这种方法发挥很大的作用。



未来智能实验室致力于研究互联网与人工智能未来发展趋势,观察评估人工智能发展水平,由互联网进化论作者,计算机博士刘锋与中国科学院虚拟经济与数据科学研究中心石勇、刘颖教授创建。


未来智能实验室的主要工作包括:建立AI智能系统智商评测体系,开展世界人工智能智商评测;开展互联网(城市)云脑研究计划,构建互联网(城市)云脑技术和企业图谱,为提升企业,行业与城市的智能水平服务。

  如果您对实验室的研究感兴趣,欢迎支持和加入我们。扫描以下二维码或点击本文左下角“阅读原文”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/497972.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 实现sha_加密算法 MD5 和 SHA 的 JAVA 实现

首先先简单的介绍一下MD5 和 SHA 算法然后看一下在 java.security.MessageDigest (信息摘要包下) 如何分别实现 md5 加密 和 sha 加密最后在看一下 使用httpclient包 依赖下的 commons-codec-org. 包 下的apache.commons.codec.digest.DigestUtils 这个工具类 是如何快速…

java loadonstartup_java的web配置文件的“load-on-startup0/load-on-startup”一个问题

展开全部load-on-startup标记容器是否32313133353236313431303231363533e78988e69d8331333365643662在启动的时候实例化并调用其init()方法的优先级。它的值表示 servlet应该被载入的顺序。当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet。.如…

java隋唐演义游戏下载_JAVA多线程

第一节 多线程背景知识介绍多线程作用:可以帮助简化模型,还能编写强大的代码。进程与线程的基础概念:Eclipse QQ都属于进程。进程是程序(任务)的执行过程,它持有资源(共享内存、共享文件)和线程。它包含两点:1.动态性&…

packageinfo.java_package-info.java文件详解

package-info.java文件详解一、pacakge-info.java介绍pacakge-info.java是一个Java文件,可以添加到任何的Java源码包中。pacakge-info.java的目标是提供一个包级的文档说明或者是包级的注释。pacakge-info.java文件中,唯一要求包含的内容是包的声明语句&…

java classpath设置_Java CLASSPATH设置

Java CLASSPATH设置CLASSPATH: CLASSPATH是一个环境变量,Application ClassLoader使用它来定位和加载.class文件。 CLASSPATH定义路径,以查找不是扩展或Java平台一部分的第三方和用户定义的类。设置CLASSPATH时,请包括所有包含.class文件和JA…

寒武纪芯片创始人:要让AI芯片计算效率提高一万倍

来源: 传感器技术 概要:随着利好政策的不断出台以及行业的持续发展,芯片相关产业站上风口。 随着利好政策的不断出台以及行业的持续发展,芯片相关产业站上风口。而AI芯片独角兽公司寒武纪,也即将入驻雄安新区。e公司记…

JAVA格式化同一天时间间隔_java中时间格式化怎么去时间间隔值

java中时间格式化怎么去时间间隔值关注:61 答案:2 mip版解决时间 2021-01-12 11:52提问者眼泪↓流到叻心里2021-01-11 20:30比如2015-02-03 13:25:55 与 2015-02-04 15:25:55 之间的时间间隔怎么获取最佳答案二级知识专家守給你的承諾2021-01-11 21:46转换成秒-相减取绝对值。…

超美国11倍!麦肯锡176页报告解读数字中国领先全球的秘密

来源:智东西 概要:到2030年,数字化将转变并创造高达45%的行业总收入。 12月4日,麦肯锡发布了长达176页的中国数字经济报告。 报告显示,中国电子商务(2016年交易额占全球40%)和数字支付&#xf…

卡内基梅隆大学提出基于学习的动作捕捉模型,用自监督学习实现人类3D动作追踪

原文来源:Cornell University Library 作者:Hsiao-Yu Fish Tung、Hsiao-Wei Tung、Ersin Yumer、 Katerina Fragkiadaki 「雷克世界」编译:我是卡布达、哆啦A亮 目前,从单摄像头中进行动作捕捉(motioncapture&#xff…

AI智商评测标准专家研讨会邀请,2018年12月20日北京

21世纪以来,人工智能领域陆续爆发很多重要事件。其中最吸引人们眼球的,当属2016年战胜了人类围棋冠军并开始能够从0自我学习的AlphaGo。 10月26日,软银CEO孙正义在沙特阿拉伯举行的未来投资计划大会上称,未来30年内AI的智商&#…

开源神经网络框架Caffe2全介绍

本文作者吴逸鸣,整理自作者在GTC China 2017大会上的演讲,首发于作者的知乎文章。 我个人认为这是一份很值得分享的资料,因为 这应该是第一次使用全中文来讲解Caffe2和FB的AI应用的演讲 观看这次演讲不需要机器学习/神经网络&…

AI指数评论:提防“路灯谬误”,开启全球多方对话

来源:亿欧 概要:技术的单点突破,资本市场的多级繁荣,诸如此类的话题充斥着过去两到三年。然而,在AI时代思考AI,我们需要更宏大的世界观。 技术的单点突破,资本市场的多级繁荣,诸如此…

算法还是算力?周志华微博引爆深度学习的“鸡生蛋,蛋生鸡”问题

来源:AI科技大本营上周,由强化学习加持的AlphaZero,把DeepMind在围棋上的突破成功泛化到其他棋类游戏:8小时打败李世石版AlphaGo,4小时击败国际象棋最强AI——Stockfish,2小时干掉日本象棋最强AI——Elmo&a…

计算机视觉大规模爆发,6大细分领域将撑起725亿元市场

来源:中国经济时报概要:近几年来,随着技术的发展,中国计算机视觉行业发展迅速。近几年来,随着技术的发展,中国计算机视觉行业发展迅速。尤其是2016年下半年,1∶N人脸识别、视频结构化等计算机视…

java项目内存使用率过高排查_项目内存或者 cpu 占用率过高如何排查

前言:小编总结了之前生产环境cpu 占用率过高等问题,小编功力不够深厚,文章如有不对的地方,还望各位大神指正。排查原因:客服反馈说系统访问缓慢一、 在排查问题的过程中针对 CPU 的问题, 使用以下命令组合来排查问题模拟过程:①示例代码:pack…

2017 人工智能+内容生产研究报告【附下载】

来源:亿欧概要:技术进步和产业内生需求,是推动AI开始在内容生产领域应用的两个主要动力。为了弄清AI内容生产进行到何种程度,对内容生产可能产生何种影响,小编撰写了这份《2017 人工智能内容生产研究报告》&#xff0c…

ThreadLocal与Synchronized的用法

来源&#xff1a;http://blog.csdn.net/wl_ldy/article/details/5948779 一.ThreadLocal的用法 ThreadLocal的实现&#xff1a; package com.sodao.lucene; import java.util.Random; public class ThreadLocalTest implements Runnable{ ThreadLocal<Studen…

java程序员面试需要注意什么_Java程序员面试时要注意的一些问题

Java程序员面试的时候会面临各种五花八门的问题&#xff0c;你的第一反应、思维逻辑、思考方法&#xff0c;专业水平决定了企业对你的评价和你的薪资水准&#xff0c;但是除了专业以外还有一些你需要避免出现错误的注意事项&#xff0c;如果很好的避免了&#xff0c;就能帮你在…

“强化学习之父”萨顿:预测学习马上要火,AI将帮我们理解人类意识

李杉 编译自 KDnuggets量子位 出品 | 公众号 QbitAI地处加拿大埃德蒙顿的阿尔伯塔大学&#xff08;UAlberta&#xff09;可谓是强化学习重镇&#xff0c;这项技术的缔造者之一萨顿&#xff08;Rich Sutton&#xff09;在这里任教。△ 萨顿萨顿常被称为“强化学习之父”&#xf…

cmd中java编译命令是什么_cmd中java的编译命令——java和javac、javap

如题&#xff0c;首先我们在桌面&#xff0c;开始->运行->键入cmd 回车&#xff0c;进入windows命令行。进入如图所示的画面&#xff1a;可知&#xff0c;当前默认目录为C盘Users文件夹下的Administrator文件夹。一般而言&#xff0c;我们习惯改变当前目录。由于windows有…