北京 | 深度学习与人工智能研修
12月23-24日

再设经典课程 重温深度学习
阅读全文
>

正文共1434个字,21张图,预计阅读时间:4分钟。

第一版TensorFlow第一版发布于2015年11月,它可以运行在多台服务器的GPU上,同时并在其上面进行训练。2016年2月,更新版中增加了分布式与并发处理。

在本章简短的小节中,我会介绍如何使用GPU。对想深入理解这些设备是如何工作的读者,最后章节中列出了一些参考引用,本书不会讨论分布式版本中的细节,对分布式细节感兴趣的读者,最后章节中同样列出了一些参考引用。


GPU的执行环境

如果需要TensorFlow支持GPU,需要安装CudaToolkit 7.0 and CUDNN 6.5 V2。为安装这些环境,建议读者访问cuda的官网来了解安装细节。

TensorFlow中引用这些设备的方式如下:

“/cpu:0”: To reference the server’s CPU.

“/gpu:0”: The server’s GPU, if only one is available.

“/gpu:1”: The second server’s GPU, and so on.

为了追踪操作与tensor被分配到哪个设备上了,我们需要以log_device_placement设置为true作为参数来创建session,示例代码如下:

当读者在自己电脑上测试本代码时,会看如下类似的相关输出:

同时,根据这个输出结果,我们同样可看到每一部分是在哪调度执行的。

如果我们希望一个具体的操作调度到一个具体的设备上执行,而不是由系统自动选择设备,我们可通过tf.device来创建设备上下文,所有在该上下文中的操作都会调度到该设备中。

如果系统中不止一个GPU,默认选择较小编号的GPU。假如我们想在不同的GPU上执行操作,需要显式指明。例如,如果我们想让之前的代码在GPU2上执行,可通过tf.device(“/gpu:2”)来指定:


多个GPU 并发

假如我们有不止一个CPU,通常我们想在解决一个问题时并发使用民有GPU。例如,我们可建立模型来将工作分布式分发到多个GPU上,示例如下:

代码与之前的代码功能类似,但是现在有2个GPU来执行乘法计算(为简化示例,两个GPU执行的逻辑一样),稍后CPU执行加法计算。因为log_device_placement设置为true,我们可看到操作是如何在多个设备间分布式分发的:


编码实现多GPU

我们通过一个代码例子为总结这一简短的小节,代码例子与DamienAymeric在Github上分享的类似,n=10时,计算An+Bn,比较1个GPU与2个GPU的执行时间。

首先,导入需要库:

通过numpy库用随机值创建两个矩阵:

然后创建两个结构体来存储结果:

接下来,定义matpow()函数如下:

如果在一个GPU上执行这段代码,过程如下:

如果在2个GPU上运行,代码如下:

最后,打印计算时间:


分布式版本TensorFlow

如之前所说,Google在2016年2月开源了分布式版本的TensorFlow,其基于gRPC,一个用来进程间通信的,高性能开源RPC框架(TensorFlow Serving使用同样的协议)。

如果想使用分布式版本,需要自己编译二进制程序,因为目前该库只以源码的形式提供。本书不会讨论分布式版本的细节,如果读者想了解关于分布式的信息,建议访问TensorFlow分布式版本的官网。

跟之前章节类似,本章中的代码同样能在Github上获得。我希望本章节已经描述清楚了如何通过多GPU来加速训练模型。

原文链接:http://www.jianshu.com/p/e8a267e9f47b

查阅更为简洁方便的分类文章以及最新的课程、产品信息,请移步至全新呈现的“LeadAI学院官网”:

www.leadai.org

请关注人工智能LeadAI公众号,查看更多专业文章

大家都在看


LSTM模型在问答系统中的应用

基于TensorFlow的神经网络解决用户流失概览问题

最全常见算法工程师面试题目整理(一)

最全常见算法工程师面试题目整理(二)

TensorFlow从1到2 | 第三章 深度学习革命的开端:卷积神经网络

装饰器 | Python高级编程

今天不如来复习下Python基础


点击“阅读原文”直接打开报名链接

