详解Google第二代TPU 既能推理又能训练 性能霸道

转自:http://www.cnbeta.com/articles/tech/613639.htm

5月18日凌晨,Google CEO Sundar Pichai在I/O大会上正式公布了第二代TPU,又称Cloud TPU或TPU 2.0,这一基于云计算的硬件和软件系统,将继续支撑Google最前沿的人工智能技术。第一代TPU于去年发布,它被作为一种特定目的芯片而专为机器学习设计,并用在了AlphaGo的人工智能系统上,是其预测和决策等技术的基础。

随后,Google还将这一芯片用在了其服务的方方面面,比如每一次搜索都有用到TPU的计算能力,最近还用在了Google翻译、相册等软件背后的机器学习模型中。

今天凌晨,Google宣布第二代的TPU系统已经全面投入使用,并且已经部署在了Google Compute Engine平台上。它可用于图像和语音识别,机器翻译和机器人等领域。

新的TPU包括了四个芯片,每秒可处理180万亿次浮点运算。Google还找到一种方法,使用新的计算机网络将64个TPU组合到一起,升级为所谓的TPU Pods,可提供大约11500万亿次浮点运算能力。

强大的运算能力为Google提供了优于竞争对手的速度,和做实验的自由度。Google表示,公司新的大型翻译模型如果在32块性能最好的GPU上训练,需要一整天的时间,而八分之一个TPU Pod就能在6个小时内完成同样的任务。之所以开发新芯片,部分也是因为Google的机器翻译模型太大,无法如想要的那么快进行训练。

除了速度,第二代TPU最大的特色,是相比初代TPU它既可以用于训练神经网络,又可以用于推理。初代的TPU只能做推理,要依靠Google云来实时收集数据并产生结果,而训练过程还需要额外的资源。

机器学习的能力已经逐渐在消费级产品中体现出来,比如Google翻译几乎可以实时将英语句子变成中文,AlphaGo能以超人的熟练度玩围棋。所有这一切都要靠训练神经网络来完成,而这又需要计算能力。所以硬件越强大,得到的结果就越快。如果将每个实验的时间从几周缩短到几天或几个小时,就可以提高每个机器学习者快速迭代,并进行更多实验的能力。由于新一代TPU可以同时进行推理和训练,研究人员能比以前更快地部署AI实验。

过去十多年来,Google已经开发出很多新的数据中心硬件,其中包括服务器和网络设备,主要目的是扩张自己的在线帝国。而过去几年中,在AI方面Google也选择开发自己的硬件,为其软件做优化。神经网络是复杂的数学系统,通过分析大量数据来学习,这种系统从根本上改变了技术的构建和运行方式,影响范围也包括硬件。

在某种程度上,初代的TPU被设计来是为了更好地支持TensoFlow机器学习框架。而归功于Google在软硬件上的进步与集成,TensorFlow已经成为构建AI软件的领先平台之一。这种优化,再加上Google大脑及其DeepMind子公司的内部人才,正是Google在AI领域保持领先的部分原因。

芯片厂商NVidia的GPU几乎主宰了机器学习的市场,而现在,Google想通过专门设计用于训练神经网络的芯片,来改变市场提格局。

亚马逊和微软通过自己的云服务提供GPU处理,但他们不提供定制的AI芯片。

 

不过Google也不能因此而高枕无忧,因为短期内竞争就会加剧。目前已经有几家公司,包括芯片巨头英特尔和一大批初创公司,正在开发专门的AI芯片,它们都可能替代Google TPU。

首先开发出新的芯片并不能保证Google成功,要使用TPU 2.0,开发者要学习一种构建和运行神经网络的新方法。它不仅仅是一个新的芯片,TPU 2.0也是专门为TensorFlow设计。虽然Tensorflow是开源软件,但也有许多研究人员使用Torch和Caffe等类似的软件。新硬件需要新的软件优化,这需要不少时间。

在Google推出TPU 2.0的几周之前,Facebook的AI研究主管Yann LeCun质疑称,市场可能不需要新的AI专用芯片,因为研究者已经对使用GPU所需的工具非常熟悉了。新的硬件意味着新的生态系统。

另外,Google云服务的成功不仅取决于芯片的速度,以及使用的容易程度,还要考虑成本。所以,如果Google以比现有GPU服务更低的成本提供TPU服务,会得到更广泛的用户基础。

Google自己当然会使用新TPU系统,但也会将它的能力开放给其它公司使用。Google表示,不会将芯片直接出售,而是会通过其新的云服务(年底前公布)提供,任何开发者都可以使用新处理器带来的计算能力。

Google也重申了其对开源模式的承诺,表示会向同意发布研究结果的研究人员提供TPU资源,甚至可能开源代码。他甚至呼吁开发者加入TensorFlow Research Cloud计划,它会免费提供一组1000台TPU。

新TPU的速度优势肯定会吸引到不少研究人员,毕竟AI研究要在大量硬件上广泛试错。就此而言,Google愿意免费提供计算资源对全世界的AI研究者来说都是有好处的,当然,这对Google来说也是有好处的。

