博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TensorFlow 源代码初读感受
阅读量:7102 次
发布时间:2019-06-28

本文共 885 字,大约阅读时间需要 2 分钟。

把自己微博发的文章: 也转到博客来,算是自己写的很短的一篇博客了。

花了一些时间看了一下TensorFlow 核心(core)部分的源代码,主要是C++的部分。除了C++ 11的代码实在有些烧脑以外,感叹一下TensorFlow的架构设计得真不错:

首先TensorFlow core要解决的问题全部集中在了图上:每个节点(node)就是一个操作(op),比如说矩阵乘法,每条边(edge)就是操作的输入也就是数据或者依赖关系(称为control edge)。每个op对应了不同的实现,也被称为kernel,比如说用GPU去做矩阵运算的实现,或者FPGA去做加法的实现等等。

然后就是如何优化了:

1) 首先是一个图的变换操作:用户输入的图根据op、kernel和输入/中间数据,被分布到不同的机器的硬件(device)上。这样把一个大图分拆成为了几个子图(每个device上一个?)。
2) 然后对分拆之后的子图再进行进一步的优化,比如说把那些无法访问的节点(dead node)删掉,把那些输入、输出、操作都一样的子图找出来防止重复计算 (Common Subexpression Elimination)等等
3)最后就是一些下层模块的优化,比如说RPC怎么做更快,Kernel怎么实现更优化等等。

这样的架构设计基本上能保证

1)不同层级之间的耦合很小,不至于一个改动牵一而发动全身。
2)项目的扩展性很好,有很少的瓶颈。比如说完全可以有一个小团队专门进行RPC的实现(RDMA),或者说用FPGA来实现不同op的kernel等等。这样可以完全让一个上百人的团队来并行的开发kernel和周边的东西。

目前读下来唯一觉得可能会导致扩展性的地方是Session还有图优化部分的实现,很难让大团队能够在这个部分并行工作,不过这部分代码也不是劳动密集型的改动,所以看起来也没什么大问题

转载于:https://www.cnblogs.com/LeftNotEasy/p/rough-understanding-of-tensorflow-sourcecode.html

你可能感兴趣的文章
如何实现多云成本的管理
查看>>
香港特首参观杭州城市大脑,阿里云技术获赞
查看>>
切入物流分拣市场,3D机器视觉还有多长的路要走?
查看>>
Influxdb简单实用操作
查看>>
好程序员Web前端开发入门之网页制作三要素
查看>>
「镁客早报」紫光申请100亿纾困专项债券;比利时禁止Facebook追踪当地用户
查看>>
阿里云专有宿主机(商业化)发布
查看>>
k8s :构建系统
查看>>
Linux 卸载挂载的磁盘时提示正忙
查看>>
MySQL免编译安装及登录(5.6.36)
查看>>
“莫兰迪色系” 高级灰
查看>>
微信小程序的十七个流量入口!
查看>>
YYKit 源码探究
查看>>
[雪峰磁针石博客]python 3.7极速入门教程5循环
查看>>
Nancy之基于Nancy.Hosting.Self的小Demo
查看>>
KDD 18 论文解读 | GraphWave:一种全新的无监督网络嵌入方法
查看>>
shell 在手分析服务器日志不愁?
查看>>
jeesite配置指南(官方文档有坑,我把坑填了!)
查看>>
Nginx 服务器本地缓存配置(学习笔记十五)
查看>>
[WPF]自定义鼠标指针
查看>>