首页 百科正文

人工智能读书笔记

woniu 百科 2020-02-25 10:39:50 17009 0 研究教育大学论文

本文就是一读书笔记,源自各种资料的拼凑和脑补,不保证所有主张的正确性,请自行斟酌。个人浅见,当前我从事的人工智能产业与十年前自己投入过的盛极一时的游戏行业,本质是一样一样的,都是计算机对图像与声音的综合处理与展示。

所以要理解人工智能,理解人工智能的算力,我准备先从图像处理着手,以NVIDIA作为主线,试图全面剖析GPU的硬件架构及运行机制,并从GPU到CUDA™,慢慢研读到FPGA、TPU的世界。

2016年3月9日至15日,AlphaGo在首尔进行的五番棋比赛中以总比分4比1战胜李世石,谷歌的人工智能(Artificial Intelligence,AI)在星光熠耀的舞台上首次登场。据说从1956年开始,被称为AI元年的也不止一次,几起几落,迄今已经是第三波浪潮了。

不过对我来说,2016年被称为AI元年毫无违和,确实是阿法狗那一束光,指引自己走入了人工智能的璀璨世界。至今还记得听闻李世石落败后,自己世界观破碎的声音,还有自己一个人在奥森跑了32公里,找回真实而温暖的感觉。

横空出世的阿法狗

AlphaGo 由 Google的DeepMind 开发,其程序综合了神经网络和蒙特卡罗树搜索,能监督式学习和自对弈。它使用了巨大的计算资源,硬件在AlphaGo的性能表现上扮演了关键角色。

AlphaGo有多种配置,不同配置对它的性能有巨大影响,最低配置使用了48个CPU和1个GPU;最高配置是分布式版本的AlphaGo,根据DeepMind员工发表在2016年1月Nature期刊的论文,分布式版本(AlphaGo Distributed)使用了1202个CPU和176个GPU,同时可以有40个搜素线程。

击败李世石的AlphaGo Lee 版本,则是由上述分布式版本训练,4 个TPU v1推演的 。后来升级的 AlphaGo Master版以及自我学习的 AlphaGo Zero版 ,则是由 TPU v2  Pod 训练。

人工智能的三大浪潮

第一波浪潮是20世纪50年代到60年代,逻辑主义,其核心是符号推理与机器推理,用符号表达的方式来研究智能、研究推理。

第二波浪潮是20世纪80年代到90年代,连接主义,其核心是神经元网络与深度学习,仿造人的神经系统,把人的神经系统的模型用计算的方式呈现,用它来仿造智能。

第三波浪潮就是2006年至今,行为主义,其核心是技术的融合,把一些技术、神经元网络和统计的方法结合在一起。深度学习+大规模计算+大数据=人工智能。

人工智能最初采用的方法是专家编制规则,教机器人认字、语音识别,但是人们没法总结提炼出人类视听功能中的规律,因此在机器学习的转化上效果并不好,结果事与愿违,人工智能也在残酷的现实中走向下坡。

由于人为指导这条路行不通,人们开始另辟蹊径,把目光投向了基于大量数据的统计学方法,于是人工智能在人脸识别等一些较简单的问题上取得了重大进展,在语音识别上也实现了基本可用,初见成效。

然而基于大数据的统计学方法很快遇到了瓶颈,因为单纯依靠数据积累并不能无限地提高准确率,从“基本可用”到“实用”之间出现了一道难以逾越的鸿沟,十几年都没能跨过,人工智能再次没落。

直到2006年,多伦多大学 Geoffrey Hinton 教授在《科学》上发表一篇关于深度学习的文章,人们又重新看到了人工智能的希望。

随着GPU(图形处理器)的广泛使用,计算机的并行处理速度大幅加快、成本更低、功能更强大,实际存储容量无限拓展,可以生成大规模的数据,包括图片、文本和地图数据信息等,人工智能迎来了新的生机。

人工智能三要素

人工智能三要素:算法、算力和大数据,缺一不可,都是人工智能取得如此成就的必备条件。按重要程度来说:

