【AI】深度学习框架(1)

1、Scalar、Vector、Marix、Tensor,点线面体一个都不少

       我们先从点线面体的视角形象理解一下。点,标量(scalar);线,向量(vector);面,矩阵(matrix);体,张量(tensor)。我们再详细看一下他们的定义

  • Scalar定义:标量是只有大小、没有方向的“量”。一个具体的数值就能表征,如重量、温度、长度等。

  • Vector定义:向量是即有大小、又有方向的“量”。由大小和方向共同决定,如力、速度等。

  • Matrix定义:矩阵是一个“按照长方阵列排列”的数组,而行数与列数都等于N的矩阵称为N阶矩阵,在卷积核中我们常用3x3或5x5矩阵。

  • Tensor定义:张量是一个“维度很多”的数组,它创造出了更高维度的矩阵、向量,在深度学习知识域的术语中张量也可解释为数学意义的标量、向量和矩阵等的抽象。即标量定义为0级张量,向量定义为1级张量,矩阵定义为2级张量,将在三维堆叠的矩阵定义为3级张量,参考下图。

2、深度学习依赖Tensor运算,GPU解决了算力瓶颈

(1) 卷积网络神经有海量的矩阵运算,包括矩阵乘法和矩阵加法 

      参考 机器学习中的函数(4) - 全连接限制发展,卷积网络闪亮登场 卷积神经网络(CNN)作为是实现深度学习的重要方法之一,整个网络第一步就是应用卷积进行特征提取,通过几轮反复后获得优质数据,达成改善数据品质的目标,我们一起复习一下卷积层工作的这两个关键步骤。

  • 首先,进行图像转换:先把我们眼中的“图像”变成计算机眼中的“图像”。

  • 下一步,选择一个卷积核进行“滤波”:假设以一个2×2的小型矩阵作为卷积核,这样的矩阵也被称为“滤波器”。如果把卷积核分别应用到输入的图像数据矩阵上(如上图计算机眼中的猫),执行卷积运算得到这个图像的特征图谱(Feature Map)。从下图体现看到,图像的特性提取本质上就是一个线性运算,这样的卷积操作也被称为线性滤波。

      2012年,辛顿(Hinton)和他的博士生(Alex Krizhevsky)等提出了经典的Alexnet,它强化了典型CNN的架构,这个网络中卷积层更深更宽,通过大量的”卷积层->激活层->池化层”的执行过程提纯数据,因此在这个网络中有海量的矩阵运算,包括矩阵乘法和矩阵加法。

(2)应用GPU解决算力瓶颈,Tensor是最基础的运算单元

     Alexnet之所以是经典中的经典,除了它强化了典型CNN的架构外,还有其它创新点,如首次在CNN中应用了ReLU激活函数、Dropout机制,最大池化(Max pooling)等技术等。还有一点特别重要,Alexnet成功使用GPU加速训练过程(还开源了CUDA代码),上世纪90年代限制Yann LeCun等人工智能科学家的计算机硬件“算力瓶颈”被逐步打开。

     深度学习为什么需要GPU呢?因为只有GPU能够提供“暴力计算”能力,降低训练时间。大家都知道,GPU处理器拥有丰富的计算单元ALU,它相对于CPU处理器架构的优势就在于能执行“并行运算”,参考下图中的一个简单的矩阵乘法就是矩阵某一行的每一个数字,分别和向量的每一个数字相乘之后再相加,这就是并行运算。

     而如刚才讨论的深度学习中的运算大部分都是矩阵运算,让计算从“单个的”变成“批处理的”,充分利用GPU的资源。Tensor是专门针对GPU来设计的,Tensor作为一个可以运行在GPU上的多维数据,加速运算速度,提升运算效率。参考 深度学习靠框架,期待国产展雄风  中的讨论,在一个框架中,必须有“张量对象”和“对张量的计算”作基础,TensorFlow、PyTorch等等主流框架中,张量Tensor都是最基础的运算单元。

