没有合适的资源?快使用搜索试试~ 我知道了~
首页探索TensorFlow内核:设计、优化与实现揭秘
探索TensorFlow内核:设计、优化与实现揭秘
5星 · 超过95%的资源 需积分: 13 10 下载量 119 浏览量
更新于2024-07-18
收藏 5.31MB PDF 举报
《TensorFlow内核剖析》是一本由刘光聪撰写的深入解析TensorFlow核心工作的专业书籍,它并非一本关于TensorFlow使用的入门指南或最佳实践手册。作者通过剖析TensorFlow的源代码,揭示了这个深度学习框架的系统架构、核心概念、工作原理以及其实现策略。这本书的目标读者是对TensorFlow内核设计有深厚兴趣,希望提升系统设计、性能优化技能,或者想要探究关键技术背后的工程师,如系统架构师、AI算法工程师和AI软件工程师。 作者假设读者具备基础的机器学习知识,熟悉Python和C++等编程语言。书中建议读者按照顺序逐步阅读,特别是对于初学者,可以从构建TensorFlow的源代码开始,这有助于理解整个系统的构建过程和依赖库。此外,作者鼓励读者通过实践TensorFlow在实际项目中的应用,来加深对其API和工作原理的理解。 值得注意的是,本书编写时基于TensorFlow的稳定版本1.2,但读者需意识到随着时间的推移,部分API可能会有所变化或被淘汰。书中为了聚焦核心内容,进行了部分重构,如简化异常处理和日志管理,这些改动并不影响理解系统的整体功能,反而有助于揭示其工作机制。 为了便于交流和纠正可能存在的错误,作者在GitHub上提供了勘误表和补充说明,欢迎读者在阅读过程中提出反馈。《TensorFlow内核剖析》是一本适合技术深入者研读,帮助读者揭开TensorFlow神秘面纱的实用参考书。
资源详情
资源推荐
4 第 1 章 介绍
编程模型
DistBelief 的编程模型是基于层的 DAG 图。层可以看做是一种组合多个运算操作符的
复合运算符,它完成特定的计算任务。例如,全连接层完成 f (W
T
x + b) 的复合计算,包括
输入与权重的矩阵乘法,随后再与偏置相加,最后在线性加权值的基础上应用激活函数,实
施非线性变换。
架构
DistBelief 使用参数服务器 (Parameter Server, 常称为 PS) 的系统架构,训练作业包括
两个分离的进程:无状态的 Worker 进程,用于模型的训练;有状态的 PS 进程,用于维护
模型的参数。如图1-1(第4页)所示,在分布式训练过程中,各个模型副本异步地从 PS 上
拉取训练参数 w,当完成一步迭代运算后,推送参数的梯度 ∆w 到 PS 上去,并完成参数的
更新。
图 1-1 DistBelief: Parameter Server 架构
缺陷
但是,对于深度学习领域的高级用户,DistBelief 的编程模型,及其基于 PS 的系统架
构,缺乏足够的灵活性和可扩展性。
1. 优化算法:添加新的优化算法,必须修改 PS 的实现;get(), put() 的抽象方法,
对某些优化算法并不高效。
2. 训练算法:支持非前馈的神经网络面临巨大的挑战性;例如,包含循环的 RNN,
交替训练的对抗网络,及其损失函数由分离的代理完成的增强学习模型。
3. 加速设备:DistBelief 设计之初仅支持多核 CPU,并不支持多卡的 GPU,遗留的
系统架构对支持新的计算设备缺乏良好的可扩展性。
1.1 前世今生 5
1.1.2 TensorFlow
DistBelief 遗留的架构和设计,不再满足深度学习与日俱增的需求变化,Google 毅然放
弃了既有的 DistBelief 实现,并决定在其基础上做全新的系统架构设计,TensorFlow 应运
而生,开创了深度学习领域的新纪元。
编程模型
TensorFlow 使用数据流图表达计算过程和共享状态,使用节点表示抽象计算,使用边
表示数据流。如图1-2(第5页)所示,展示了 MNIST 手写识别应用的数据流图。在该模型
中,前向子图使用了 2 层全连接网络,分别为 ReLU 层和 Softmax 层。随后,使用 SGD 的
优化算法,构建了与前向子图对应的反向子图,用于计算训练参数的梯度。最后,根据参数
更新法则,构造训练参数的更新子图,完成训练参数的迭代更新。
图 1-2 TensorFlow: 数据流图
设计原则
TensorFlow 的系统架构遵循了一些基本的设计原则,用于指导 TensorFlow 的系统实
现。
1. 延迟计算:图的构造与执行分离,并推迟计算图的执行过程;
6 第 1 章 介绍
2. 原子 OP:OP 是最小的抽象计算单元,支持构造复杂的网络模型;
3. 抽象设备:支持 CPU, GPU, ASIC 多种异构计算设备类型;
4. 抽象任务:基于任务的 PS,对新的优化算法和网络模型具有良好的可扩展性。
优势
相对于其他机器学习框架,TensorFlow 具有如下方面的优势。
1. 高性能:TensorFlow 升级至 1.0 版本性能提升显著,单机多卡 (8 卡 GPU) 环境
中,Inception v3 的训练实现了 7.3 倍的加速比;在分布式多机多卡 (64 卡 GPU) 环境
中,Inception v3 的训练实现了 58 倍的加速比;
2. 跨平台:支持多 CPU/GPU/ASIC 多种异构设备的运算;支持台式机,服务器,
移动设备等多种计算平台;支持 Windows,Linux,MacOS 等多种操作系统;
3. 分布式:支持本地和分布式的模型训练和推理;
4. 多语言:支持 Python, C++, Java, Go 等多种程序设计语言;
5. 通用性:支持各种复杂的网络模型的设计和实现,包括非前馈型神经网络;
6. 可扩展:支持 OP 扩展,Kernel 扩展,Device 扩展,通信协议的扩展;
7. 可视化:使用 TensorBoard 可视化整个训练过程,极大地降低了 TensorFlow 的
调试过程;
8. 自动微分:TensorFlow 自动构造反向的计算子图,完成训练参数的梯度计算;
9. 工作流:TensorFlow 与 TensorFlow Serving 无缝集成,支持模型的训练、导入、
导出、发布一站式的工作流,并自动实现模型的热更新和版本管理。
1.2 社区发展
TensorFlow 是目前炙手可热的深度学习框架。自开源以来,TensorFlow 社区相当活
跃。在 Github 上收获了来自众多的非 Google 员工的数万次代码提交,并且每周拥有近百
个 Issue 被提交。在 Stack Overow 上也拥有上万个关于 TensorFlow 的问题被提问和回答。
在各种技术大会上,TensorFlow 也是一颗闪亮的明星,得到众多开发者的青睐。
1.2.1 开源
2015.11,Google Research 发布文章:TensorFlow: Google's latest machine learning
system, open sourced for everyone,正式宣布新一代机器学习系统 TensorFlow 开源。随
后,TensorFlow 在 Github 上代码仓库短时间内获得了大量的 Star 和 Fork。如图1-3(第7页)
所示,TensorFlow 的社区活跃度已远远超过其他竞争对手,成为目前最为流行的深度学习
框架。
1.2 社区发展 7
图 1-3 TensorFlow:社区活跃度
毫无疑问,TensorFlow 的开源对学术界和工业界产生了巨大的影响,它极大地降低
了深度学习在各个行业中应用的难度。众多的学者、工程师、企业、组织纷纷地投入到了
TensorFlow 社区,并一起完善和改进 TensorFlow,推动其不断地向前演进和发展。
1.2.2 里程碑
TensorFlow 自 2015.11 开源以来,平均一个多月发布一个版本。如图1-4(第7页)所示,
展示了 TensorFlow 几个重要特性的发布时间。
图 1-4 TensorFlow 重要里程碑
1.2.3 工业应用
TensorFlow 自开源发展两年以来,在生产环境中被大量应用使用。在医疗方面,帮助
医生预测皮肤癌发生的概率;在音乐、绘画领域,帮助人类更好地理解艺术;在移动端,多
款移动设备搭载 TensorFlow 训练的机器学习模型,用于翻译工作。TensorFlow 在 Google
内部应用的增长也十分迅速,多个重量级产品都有相关应用,包括:Google Search, Google
剩余334页未读,继续阅读
绝不原创的飞龙
- 粉丝: 4w+
- 资源: 1083
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- zlib-1.2.12压缩包解析与技术要点
- 微信小程序滑动选项卡源码模版发布
- Unity虚拟人物唇同步插件Oculus Lipsync介绍
- Nginx 1.18.0版本WinSW自动安装与管理指南
- Java Swing和JDBC实现的ATM系统源码解析
- 掌握Spark Streaming与Maven集成的分布式大数据处理
- 深入学习推荐系统:教程、案例与项目实践
- Web开发者必备的取色工具软件介绍
- C语言实现李春葆数据结构实验程序
- 超市管理系统开发:asp+SQL Server 2005实战
- Redis伪集群搭建教程与实践
- 掌握网络活动细节:Wireshark v3.6.3网络嗅探工具详解
- 全面掌握美赛:建模、分析与编程实现教程
- Java图书馆系统完整项目源码及SQL文件解析
- PCtoLCD2002软件:高效图片和字符取模转换
- Java开发的体育赛事在线购票系统源码分析
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功