随着人工智能浪潮的兴起, 人工智能基础芯片作为主要的计算力推动引擎也越来越受到追捧和热议, 这个系列连载会介绍人工智能芯片兴起的背景和现有主要玩家以及研究现状, 主要包括 NVidia GPU,Google 的 TPU,Intel 的 Nervana,IBM 的 TreueNorth, 微软的 DPU 和 BrainWave, 百度的 XPU,Xilinx 的 xDNN, 寒武纪芯片, 地平线以及深鉴科技的 AI 芯片等, 基本上是 GPU,FPGA, 神经网络芯片三分天下的趋势, 三种芯片各有各自的优劣, 都在面向自己独特的细分市场.
本章先聊一聊深度神经网络和 NVidia GPU 的崛起.
人工神经元和深度神经网络
人工智能的终极目标是模拟人脑, 人脑大概有 1000 亿个神经元, 1000 万亿个突触, 能够处理复杂的视觉, 听觉, 嗅觉, 味觉, 语言能力, 理解能力, 认知能力, 情感控制, 人体复杂机构控制, 复杂心理和生理控制, 而功耗只有 10~20 瓦.
这是人脑基本神经元和突触:
这是人工神经元模拟神经元:
输入模拟神经元输入电信号, 权值模拟神经元之间的突触连接, 激活函数模拟突触之间的电信号传导.
早在 1981 年 David Hubel 和 Torsten Wiesel 就发现了人的视觉系统的信息处理是分级的, 因此获得了诺贝尔医学奖. 如图所示, 从视网膜出发, 经过低级的 V1 区边缘特征提取, 到 V2 区识别基本形状或目标的局部, 再到高层的目标识别 (例如识别人脸), 以及到更高层的前额叶皮层进行分类判断等, 人们意识到高层特征是低层特征的组合, 从低层到高层越来越抽象, 越来越能表达语义或者意图
. 深度神经网络模型模拟人脑识别的分层识别过程
深度神经网络的输入层模拟视觉信号的输入, 不同的隐藏层模拟不同级别的抽象, 输出层模拟输出的对象分类或者语义等.
从上图的典型的人脸识别的训练任务来看, 按照 10 层深度神经网络, 训练上百万张图片, 大概需要 30 Exaflops 的计算能力, 如果还是用 CPU 来做训练, 大概需要训练一年的时间, 这显然是无法忍受的速度, 亟待需要计算能力更强的人工神经网络芯片出现.
NVidia GPU 的崛起
NVidia GPU 的 CUDA 战略和野心
可能有很多人会问, 目前在人工智能领域, NVidia GPU 为什么具有无可撼动的霸主地位, 为什么 AMD 的 GPU 和 NVidia GPU 性能相差不多, 但是在人工智能领域的受欢迎的程度却有天壤之别.
我们知道 GPU 原本就是显卡, 它是为游戏和渲染而生的, 它里面核心运行单元是 shader, 专门用作像素, 顶点, 图形等渲染用的.
NVidia 在 2006 年的时候跨时代的推出了统一计算设备架构 CUDA(Compute Unified Device Architecture) 以及对应的 G80 平台, 第一次让 GPU 具有可编程性, 让 GPU 的核心流式处理器 Streaming Processors(SPs) 既具有处理像素, 顶点, 图形等渲染能力, 又同时具备通用的单精度浮点处理能力, NVidia 称之为 GPGPU(General Purpose GPU), 黄教主的野心是让 GPU 既能做游戏和渲染也做并行度很高的通用计算.
2006 年, 第一代 GPGPU 架构 G80
G80 有 16 组流式处理器 Streaming Processors(SPs), 每组 SP 里有 16 个计算核心, 一共 128 个独立的计算核心, 单精度峰值计算能力可达 330 Gflops, 而同期主流的 Core2 Duo CPU 只有 50 Gflops 的处理能力, 更为重要的是从 G80 架构开始, GPU 开始支持可编程, 所有的计算密集型的并行任务都有可能通过程序移植在 GPU 上运行起来.
CUDA 的编程模型
CUDA 将 GPU 的并行计算能力做了一个非常好的抽象, 并且让用户在接触 CUDA 编程的初期就彻底摆脱 CPU 的编程模式和思维模式, 而是一种全新的, 完全并行的编程模式和思维方式, 这虽然在初期会有很大的推广障碍, 但是一旦推广成功, 对于发挥 GPU 并行性能和效率是非常合适的一种语言, 这也是老黄下的一个很大的赌注.
CUDA 将 GPU 的计算单元抽象成 3 个编程层次: Grids,Blocks 和 Threads, 一个 CUDA kernel 在执行的前会先把数据和指令传到 GPU 上, 在执行的时候会使用若干个 Grids, 一个 Grid 里含有多个 Blocks, 一个 Block 里含有多个 Threads, 调度上一个 Block 的 Threads 会调度到一个独立的 Streaming Processors 上执行, 而 16/32 个 Threads 称为一个 Warp,Warp 是 GPU 上指令调度的最小单元, 一个 Warp 会同时运行在 16/32 个计算核心上.
CUDA Everywhere 战略
自从推出了 CUDA 以及对应的可编程平台 G80 开始, 黄教主就开始和教育科研界的老师合作, 主要是高性能计算领域的应用, 让他们研究把计算密集型的任务搬到 GPU 上来, 当然这些老师看到有这么新颖的架构出来, 也是着实非常激动的, 能多发论文了, 一时间 GPU 上运行高性能计算任务的论文铺天盖地.
同时, 老黄推行 CUDA Everywhere 战略, 不管是 PC 机上的 GeForce,Titan 系列, 还是数据中心的 Tesla 系列, 还是移动设备上的 Tegra 系列芯片, 全部采用统一的 GPU 架构, 并且全部支持 CUDA, 现在甚至把所有的处理核心称之为 CUDA Cores, 这样众多开发者只需要在 PC 机上插上一块廉价的显卡, 就可以做 GPU 和 CUDA 的并行程序的开发, 并且只需要开发一遍, 在所有 CUDA 设备上都可以执行.
除此之外, 老黄还给开发者提供了各种开发者平台, 基础软件库, 高性能计算库, 性能调优工具, 集群管理运维工具, NGC(Nvidia GPU Cloud) 等易于开发者开发和使用的平台和工具, 进一步优化开发者生态系统.
到 2017 年, CUDA 开发者数量已经达到了 80 万之多, CDUA 下载数量超过 800 万, 支持的 GPU 应用超过了 500 种, 用于深度学习训练加速的 cuDNN 下载超过 84 万次.
性能增长超越 CPU 战略
NVidia 从 2006 年推出 Tesla 架构以来, 不断的更新架构和性能, 陆续推出了 Femi,Maxwell,Pascal 还有最新的 Volta 架构, 基本上保持着 2 年性能翻 1 倍的增长态势.
而对 CPU 的性能加速比, 在单精度计算能力上保持着遥遥领先的态势, 并且拉开的差距越来越大.
NVidia GPU 在超算领域的发展
2009 年, 美国能源部橡树岭国家实验室的最新超级计算机 "泰坦", 装备了 18688 颗 NVIDIA Tesla K20/K20x, 登上了全球超级计算机 Top500 的第一名, 开始登上超级计算的历史舞台.
2017 年, 在全球超算大会 SC17 上发布的 Top500 中, 由 NVidia GPU 加速的超级计算机达到了 87 个, 在 Green500 的前 20 个能效比最高的超级计算机中, NVidia GPU 占据了 14 个.
深度神经网络 + NVidia GPU 掀起人工智能浪潮
深度神经网络 + NVidia GPU 掀起了业界的人工智能浪潮, 不得不说这只是老黄整体战略的一个副产品, 谁也没有想到, 高性能计算领域的一个分支 -- 人工智能会如此火爆.
2011 年, 负责谷歌大脑的吴恩达通过让深度神经网络训练图片, 一周之内学会了识别猫, 他用了 12 片 GPU 代替了 2000 片 CPU, 这是世界上第一次让机器认识猫.
2012 年, 多伦多大学的 Alex 和 Hinton 用 GPU 加速的深度神经网络 AlexNet 在 ImageNet 图像识别比赛上获得冠军, 这是第一次只通过深度学习打败了传统的图像识别算法.
2015 年, 微软研究院用 GPU 加速的深度神经网络, 在 ImageNet 比赛中获得了多项击败人的辨识准确度, 这是第一次机器视觉的识别率打败了人眼的识别率 (错误率 5%), 可以认为是人工智能史上的一个重要里程碑事件.
小结
NVidia GPU 经过了 12 年在 GPGPU 领域的深度耕耘, 建立了庞大的开发者生态系统, 这个庞大的生态系统会自我驱动和自我发展, 加上 NVidia GPU 正确的策略方向, NVidia GPU 随着人工智能的浪潮到来而开始火爆, 变得如此炙手可热.
但是 NVidia GPU 还是更擅长处理单指令多数据的任务和单精度的浮点计算, 适合做简单的逻辑控制和大规模并行任务, 但是对于一些整型计算, 稀疏矩阵计算, 非规整位宽计算, batch size=1 的推理等方面计算能力还是不如 FPGA 和专用神经网络芯片, 下一章继续聊聊别的人工智能芯片.
阅读原文 http://click.aliyun.com/m/46055/
来源: http://www.jianshu.com/p/98c5e97eb156