第一是数据。人类要获取一定的技能都必须经过不断地训练,且有熟能生巧之说。AI也是如此,根基是训练,只有经过大量的训练,神经网络才能总结出规律,应用到新的样本上。只有大量的数据,而且能覆盖各种可能的场景,才可以得到一个表现良好的模型,看起来更智能。

第二是算力。有了数据之后,需要进行训练,不断地训练。深度学习中有三个概念叫Epoch, Batch, Iteration,只把训练集从头到尾训练一遍网络是学不好的,需要把训练集翻过来、调过去,训练很多轮。而且除了训练(train),推理(inference)也需要算力的支撑。

第三是算法,深度学习是目前最主流的人工智能算法。某种程度上来说算法是获取成本最低的,现在有很多paper,开源的网络代码,各种AutoML自动化手段,创业公司比较容易切入;算力需要芯片支撑,芯片行业是一个赢者通吃的市场,有资金、技术和人才三大壁垒,太难了。

人工智能三类专用核心芯片

由于AI所需的深度学习需要很高的并行计算、浮点计算以及矩阵运算能力,基于CPU的传统计算架构无法充分满足人工智能高性能并行计算(HPC)的需求,因此需要发展适合AI架构的专属芯片。目前处理器芯片面向人工智能硬件优化升级有两种发展路径:

1)延续传统计算架构,加速硬件计算能力:以GPU、FPGA、ASIC(TPU、NPU)等专属芯片为辅,配合CPU的控制,专门进行AI相关的各种运算;

2)彻底颠覆传统计算架构,采用模拟人脑神经元结构来提升计算能力,以IBM TrueNorth芯片为代表。但由于技术和底层硬件的限制,这种方法尚处于前期研发阶段,目前不具备大规模商业应用的可能性。

GPU:十项全能。GPU由于更适合执行复杂的数学和几何计算(尤其是并行运算),刚好与包含大量并行运算的 AI 深度学习算法相匹配,成为人工智能硬件首选,在云端和终端各种场景均率先落地。目前在云端作为AI 训练的主力芯片;在终端的安防、汽车等领域,GPU也率先落地,是目前应用范围最广、灵活度最高的AI硬件。

FPGA:变形金刚,算法未定型前的最佳选择。FPGA(Field-Programmable Gate Array,现场可编程门阵列)是一种用户可根据自身需求进行重复编程的万能芯片。编程完毕后功能相当于ASIC(专用集成电路),具备效率高、功耗低的特点,但同时由于要保证编程的灵活性,电路上会有大量冗余,因此成本上不能像ASIC做到最优,并且工作频率不能太高(一般主频低于500MHz)。FPGA相比GPU具有低功耗优势,同时相比ASIC具有开发周期快,更加灵活编程等特点,是效率和灵活性的较好折衷,在算法未定型之前具较大优势。在现阶段云端数据中心业务中,FPGA以其灵活性和可深度优化的特点,有望继GPU之后在该市场爆发;在目前的终端智能安防领域,目前也有厂商采用FPGA方案实现AI硬件加速。

ASIC:专职专精,专一决定效率,AI芯片未来最佳选择。ASIC(Application Specific Integrated Circuit,专用集成电路)指专门为AI应用设计、专属架构的处理器芯片。近年来涌现的类似TPU、NPU、VPU、BPU等令人眼花缭乱的各种芯片,本质上都属于ASIC。无论是从性能、面积、功耗等各方面,AISC都优于GPU和FPGA,但在AI算法尚处于蓬勃发展、快速迭代的今天,ASIC存在开发周期较长、需要底层硬件编程、灵活性较低等劣势,因此发展速度不及GPU和FPGA。

Google TPU

TPU(Tensor Processing Unit)是Google专为自家深度学习框架 TensorFlow 而设计的 ASIC 专用芯片。

一般公司很难承担为深度学习开发专门处理器ASIC芯片的成本和风险。首先为了性能必须使用最好的半导体制造工艺,而现在用最新的工艺制造芯片一次性成本就要几百万美元,非常贵。就算有钱,还需要拉一支队伍从头开始设计,设计时间往往要到一年以上,time to market时间太长,风险很大。如果无法实现规模化的应用,就算开发成功也缺少实际使用价值。

