020-机器学习背后的思维-针对入门小白的概念算法及工具的朴素思考

本文介绍了TensorFlow的工具层次结构,从硬件层面的CPU、GPU、TPU,到编程语言层面的C++和Python,探讨了各层级的作用。强调了Python在机器学习应用中的普及性和易用性,以及GPU和TPU在计算效率上的优势。
摘要由CSDN通过智能技术生成

8.1.2 TensorFlow 的工具箱

有些初学者会对机器学习的工具有不少问题,如下的一些例子。

1.) 听说TensorFlow 是用 Python 开发的, 是不是应该先去学会 Python 语言?
2.) 听说机器学习算法是跑在GPU上的, 是不是还要学一下并行开发的知识?
3.) 听说谷歌还有 TPU,和 CPU,GPU 啥关系?
在这里插入图片描述
为了回答上面的问题, 我们先看一张图,如图7所示。 上面标明了 TensorFlow 的 工具的层次, 从底到顶,抽象的层次越来越高, 越靠近顶部,和做应用的程序员的关 系就越近。

底部的平台层(Platforms)可以理解是一个硬件层。 最终的代码是执行在 CPU, GPU, TPU 的运算单元上。 CPU 就是我们普通的电脑主板上的 CPU。 当前主要是 Intel, AMD 等大厂生产的。 摩尔定律(Moore’s Law)所说的 18 个月性能升一倍, 价格下降一倍。这句话是针对 CPU 说的。 这个进步,主要是指 CPU 的工作主频, 从 286,386,486,奔腾(Pentium)I,II,III, ······ 一直往上升。 在2005年以前,由于 摩尔定律的存在, 使得软件程序员无需太过 注意代码运行速度的优化。 因为每过18 个月后,程序将会在新硬件上会运行得更快。 但是,从2005 年开始,这样的好事不再 有。 由于工艺的原因,频率到了 3GHz,4GHz的时候, 就上不去了。CPU 的时钟不 再增长。Intel、AMD 等处理器生产商也放弃了单一增加时钟频率, 转而通过增加处 理器的核数来获得更高的能力提升。当硬件产商开始将注意力转到功耗 与计算能力的 比值时, 程序速度上的优化工作也更多地依赖于程序员自身的优化水平。

在一个 CPU 芯片中封装多个计算核。 例如,2 核,4核,8 核,16 核。 当前,主 流的台式计算机以 8 核或 16 核为主。 多核并不是简单地原有核心的叠加。 它带来的 最显著的好处是功耗低。 在 2008 年我在美国 USC 读书的时候, 美国的各个 IT 公司 的数据中心的耗电量已经达到全美发电量的 6%-8%左右。所以, 在计算总量不变的情 况下,功耗降低是〸分大的科技进步。[9]
在这里插入图片描述
下面我们来稍微解释一下其中的原因。 看一个这张图,如图(8)所示。 请你观 察一下图中的的功率 Power 的公式:
在这里插入图片描述
可以看到,在同样的计算任务量下, 由于电压和频率的下降, 使得整体CPU芯片 功耗可以降低一半以下, 可以说是巨大的进步。

接着我们来说 GPU(Graphics processing unit)。 一看名字,就是做图形处理的。 以前GPU主要在游戏中使用,尤其是以3D渲染而闻名。 GPU不同于传统的CPU, 如 Intel i5或i7处理器,其内核数量较少, 专为通用计算而设计。相反, GPU是一种特殊 类型的处理器, 具有数百或数千个运算内核,经过优化, 可并行运行大量计算,特别 是实数或浮点数运算。 那你可能会问,为什么 CPU 不能做成与 GPU 类似的成百上千 个核的?这是因为 CPU 有很大一部分功能是做逻辑运算,就是编程语言里的条件分支 判断 IF 语句, 循环语句 While For 之类的。而且, 你如果有一些编程的经验的话,计 算机最常用的功能不是算加减乘除, 而是条件判断。计算机最擅长什么呢?是加减。 这些所谓的逻辑判断计算拖住了CPU的速度提升。

当然,业界还是做出了努力的。 比如说,2008 年的Tilera 做出了 64 CPU 核心的芯 片。 机缘巧合,我当时用这个板子做了个 H264 视频编码的 Demo。 就性能而言,当 时还是不错的。但是,很不幸,Tilera 公司后来由于商业经营的原因倒闭后,又被别 家公司收购了。 我猜,它当时要跟 Intel 拼服务器芯片市场。 小弟想和行业老大PK, 老大一定想法儿Neng4死你。 国内也一样,2001年李一男的港湾网络想和华为 PK 抢 地盘, 生意刚有起色, 就被老大按住并收购了。 感兴趣的, 可以去网上搜索一下。 在这儿,我就不跑题了。