3、提升Tensor效率,大家各显神通

      现在主要的GPU厂家为了能够提高芯片在AI、HPC等应用场景下的加速能力,都在芯片计算单元的设计上花大力气,不断创新优化。比如AMD的CDNA架构中计算是通过Compute Unit来实现的,在Compute unit中就有Scalar、Vector、Matrix等不同的计算功能模块,针对不同的计算需求各司其职。Nvidia的计算是通过SM来实现的,SM中计算从Cuda Core发展到Tensor Core,针对Tensor的计算效率越来越高,到今年三月份发布的H100系列中,Tensor Core已经发展到了第四代。而Google干脆就把自己的芯片定义为TPU(Tensor processing Unit),充分发挥Tensor加速能力,其中主要的模块就是海量的矩阵乘法单元。

(1)英伟达的Tensor Core

      今年3月份黄教主穿着皮衣发布了H100(Hopper系列),Nvidia每一代GPU都是用一个大神的名字命名,这个系列是向Grace Hopper致敬,她被誉为计算机软件工程第一夫人、编译语言COBOL之母。她也被誉为是计算机史上第一个发现Bug的人,有这样一个故事,1947年9月9日当人们测试Mark II计算机时,它突然发生了故障。经过几个小时的检查后,工作人员发现了一只飞蛾被打死在面板F的第70号继电器中,飞蛾取出后,机器便恢复了正常。当时为Mark II计算机工作的女计算机科学家Hopper将这只飞蛾粘帖到当天的工作手册中,并在上面加了一行注释,时间是15:45。随着这个故事传开,更多的人开始使用Bug一词来指代计算机中的设计错误,而Hopper登记的那只飞蛾看作是计算机里上第一个被记录在文档中的Bug,以后debug(除虫)变成了排除故障的计算机术语。

       让我们回到英伟达GPU的计算单元设计,Nvidia的9代GPU中计算单元架构演进过程如下,Tesla2.0(初代)-> Fermi(Cuda core提升算力)-> Kepler(core数量大量增长)-> Maxwell(Cuda core结构优化)-> Pascal(算力提升)-> Volta(第一代Tensor core提出,优化对深度学习的能力) -> Turning(第二代Tensor core)-> Ampere(第三代Tensor core)-> Hopper(第四代Tensor core),其中从Volta开始,每一代Tensor Core的升级都能带来算力X倍的提升。Tensor core专门为深度学习矩阵运算设计,和前几代的“全能型”的浮点运算单元CUDA core相比,Tensor core运算场景更有针对性,算力能力更强,下图就是NV一个计算单元SM中各种模块的组成,各种类型的计算模块配置齐全。

      再详细讨论一下Tensor Core,Tensor Core是专为执行张量或矩阵运算而设计的专用执行单元,每个时钟执行一次矩阵乘法,包含批次的混合精度乘法操作(区别于Cuda core每个时钟执行单次混合精度的乘加操作),矩阵乘法(GEMM)运算是神经网络训练和推理的核心,Tenore Core更加高效。参考下图(蓝色和紫色为输入,绿色是计算结果,中心的灰色部分就是计算单元),第一代Tencor Core加入Votal后,以4x4 矩阵乘法运算时为例,参考英伟达白皮书上的数据,优化后与前一代的Pascal相比,用于训练的算力峰值提升了 12 倍,用于推理的算力峰值提升了6 倍。