早在2006年,Google就在考虑为神经网络构建一个专用集成电路,2013年这个需求变得更加紧迫,于是从设计到验证、构建和部署到数据中心里,只用了15个月。初代 TPU 采用了28nm工艺制造,主频700MHz,功耗40W。为了尽快把TPU部署到现有的服务器中,Google选择把这个芯片打包成外部扩展加速器,然后插到SATA硬盘插槽里使用。所以TPU通过PCIe Gen3 x16总线与主机相连,也就是说12.5GB/s的有效带宽。。

谷歌之所以敢自己做定制化研发,一方面自然是有钱任性,另一方面也由于谷歌提供的很多服务,包括谷歌图像搜索(Google Image Search)、谷歌照片(Google Photo)、谷歌云视觉 API(Google Cloud Vision API)、谷歌翻译等产品和服务都需要用到深度神经网络。基于自身庞大的体量,开发一种专门的芯片开始具备规模化应用(大量分摊研发成本)的可能。

TPU v1 计算力 92 Teraflops,8Gb 内存,34GB/s 内存带宽,只能做推理(其实这是个 PCI-E 的加速卡,上面插了两条2133Mhz DDR3的内存)——它的光荣成绩是打败了李世石(4 个TPU推演,GPU 训练的 AlphaGo Lee 版本);

TPU v2 计算力 45Teraflops,16Gb 内存,600GB/s内存带宽(和显卡学习集成的 HBM),看起来单 TPU计算力慢了不少?既可以做训练,也能够推理——它的光荣成绩是打败了柯洁和一大堆其他人类高手(4个 TPU 推演,TPU v2  Pod训练的 AlphaGo Master版本,之后的 AlphaGo Zero 也诞生在这上面);

Cloud TPU v3 Pod 是 Google 推出的第三代可扩展云端超级计算机,其核心特征就是内置了 Google 自主打造的 TPU 处理器。2019 年 5 月,Google 在 I/O 开发者大会上宣布了它的测试版并进行了公开预览。

显卡与图形处理单元

显卡(Video Card)是计算机中一个很重要的组成部分,承担输出显示图形的任务。早期的显卡只包含存储器和帧缓冲区,实际上只起了一个图形的存储和传递作用,一切操作都必须由CPU来控制。这对于文本和一些简单的图形来说是足够的,但是当要处理复杂场景特别是一些真实感的三维场景,单靠这种系统是无法完成任务的。随着电子技术的发展,显卡技术含量越来越高,功能越来越强,后来的显卡不单单存储图形,还都有3D图形处理功能。

显卡组成

PC上最早的显卡是IBM在1981年推出的5150个人计算机上所搭载的MDA和CGA两款2D加速卡,GeForce 256是世界上第一款GPU。显卡主要由显卡主板、显示芯片、显示存储器等部分组成:

1)显示主芯片,俗称GPU(Graphics Processing Unit,GPU),主要任务是对系统输入的视频信息进行构建和渲染。GPU使显卡减少了对CPU的依赖,并进行部分原本CPU的工作,尤其是在3D图形处理时GPU所采用的核心技术有硬件T&L(几何转换和光照处理)、立方环境材质贴图和顶点混合、纹理压缩和凹凸映射贴图、双重纹理四像素256位渲染引擎等。硬件T&L技术可以说是GPU的标志。

2)显示缓冲存储器,用来存储将要显示的图形信息以及保存图形运算的中间数据,显示缓存的大小和速度直接影响着主芯片性能的发挥。

3)RAMDAC(数模转换器)从显存中读取出二进制的数据并将数字信号转换为和显示器相适应的模拟信号,最后由屏幕显示出来。

显卡分类

1)集成显卡是将显示芯片、显存及其相关电路都集成在主板上,与其融为一体的元件;集成显卡的显示芯片有单独的,但大部分都集成在主板的北桥芯片中;一些主板集成的显卡也在主板上单独安装了显存,但其容量较小。