详解Google第二代TPU 既能推理又能训练 性能霸道的更多相关文章

  1. 详解Google Chrome浏览器(操作篇)(一)

    开篇概述 在上篇博客中详解Google Chrome浏览器(理论篇)一文中,主要讲解了Chrome 搜索引擎使用.Chrome安装和基本操作.Chrome 基本架构.多线程等原理性问题,这篇将重点讲解 ...

  2. 详解Google Chrome浏览器(操作篇)(下)

    开篇概述 由于最近忙于公司产品的架构与研发,已经三个多月没有写博客了,收到有些朋友的来信,问为什么不及时更新博客内容呢,他们说他们正期待着某些内容.对此,非常抱歉,那么我在此也给各位朋友一些承诺,从即 ...

  3. 详解Google Chrome浏览器(操作篇)(上)

    开篇概述 在上篇博客中详解Google Chrome浏览器(理论篇)一文中,主要讲解了Chrome 搜索引擎使用.Chrome安装和基本操作.Chrome 基本架构.多线程等原理性问题,这篇将重点讲解 ...

  4. 详解google Chrome浏览器(理论篇)

    注解:各位读者,经博客园工作人员反馈,hosts涉及违规问题,我暂时屏蔽了最新hosts,若已经获取最新hosts的朋友们,注意保密,不要外传.给大家带来麻烦,对此非常抱歉!!! 开篇概述 1.详解g ...

  5. 分布式专题——详解Google levelDB底层原理

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是分布式专题的第10篇文章,我们继续来聊聊LSMT这个数据结构. LSMT是一个在分布式系统当中应用非常广泛,并且原理直观简单的数据结构 ...

  6. Android Design Support Library使用详解

    Android Design Support Library使用详解 Google在2015的IO大会上,给我们带来了更加详细的Material Design设计规范,同时,也给我们带来了全新的And ...

  7. 详解googe Chrome浏览器(理论篇)

    开篇概述 1详解google Chrome浏览器,这个标题似乎抽象了一些,我想应该把它拆分成如下几个问题,也许会更加理解一些. 问题1:目前开发中,主选浏览器有Google Chrome,IE,Fir ...

  8. C++的性能C#的产能?! - .Net Native 系列《二》:.NET Native开发流程详解

    之前一文<c++的性能, c#的产能?!鱼和熊掌可以兼得,.NET NATIVE初窥> 获得很多朋友支持和鼓励,也更让我坚定做这项技术的推广者,希望能让更多的朋友了解这项技术,于是先从官方 ...

  9. [面试专题]Web缓存详解

    Web缓存详解 标签(空格分隔): 缓存 缓存之于性能优化 请求更快:通过将内容缓存在本地浏览器或距离最近的缓存服务器(如CDN),在不影响网站交互的前提下可以大大加快网站加载速度. 降低服务器压力: ...

随机推荐

  1. 非内置浏览器WebView 调起H5支付,提示商家参数格式有误

    微信H5 支付开发官方文档参考资料: https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=15_4 0. 场景描述:在APP 中使用webVie ...

  2. AO如何获取SDE数据库中的数据

    /// <summary> /// 获取Table类型表的记录 /// </summary> /// <param name="relationCheckCla ...

  3. DataGridView 单击赋值

    void dataGridView1_Click(object sender, EventArgs e) { M_int_judge = ; btnSave.Enabled = true; btnSa ...

  4. 【sqli-labs】 less7 GET - Dump into outfile - String (导出文件GET字符型注入)

    使用此漏洞需要知道WEB程序的根路径并且MYSQL的secure-file-priv配置应为可写入该路径 添加单引号,发现错误被屏蔽 对应的SQL语句应为 ')) ... 字段还是3个 在数据库中执行 ...

  5. c#同步锁Monitor.Enter(T)

    protected static object MObjLock = new object();//同步锁 public string GetData(int mId) { Monitor.Enter ...

  6. select和epoll最大的区别

    先说说阻塞,因为一个线程只能处理一个套接字的I/O事件,如果想同时处理多个,可以利用非阻塞忙轮询的方式,伪代码如下: while true { for i in stream[] { if i has ...

  7. C#连接Oracle数据库的方法(System.Data.OracleClient、Oracle.DataAccess.Client也叫ODP.net、Oracle.ManagedDataAccess.dll)

    官方下载地址(ODP.net)(中文):http://www.oracle.com/technetwork/cn/topics/dotnet/downloads/index.html 官方下载地址(O ...

  8. BZOJ2251 [2010Beijing Wc]外星联络 后缀数组 + Height数组

    Code: #include <bits/stdc++.h> #define setIO(s) freopen(s".in", "r", stdin ...

  9. Day9 面向对象进阶

    @property装饰器 之前我们讨论过Python中属性和方法访问权限的问题,虽然我们不建议将属性设置为私有的,但是如果直接将属性暴露给外界也是有问题的,比如我们没有办法检查赋给属性的值是否有效.我 ...

  10. [luogu2319 HNOI2006] 超级英雄 (匈牙利算法)

    传送门 Description 现在电视台有一种节目叫做超级英雄,大概的流程就是每位选手到台上回答主持人的几个问题,然后根据回答问题的多少获得不同数目的奖品或奖金.主持人问题准备了若干道题目,只有当选 ...