(2)Google的TPU

      2013年,Google意识到数据中心快速增长的算力需求方向,从神经网络兴起开始矩阵乘加成为重要的计算loading,同时商用GPU很贵,也为了降低成本,Google选择了撸起袖子自己干,定制了Tensor Processing Unit(TPU) 专用芯片,发展到现在已经经历了4代了。

  • TPU V1:2014年推出,主要用于推理,第一代TPU指令很少,能够支持矩阵乘法(MatrixMultiple / Convole) 和特定的激活功能(activation)。

  • TPU V2:2017年推出,可用于训练,这一代芯片指令集丰富了;提升计算能力,可以支持反向传播了;内存应用了高带宽的HBM;针对集群方案提供了芯片扩展能力。

  • TPU V3:2018年推出,在V2的结构上进一步优化,对各个功能模块的性能都做了提升。

  • TPU V4:2022年推出,算力继续大幅度提升,尤其是集群能力不断优化后,TPU成为谷歌云平台上很关键的一环。

      相信Google会在Tensor processing unit的路径上继续加速,对于云大厂来说,这是业务底座。

4、只有硬件是不够的,TensorFlow让Tenor流动起来

      我们看到了各个厂家在硬件上的不懈努力和快速进步,当然,只有硬件是远远不够的,一个好的Deep Learning Framework才能发挥这些硬件的能力,我们还是从最出名的框架TensorFlow说起

     2011年,Google公司开发了它的第一代分布式机器学习系统DistBelief。著名计算机科学家杰夫·迪恩(Jeff Dean)和深度学习专家吴恩达(Andrew )都是这个项目的成员。通过杰夫·迪恩等人设计的DistBelief,Google可利用它自己数据中心数以万计的CPU核,建立深度神经网络。借助DistBelief,Google的语音识别正确率比之前提升了25%。除此之外,DistBelief在图像识别上也大显神威。2012年6月,《纽约时报》报道了Google通过向DistBelief提供数百万份YouTube视频,来让该系统学习猫的关键特征,DistBelief展示了他的自学习能力。DistBelief作为谷歌X-实验室的“黑科技”开始是是闭源的,Google在2015年11月,Google将它的升级版实现正式开源(遵循Apache 2.0)。而这个升级版的DistBelief,也有了一个我们熟悉的名字,它就是未来深度学习框架的主角“TensorFlow”

      TensorFlow命名源于其运行原理,即“让张量(Tensor)流动起来(Flow)”,这是深度学习处理数据的核心特征。TensorFlow显示了张量从数据流图的一端流动到另一端的整个计算过程,生动形象地描述了复杂数据结构在人工神经网络中的流动、传输、分析和处理模式。

      Google的深度学习框架TensorFlow的有三大优点

  • 形象直观:TensorFlow有一个非常直观的构架,它有一个“张量流”,用户可以借助它的工具(如TensorBoard)很容易地、可视化地看到张量流动的每一个环节。

  • 部署简单:TensorFlow可轻松地在各种处理器上部署,进行分布式计算,为大数据分析提供计算能力的支撑。

  • 平台兼容:TensorFlow跨平台性好,不仅可在Linux、Mac和Windows系统中运行,还可在移动终端下工作。

     如我们在深度学习靠框架,期待国产展雄风 中说的“如果你正在使用深度学习工具进行科研或工作,一定会依赖深度学习的框架”。今天我们学习了Tensor的概念,硬件基础,TensorFlow的由来等,算打了个基础,下一步我们继续学习经典的深度学框架TensorFlow

附:AI往期汇总

机器学习和深度学习是两兄弟么?

学好数理化,走遍天下都不怕 

机器学习中的函数

机器学习就是找到一个“好用的”函数 

机器学习中的函数(1)- 激活函数和感知机

机器学习中的函数(2)- 多层前馈网络巧解“异或”问题,损失函数上场优化网络性能 

机器学习中的函数(3) - "梯度下降"走捷径,"BP算法"提效率 

机器学习中的函数(4) - 全连接限制发展,卷积网络闪亮登场

机器学习中的函数(5) - “算法、算力,数据”已齐备,深度学习走入舞台中心

深度学习框架

由“浅”变“深”,深度学习

“硬十”支撑“算能”构建AI生态,助力“算能”产教融合新范式

人工智能学习资料大整理,硬十课堂上线免费AI实践课

AI开发为什么依赖“框架”?期待国产框架展雄风

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值