2)独立显卡是将显示芯片、显存及其相关电路单独做在一块电路板上,自成一体而作为一块独立的板卡存在,它需占用主板的扩展插槽(ISA、 PCI、AGP或PCI-E)。独立显卡实际分为两类,一类专门为游戏设计的娱乐显卡,一类则是用于绘图和3D渲染的专业显卡。

3)核芯显卡是Intel新一代图形处理核心,Intel 凭借其在处理器制程上的先进工艺以及新的架构设计,将图形核心与处理核心整合在同一块基板,构成一个完整的处理器,进一步加强了图形处理的效率。把集成显卡中的「处理器+南桥+北桥(图形核心+内存控制+显示输出)」三芯片解决方案精简为「处理器(处理核心+图形核心十内存控制)十主板芯片(显示输出)」的双芯片模式,有效降低了核心组件的整体功耗,主要用于笔记本等移动设备中。

图形卡与运算卡

普通显卡就是图形卡;在科学计算中,显卡被称为图形加速卡;运算卡没有图形输出功能,侧重的是其并行计算能力,适合超大数据的复杂计算,预算性能甚至比X核的CPU还要强很多,它的本质功能类似于CPU的运算器。

Quadro是专业显卡,核心同普通Geforce游戏卡几乎相同,专业显卡和游戏显卡的区别如下:

1)设计理念与市场定位不同:专业显卡是生产力工具,面向的是专业的软件和应用,对各类专业软件有着更好的优化,甚至在专业软件中开启一些游戏卡开启不了的特殊功能。

2)做工用料不同:专业卡设计与做工要远超同芯片专业卡(此处指公版专业卡和游戏卡相对比)。

3)驱动不同:专业卡在一些专业软件里面提供许多加速选项,比如实时渲染等等。

4)晶体管品质不同:虽然专业卡和游戏卡的GPU用的都是同一个版图,晶体管的数量、排列结构连线结构都一样,但理论上来说,一张晶圆中心部分质量最好,因为中心部分蚀刻出的坏晶体管数量最少,而这些部分便用于制造专业卡芯片;离中心越远蚀刻出的坏晶体管越多,而这些部分便用来制造各级别游戏卡,GPU制造商会将这部分中的坏晶体管屏蔽起来,来制造不同级别的游戏卡。

显卡接口类型

1)ISA显卡:以前最普遍使用的VGA显示器所能支持的古老显卡。

2)VESA显卡:Video Electronic Standards Association,视频电子工程标准协会,在1994年底发布的64位架构的 VESA Local Bus 标准,80486的PC机大多采用这一标准的显卡。

3)PCI显卡:Peripheral Component Interconnect,通常被较早期将AGP标准插槽移除而必须仰赖PCI接口的计算机使用于。已知被多数的使用于486到PentiumII早期的时代。但直到显示芯片无法直接支持AGP之前,仍有部分厂商持续制造以AGP转PCI为基底的显卡。已知最后的PCI显卡是GeForce GT 610 PCI。

4)AGP(Accelerated Graphics Port)是 Intel 在1996年开发的32位总线接口,用以增进计算机系统中的显示性能。分有AGP 1X、AGP 2X、AGP 4X及最后的AGP 8X,带宽分别为266MB/s、533MB/s、1066MB/s、以及2133 MB/s。

5)PCIe显卡:最新的图形接口,用来取代AGP显卡,AGP的带宽已经不足以支持3D显示的庞大数据运算。2007年后出产的显卡可支持双显卡技术(nVIDIA的SLi及nvlink和AMD的CrossFire)。

6)外接PCI Express显卡:用USB或Thunderbolt高带宽线材,连接到外接PCIe显卡盒,需要独立电源供应。

GPU的品牌

GPU的生产商主要有NVIDIA和AMD,采用NVIDAI显示芯片的显卡称为N卡,采用AMD显示芯片的显卡称为A卡。

NVIDIA 是一家人工智能计算公司,与ATI(后被AMD收购)齐名,专注于打造能够增强个人和专业计算平台的人机交互体验的产品,创立于1993年,总部位于加亚州圣克拉拉市。1999年,NVIDIA发明了GPU,重新定义了现代计算机图形技术,极大地推动了PC游戏市场的发展,并推出的通用并行计算架构CUDA™,彻底改变了并行计算。NVIDIA 开发了五大产品系列,包括:GeForce、Tegra、ION、Quadro、Tesla。其中Tesla、 Quadro、 GeForce的GPU可以支持CUDA™架构。