TPU (tensor processing unit)是Google为机器学习全定制的人工智能加速器专用 芯片, 当前专为框架TensorFlow而设计。 与 GPU 相比,TPU通过损失一定精度的情 况下, 大幅降低功耗、加快运算速度。同时, TPU使用了脉动阵列的设计,用来优化 矩阵乘法与卷积运算, 减少I/O操作。此外, TPU还在芯片里焊了更多的内存, 以此 减少对外部存储芯片的访问, 从而更大程度地提升性能。

Google在2016年的Google I/O年会上首次公布了TPU。 在Google街景服务、Rank-Brain以及围棋软件Alpha-Go等都用到了TPU。 第二代TPU的浮点运算能力为每秒180 万亿次。 光说这个速度大家可能没什么概念,我们举个例子对比一下。 大家知道,我 们国家自主研发的超级计算机最出名的当属「银河计算机」。 在 80 年代的时候,银 河一代每秒计算为 1 亿次; 90 年代,银河二、三代每秒计算为 10 亿次和 130 亿次, 2000 年左右,银河四代每秒计算为 1 万亿次。 1

我们继续说图 7。 其倒数第二层是,C++ TensorFlow。 它是用 C++ 语言写的, 原因比较简单就是一个字「快」, 运行速度快是最核心的原因。 其它的原因,可能是 C 长期对硬件的支持比较好, 而且 C 语言的发展这么多年,在工业界还是常青不老, 也说明其是一种更成熟的语言。

第三层是 Python TensorFlow。 这一层就是开始考虑上层的实际应用问题。 当前 使用 C 和 C++ 来写应用的程序员已经不太多了, 而且C 和 C++比较难学,新入行的 程序员一般不会选它。 学校里也不教了,会的人就更少了。 另外,C 语言对系统底层 的操作余地大, 内存管理,指针运用要求都比较高。 如果程序员没有经验的话,会动 不动让应用崩溃了。

而 Python 语言真是老少皆宜。 入门半个小时,就可以了。 如果你想钻研,玩出 花样,也可支持。 因此,玩家众多,特别是刚开始, 受到学术圈子里老师学生们的喜 爱。 2 有人说,Python 就像电商里面的拼多多, 开店卖东西 10 分钟就搞定了。

这一层主要是为了上层的应用做了 Python 的封装。 从 C++ 语言开始转向 Python 语言。

倒数第四层,就是一些通用的模块, 已经写好了供顶层(第五层)使用的。 比如 说,矩阵的运算,常用损失函数 MSE 之类的。

顶层(第五层),也叫 TensorFlow Estimators。 它是High-level API,通常是以面 向对象(OOP)的语言形式用 Python语言封装的。 使用这一层的 API 就可以完成一 些任务, 甚至是一些复杂的任务了。

注意,通常所谓的 Lower-level 的 API 是指第三层 Python TensorFLow和第二层C+ +TensorFlow。

到当前为止,你就可以用一行代码完成一个线性分类器模型的定义。 例如:

import tensorflow as tf
# Set up a linear classifier.
classifier = tf.estimator.LinearClassifier(feature_columns)

021-机器学习背后的思维-针对入门小白的概念算法及工具的朴素思考

声明:文档原创不易。本文版权归属于作者本人。 如需转载,请标注出处,〸 分感谢。 引用时,可以用如下文本格式:
[1] 燕志伟. 机器学习背后的思维-针对入门小白的概念算法及工具的朴素思考. https://blog.csdn.net/jerodyan. 2020.


  1. 记得当年,我们在时事政治考试时,还考过银河的计算性能这个题。 另外,注意一点是 TPU 是一 个芯片, 而银河是大型机,当时要占一栋办公楼或一层办公楼。 ↩︎

  2. 这里强调一点, Python 一开始发展, 在学术界的认可度很重要。 你想呀,大家都要上学。 通常 当学生时,在学校里啥工具好用, 毕业到公司工作,如果工作中能用,就一定会用。 慢慢地,工业界 也就越越多人开始使用 Python 写生产代码。 当然,这和 Python 自己争气也有关系。 另外, 与国内老 师很多教授是甩手掌柜, 让学生放羊, 让研究生做科研, 写代码不同, 国外的许多大牌教授是写代 码的, 而且代码的质量非常高。 有一次 Seminar,我听一个教授说, 项目组里的代码最难的部分,很 多都是他亲自下去操刀写的。 原话是,脏活累活,我要是不干,就没人干了。我是所有人的后备。 当 然,也正因为这些教授的身先士卒, 他们的学生们才能持续地做出如此出色的工作。 国内的情况,我 就不吐槽了。:) ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值