0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Google的深度学习框架TensorFlow的优势分析

wFVr_Hardware_1 来源:硬十AI 作者:硬十AI 2022-11-21 10:21 次阅读

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

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

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

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

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

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

621a5aee-68dd-11ed-8abf-dac502259ad0.png

2、深度学习依赖Tensor运算,GPU解决了算力瓶颈(1)卷积网络神经中有海量的矩阵运算,包括矩阵乘法和矩阵加法 参考机器学习中的函数(4) - 全连接限制发展,卷积网络闪亮登场卷积神经网络(CNN)作为是实现深度学习的重要方法之一,整个网络第一步就是应用卷积进行特征提取,通过几轮反复后获得优质数据,达成改善数据品质的目标,我们一起复习一下卷积层工作的这两个关键步骤。

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

625cb592-68dd-11ed-8abf-dac502259ad0.png

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

628d5724-68dd-11ed-8abf-dac502259ad0.png

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

62a4b34c-68dd-11ed-8abf-dac502259ad0.png

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

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

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

62b4497e-68dd-11ed-8abf-dac502259ad0.png

而如刚才讨论的深度学习中的运算大部分都是矩阵运算,让计算从“单个的”变成“批处理的”,充分利用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(除虫)变成了排除故障的计算机术语。

62eef60a-68dd-11ed-8abf-dac502259ad0.png

让我们回到英伟达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中各种模块的组成,各种类型的计算模块配置齐全。

632f709a-68dd-11ed-8abf-dac502259ad0.png

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

63516970-68dd-11ed-8abf-dac502259ad0.png

(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显示了张量从数据流图的一端流动到另一端的整个计算过程,生动形象地描述了复杂数据结构在人工神经网络中的流动、传输、分析和处理模式。

636b68fc-68dd-11ed-8abf-dac502259ad0.png

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

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

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

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

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Google
    +关注

    关注

    5

    文章

    1757

    浏览量

    57405
  • 深度学习
    +关注

    关注

    73

    文章

    5491

    浏览量

    120958

原文标题:【AI】深度学习框架(1)

文章出处:【微信号:Hardware_10W,微信公众号:硬件十万个为什么】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    卷积神经网络的实现工具与框架

    TensorFlow是由Google Brain团队开发的开源机器学习框架,它支持多种深度学习
    的头像 发表于 11-15 15:20 189次阅读

    NVIDIA推出全新深度学习框架fVDB

    在 SIGGRAPH 上推出的全新深度学习框架可用于打造自动驾驶汽车、气候科学和智慧城市的 AI 就绪型虚拟表示。
    的头像 发表于 08-01 14:31 514次阅读

    TensorFlow是什么?TensorFlow怎么用?

    TensorFlow是由Google开发的一个开源深度学习框架,它允许开发者方便地构建、训练和部署各种复杂的机器
    的头像 发表于 07-12 16:38 567次阅读

    tensorflow和pytorch哪个更简单?

    TensorFlow和PyTorch都是用于深度学习和机器学习的开源框架TensorFlow
    的头像 发表于 07-05 09:45 759次阅读

    tensorflow和pytorch哪个好

    :2015年由Google Brain团队发布。 语言支持 :主要使用Python,也支持C++、Java等。 设计哲学 :TensorFlow是一个端到端的机器学习平台,支持从研究到生产的所有阶段
    的头像 发表于 07-05 09:42 624次阅读

    keras模型转tensorflow session

    和训练深度学习模型。Keras是基于TensorFlow、Theano或CNTK等底层计算框架构建的。TensorFlow是一个开源的机器
    的头像 发表于 07-05 09:36 454次阅读

    如何使用Tensorflow保存或加载模型

    TensorFlow是一个广泛使用的开源机器学习库,它提供了丰富的API来构建和训练各种深度学习模型。在模型训练完成后,保存模型以便将来使用或部署是一项常见的需求。同样,加载已保存的模
    的头像 发表于 07-04 13:07 1282次阅读

    深度学习常用的Python库

    深度学习常用的Python库,包括核心库、可视化工具、深度学习框架、自然语言处理库以及数据抓取库等,并详细
    的头像 发表于 07-03 16:04 558次阅读

    TensorFlow的定义和使用方法

    TensorFlow是一个由谷歌人工智能团队谷歌大脑(Google Brain)开发和维护的开源机器学习库。它基于数据流编程(dataflow programming)的概念,将复杂的数学运算表示为
    的头像 发表于 07-02 14:14 672次阅读

    TensorFlow与PyTorch深度学习框架的比较与选择

    深度学习作为人工智能领域的一个重要分支,在过去十年中取得了显著的进展。在构建和训练深度学习模型的过程中,深度
    的头像 发表于 07-02 14:04 883次阅读

    深度学习与传统机器学习的对比

    在人工智能的浪潮中,机器学习深度学习无疑是两大核心驱动力。它们各自以其独特的方式推动着技术的进步,为众多领域带来了革命性的变化。然而,尽管它们都属于机器学习的范畴,但
    的头像 发表于 07-01 11:40 1171次阅读

    谷歌模型框架是什么软件?谷歌模型框架怎么用?

    谷歌模型框架通常指的是谷歌开发的用于机器学习和人工智能的软件框架,其中最著名的是TensorFlowTensorFlow是一个开源的机器
    的头像 发表于 03-01 16:25 788次阅读

    AURIX TC397是否可以搭配Google TensorFlow的演算法去运算?

    请问各位大神,AURIX TC397 是否可以搭配 Google TensorFlow 的演算法 去运算??
    发表于 02-18 06:05

    如何使用TensorFlow构建机器学习模型

    在这篇文章中,我将逐步讲解如何使用 TensorFlow 创建一个简单的机器学习模型。
    的头像 发表于 01-08 09:25 907次阅读
    如何使用<b class='flag-5'>TensorFlow</b>构建机器<b class='flag-5'>学习</b>模型

    GPU在深度学习中的应用与优势

    学习中究竟担当了什么样的角色?又有哪些优势呢?一、GPU加速深度学习训练并行处理GPU的核心理念在于并行处理。在深度
    的头像 发表于 12-06 08:27 1201次阅读
    GPU在<b class='flag-5'>深度</b><b class='flag-5'>学习</b>中的应用与<b class='flag-5'>优势</b>