译文 | 与TensorFlow的第一次接触 第六章:并发相关推荐

  1. 译文 | 与TensorFlow的第一次接触 第五章:多层神经网络

    北京 深度学习与人工智能研修12月23-24日 再设经典课程 重温深度学习阅读全文> 正文共5270个字,15张图,预计阅读时间14分钟. 本章中,我们继续使用之前章节中的MNIST数字识别问题 ...

  2. 译文 | 与TensorFlow的第一次接触 第四章:单层神经网络

    北京 | 深度学习与人工智能研修 12月23-24日 再设经典课程 重温深度学习阅读全文> 正文共7865个字,27张图,预计阅读时间:20分钟. 在前言中,已经提到经常使用深度学习的领域就是模 ...

  3. 译文 | 与TensorFlow的第一次接触 第三章:聚类

    北京 | 深度学习与人工智能研修 12月23-24日 再设经典课程 重温深度学习阅读全文> 正文共6615个字,33张图,预计阅读时间:17分钟. 前一章节中介绍的线性回归是一种监督学习算法,我 ...

  4. 译文 | 与TensorFlow的第一次接触(一)

    北京 | 深度学习与人工智能研修 12月23-24日 再设经典课程 重温深度学习阅读全文> 正文共8444个字,8张图,预计阅读时间22分钟. 目录 译者序 前言 序 实践练习 1.Tensor ...

  5. 译文 | 与TensorFlow的第一次接触第二篇:线性回归

    北京 | 深度学习与人工智能研修 12月23-24日 再设经典课程 重温深度学习阅读全文> 正文共3655个字,21张图,预计阅读时间:10分钟. 本章中,将会利用TensorFlow实现一个简 ...

  6. java 并发集合_《Java 7并发编程实战手册》第六章并发集合

    由人民邮电出版社出版的<Java 7并发编程实战手册>终于出版了,译者是俞黎敏和申绍勇,该书将于近期上架.之前并发编程网组织翻译过此书,由于邮电出版社在并发网联系他们之前就找到了译者,所以 ...

  7. Java7并发编程指南——第六章:并发集合

    Java7并发编程指南--第六章:并发集合 @(并发和IO流) Java7并发编程指南第六章并发集合 思维导图 项目代码 思维导图 项目代码 GitHub:Java7ConcurrencyCookbo ...

  8. Project Pacific的第一次接触(转)

    这是己亥年的最后一篇公众号更新,想谈谈自己与VMware Pacific产品的第一次接触,提供一些配置的参考,感兴趣的朋友们可以一起对照着在自己的环境中进行模拟. 首先我们来看几张演示用例: 这可能是 ...

  9. vue中常碰见的坑_Vue 与 Vuex 的第一次接触遇到的坑

    在 Vue.js 的项目中,如果项目结构简单, 父子组件之间的数据传递可以使用  props 或者 $emit 等方式 但是如果是大型项目,很多时候都需要在子组件之间传递数据,使用之前的方式就不太方便 ...

最新文章

  1. 人群分割--Fully Convolutional Neural Networks for Crowd Segmentation
  2. 转载:如何优雅的实现INotifyPropertyChanged接口
  3. C4.5决策树 此博文包含图片 (2011-10-20 23:22:19)转载▼ 标签: 分类树
  4. timestamp列的有关知识
  5. Vue.js 打造酷炫的可视化数据大屏
  6. Postman里如何把某个HTTP的请求和响应作为example保存
  7. win7磁盘设置背景方法
  8. java http 返回码_【Java】Http返回状态码
  9. 判断Logger级别是否开启的方法
  10. 狮子鱼社区团购独立版V15.3.0源码
  11. 如何在一个页面中动态放置多个Droppable来接受不同的Draggable?(accept参数的用法)...
  12. Redis的数据类型及其常用命令
  13. 全国计算机二级报名入口新疆,新疆2019年3月全国计算机等级(NCRE)考试(第54次)报名入口...
  14. 立方单位换算计算机,立方进率换算(立方进率单位换算表)
  15. 个人所得综合税年度汇算,个税计算公式,个税计算案例
  16. MYSQL数据库开发之路-----数据查询一
  17. 【调剂】上海电力大学控制工程 、通信工程、人工智能等专业调剂信息
  18. 关于Android 抓包 与 反抓包
  19. 实现strncmp()函数
  20. echarts仪表盘option_ECharts 仪表盘样式修改

热门文章

  1. 上银伺服驱动器说明书_威海伺服驱动器维修,诚信互利
  2. matlab画二维颜色深浅,matlab中如何为二维图形填充渐进的颜色
  3. 天籁obd接口针脚定义_典藏 | OBD接口位置大全及部分常用手机型号语音播报设置流程...
  4. 前端证券项目_证监会公告[2018]6号 证券公司投资银行类业务内部控制指引
  5. python越学越糊涂_你越努力,编程水平越差!这样学 Python ,更容易成为高手!...
  6. python中表示空类型的是_python中什么表示空类型
  7. 小学音乐教学和计算机的融合,小学学科教学与计算机深度融合赛课心得体会(共4篇)...
  8. filebeat配置参数_filebeat配置详解
  9. 自动化测试---Assert
  10. linux 通过at命令创建任务