2006年AMD公司以54亿美元收购ATI(Array Technology Industry,世界著名的显示芯片生产商,在1985年至2006年间是全球重要的显示芯片公司,总部设在加拿大安大略省万锦),ATI于2000年4月推出的Radeon(镭龙™)显示芯片,含有3千万颗晶体管,达到每秒15亿个象素填写率。

显存的发展

显存,作用是用来存储GPU处理过或者即将提取的渲染数据。如同计算机内存一样,显存是用来存储要处理的图形信息的部件,但它存贮的对象是显卡输出到显示器上的每个像素的信息,然后由RAMDAC(数模转换器)从显存中读取出数据并将数字信号转换为模拟信号,最后由屏幕显示出来。在高级的图形加速卡中,显存不仅用来存储图形数据,而且还被显示芯片用来进行3D函数运算,T&L(变形和照明)等高密度运算由GPU在显卡上完成,由此更加重了对显存的依赖。

由于显存的速度和带宽直接影响到显卡的整体速度。最初的显存与内存具有极大的通用性,FP-DRAM(Fast Page DRAM)及EDO-RAM(Extend Data Output DRAM)等当时内存常用的颗粒同样应用在显存中,会有几十甚至几百纳秒的延迟;随着半导体工艺水平的进步,其后大规模使用的SDRAM的显存一般是8~10ns延迟,而具有更好读写性能的SGRAM却由于成本要素,未能流行起来;再下一代的DDR显存,延迟一般为4~5ns,又将前辈SDRAM显存的带宽提升了一倍。

NV10(Geforce256)不仅是人类历史上第一块GPU,同时也是第一块支持DDR-RAM显存的GPU,可以说NV10的出现,将整个图形界拉入了高速显存时代;随后 SGRAM的DDR版本GDDR开始崭露头角,由NV36发端并在NV40上发扬光大的GDDR3,以及在RV770上让AMD一赌翻身并由此名留史册的GDDR5,则成了显存发展历史上光辉灿烂的一页,人类首次正式踏入了GHz频率的存储时代!

SDRAM(同步动态随机存储器)一般是168线,指的是内存条与主板插槽上的金属触点(即俗称金手指)有168个;

DDR(Double Data Rate SDRAM,双倍速率-同步动态随机存取存储器)一般是184线,双倍速率肯定就是速度要快一倍;DDR的发展,从初的DDR,到DDR2、DDR3以及现在主流的DDR4,刚刚发布的DDR5。

从外观上看,SDRAM有两个凹口,使用电压是3.3V,DDR是只有一个凹口,使用电压2.5V。

GDDR(Graphics Double Data Rate)是用于显卡的高速DDR颗粒,其发展一直由AMD领衔(当然也包括NVIDIA、Intel、高通、德州仪器、思科等巨头),其实就是专门为显卡而做的DDR内存。这种内存有专属的工作频率、时钟频率、电压等等,比普通内存条所使用的DDR存储器时钟频率更高,发热量更小,与普通DDR内存不能兼容使用。

GDDR3与DDR3分道扬镳,显存的运行频率和带宽开始大幅度地甩开系统内存。但GDDR3很快又被后续发展的SDDR3赶上,SDDR3单颗位宽只有GDDR3的一半,存储密度却是GDDR3的两倍,而且在相同频率下(比如2000MHz),SDDR3的核心频率是GDDR3的一半,因此功耗发热要低很多。

GDDR5不仅以优异的性能让AMD转危为安,其极高的运行频率所带来的带宽也让显存第一次能够成为寄存器溢出缓冲,从而将整个缓冲体系联系在了一起。

GDDR6相比之前版本的单通道读写设计,采用了双通道读写设计;显存速度提高25%;性能更加强劲,功耗却更低;最高缓存容量大幅提升,能够高达32Gb;带宽也翻番。

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接:https://www.chinaai.com/baike/77.html

评论