TensorFlow架构与设计:概述

TensorFlow库详解:Python中的深度学习框架 TensorFlow 是一个开源的深度学习框架,由 Google Brain 团队开发,并于 2015 年正式发布。TensorFlow 被广泛应用于各种深度学习任务,如图像识别、自然语言处理、语音识别等。它能够处理大规模的多维数据,并支持在多种硬件平台上运行,如 CPU、GPU 和 TPU(Tensor Processing Unit)。TensorFlow 在 Python 中的使用非常广泛,因为 Python 是机器学习和数据科学领域的主流编程语言。 阅读详情

开源书籍

关于TensorFlow的内核详细原理与运行机制,请查阅我的开源技术书籍:TensorFlow内核剖析。

TensorFlow是什么?

TensorFlow基于数据流图,用于大规模分布式数值计算的开源框架。节点表示某种抽象的计算,边表示节点之间相互联系的张量。

计算图实例

TensorFlow支持各种异构的平台,支持多CPU/GPU,服务器,移动设备,具有良好的跨平台的特性;TensorFlow架构灵活,能够支持各种网络模型,具有良好的通用性;此外,TensorFlow架构具有良好的可扩展性,对OP的扩展支持,Kernel特化方面表现出众。

TensorFlow最初由Google大脑的研究员和工程师开发出来,用于机器学习和神经网络方面的研究,于2015.10宣布开源,在众多深度学习框架中脱颖而出,在Github上获得了最多的Star量。

本文将阐述TensorFlow的系统架构,帮助读者加深理解TensorFlow的工作机理。

本文假设读者已经了解TensorFlow的基本编程模型,包括计算图, OP, Tensor, Session等基本概念。

系统概述

TensorFlow的系统结构以C API为界,将整个系统分为「前端」和「后端」两个子系统:

  • 前端系统:提供编程模型,负责构造计算图;
  • 后端系统:提供运行时环境,负责执行计算图。

TensorFlow系统架构

如上图所示,重点关注系统中如下4个基本组件,它们是系统分布式运行机制的核心。

Client

Client是前端系统的主要组成部分,它是一个支持多语言的编程环境。它提供基于计算图的编程模型,方便用户构造各种复杂的计算图,实现各种形式的模型设计。

Client通过Session为桥梁,连接TensorFlow后端的「运行时」,并启动计算图的执行过程。

Distributed Master

在分布式的运行时环境中,Distributed Master根据Session.run的Fetching参数,从计算图中反向遍历,找到所依赖的「最小子图」。

然后,Distributed Master负责将该「子图」再次分裂为多个「子图片段」,以便在不同的进程和设备上运行这些「子图片段」。

最后,Distributed Master将这些「子图片段」派发给Work Service;随后Work Service启动「子图片段」的执行过程。

Worker Service

对于每以个任务,TensorFlow都将启动一个Worker Service。Worker Service将按照计算图中节点之间的依赖关系,根据当前的可用的硬件环境(GPU/CPU),调用OP的Kernel实现完成OP的运算(一种典型的多态实现技术)。

另外,Worker Service还要负责将OP运算的结果发送到其他的Work Service;或者接受来自其他Worker Service发送给它的OP运算的结果。

Kernel Implements

Kernel是OP在某种硬件设备的特定实现,它负责执行OP的运算。

组件交互

组件交互

如上图所示,假设存在两个任务:

  • /job:ps/task:0: 负责模型参数的存储和更新
  • /job:worker/task:0: 负责模型的训练或推理

接下来,我们将进一步抽丝剥茧,逐渐挖掘出TensorFlow计算图的运行机制。

客户端

Client基于TensorFlow的编程接口,构造计算图。目前,TensorFlow主流支持Python和C++的编程接口,并对其他编程语言接口的支持日益完善。

此时,TensorFlow并未执行任何计算。直至建立Session会话,并以Session为桥梁,建立Client与后端运行时的通道,将Protobuf格式的GraphDef发送至Distributed Master。

也就是说,当Client对OP结果进行求值时,将触发Distributed Master的计算图的执行过程。

如下图所示,Client构建了一个简单计算图。它首先将w与x进行矩阵相乘,再与截距b按位相加,最后更新至s。

构造计算图

Distributed Master

在分布式的运行时环境中,Distributed Master根据Session.run的Fetching参数,从计算图中反向遍历,找到所依赖的最小子图。

然后Distributed Master负责将该子图再次分裂为多个「子图片段」,以便在不同的进程和设备上运行这些「子图片段」。

最后,Distributed Master将这些图片段派发给Work Service。随后Work Service启动「本地子图」的执行过程。

Distributed Master将会缓存「子图片段」,以便后续执行过程重复使用这些「子图片段」,避免重复计算。

执行图计算

如上图所示,Distributed Master开始执行计算子图。在执行之前,Distributed Master会实施一系列优化技术,例如「公共表达式消除」,「常量折叠」等。随后,Distributed Master负责任务集的协同,执行优化后的计算子图。

子图片段

子图片段

如上图所示,存在一种合理的「子图片段」划分算法。Distributed Master将模型参数相关的OP进行分组,并放置在PS任务上。其他OP则划分为另外一组,放置在Worker任务上执行。

SEND/RECV节点

插入SEND/RECV节点

如上图所示,如果计算图的边被任务节点分割,Distributed Master将负责将该边进行分裂,在两个分布式任务之间插入SEND和RECV节点,实现数据的传递。

随后,Distributed Master将「子图片段」派发给相应的任务中执行,在Worker Service成为「本地子图」,它负责执行该子图的上的OP。

Worker Service

对于每个任务,都将存在相应的Worker Service,它主要负责如下3个方面的职责:

  • 处理来自Master的请求;
  • 调度OP的Kernel实现,执行本地子图;
  • 协同任务之间的数据通信。

执行本地子图

Worker Service派发OP到本地设备,执行Kernel的特定实现。它将尽最大可能地利用多CPU/GPU的处理能力,并发地执行Kernel实现。

另外,TensorFlow根据设备类型,对于设备间的SEND/RECV节点进行特化实现:

  • 使用cudaMemcpyAsync的API实现本地CPU与GPU设备的数据传输;
  • 对于本地的GPU之间则使用端到端的DMA,避免了跨host CPU昂贵的拷贝过程。

对于任务之间的数据传递,TensorFlow支持多协议,主要包括:

  • gRPC over TCP
  • RDMA over Converged Ethernet

Kernel Implements

TensorFlow的运行时包含200多个标准的OP,包括数值计算,多维数组操作,控制流,状态管理等。每一个OP根据设备类型都会存在一个优化了的Kernel实现。在运行时,运行时根据本地设备的类型,为OP选择特定的Kernel实现,完成该OP的计算。

TensorFlow Core

其中,大多数Kernel基于Eigen::Tensor实现。Eigen::Tensor是一个使用C++模板技术,为多核CPU/GPU生成高效的并发代码。但是,TensorFlow也可以灵活地直接使用cuDNN实现更高效的Kernel。

此外,TensorFlow实现了矢量化技术,使得在移动设备,及其满足高吞吐量,以数据为中心的应用需求,实现更高效的推理。

如果对于复合OP的子计算过程很难表示,或执行效率低下,TensorFlow甚至支持更高效的Kernle实现的注册,其扩展性表现相当优越。

技术栈

最后,按照TensorFlow的软件层次,通过一张表格罗列TensorFlow的技术栈,以便更清晰地对上述内容做一个简单回顾。

TensorFlow技术栈

开源技术书

https://github.com/horance-liu/tensorflow-internals

 

图解TensorFlow架构与设计 作者:刘光聪 ,中兴通讯高级系统架构师,专注机器学习算法,分布式系统架构与优化。 原文:TensorFlow架构与设计 责编:王艺 优快云 AI记者,投稿、寻求报道、深入交流请邮件wangyi@youkuaiyun.com或扫描文末二维码添加微信。 TensorFlow是什么?TensorFlow基于数据流图,用于大规模分布式数值计算的开源框架。节点表示某种抽象的计算,边表示节点之间相互联... 阅读详情

相关推荐

Tensorflow源码解析1 -- 内核架构和源码结构

1 主流深度学习框架对比 当今的软件开发基本都是分层化和模块化的,应用层开发会基于框架层。比如开发Linux Driver会基于Linux kernel,开发Android app会基于Android Framework。深度学习也不例外,框架层为上层模型开发提供了强大的多语言接口、稳定的运行时、高效的算子,以及完备的通信层和设备层管理层。因此,各大公司早早的就开始了深度学习框架的研发,以便能占领...

谢杨易的博客 3万+

TensorFlow 技术总结

TensorFlow 是由谷歌开发的一款开源机器学习框架,广泛应用于各类机器学习任务,包括深度学习、强化学习和传统的机器学习任务。TensorFlow 因其高性能、灵活性和广泛的社区支持,成为了学术界和工业界的主流选择。以下是对 TensorFlow 技术的详细总结,包括其历史、特点、核心组件、应用场景、实际应用中的经验和技巧。一、TensorFlow 简介历史背景 TensorFlow 由谷歌大脑团队开发,最初发布于2015年。它是 DistBelief 的继任者,DistBelief 是谷歌内部使用的第

weixin_40426261的博客 1627

08-SD卡-TF卡硬件电路设计

SD卡-TF卡硬件电路设计

weixin_66510961的博客 8258

TensorFlow 架构与设计-四大组件【转】

原文:刘光聪·简书   TensorFlow是什么 系统概述 client master worker kernel   TensorFlow是什么? TensorFlow基于数据流图,用于大规模分布式数值计算的开源框架。节点表示某种抽象的计算,边表示节点之间相互联系的张量。 计算图实例 TensorFlow支持各种异构的平台,支持多...

weixin_34189116的博客 908

Arduino-CRSF库详解:嵌入式端CRSF协议解析与ELRS接收机集成

CRSF(Crossfire Serial Protocol)是一种面向FPV无人机的轻量级、高实时性串行通信协议,采用单总线异步传输与8位CRC-8校验机制,广泛应用于遥控链路与遥测交互。其核心在于帧同步(0xC8起始字节)、反相逻辑电平及无重传的广播式设计,对嵌入式平台的UART精度、电平匹配和状态机健壮性提出严苛要求。Arduino-CRSF库正是为资源受限MCU(如ESP32、STM32、ATmega328P)提供零配置、中断安全的协议解析能力,封装了CRC查表计算、超时恢复、多级同步验证等关键机制

weixin_35756690的博客 415

避坑指南:Dify+Docker+Ollama离线部署实战与疑难解析

本文详细解析了在国产化系统(如银河麒麟V10)内网环境中,如何从零开始离线部署Dify、Docker与Ollama的全栈AI应用开发平台。文章重点拆解了Docker安装中的“没有Release文件”和“GPG密钥错误”等典型报错解决方案,并提供了Ollama离线模型导入与Dify连接配置的完整实战指南,旨在帮助开发者高效完成本地部署,避开常见陷阱。

dd012的博客 463

初识tensorflow架构

初识tensorflow架构 tensorflow是目前非常流行的以一款大规模机器学习框架,其前身为DisBelief。今天跟大家一起学习一下tensorflow的整体架构,作为这个专栏的开端,如下图所示便是整个tensorflow的架构,整个tensorflow可以分为五层:设备管理和通信层、数据操作层、图计算层、API接口层、应用层。   设备管理和通信层   网络层:对于tas...

u011926899的专栏 1340

CMap与L1000技术解析:基因表达数据在药物发现中的应用

本文深入解析了CMap(连接图)与L1000技术在药物发现中的核心应用。CMap通过构建基因表达“关系网”,实现基于模式匹配的药物重定位;L1000技术则以低成本、高通量方式生成关键基因表达数据,支撑了LINCS超级数据库。文章以CLUE平台为例,手把手演示了如何利用疾病基因表达签名逆向筛选潜在治疗化合物,并拓展了其在解析药物机制、预测副作用等多场景下的价值。

weixin_29207533的博客 727

第一节,tensorflow基础构架

1、tensorflow结构 import tensorflow as tfimport numpy as np #create datax_data=np.random.rand(100).astype(np.float32)y_data=x_data*0.1+0.3 定义线性方程 #create tensorflow structureWeights=tf.Variabl...

weixin_30496751的博客 133

DeepSeek安装教程

两分钟讲述deepseek正确安装教程

weixin_45906703的博客 1662

c语言:读取文件中的指定内容

项目中要求从wifi的状态文件中提取出rssi字段的值,还有一个前提条件:必须与hwaddr(手机的MAC地址)一一对应。 wifi状态文件sta_info如下: # cat /proc/wlan0-vap0/sta_info -- STA info table -- (active: 1) 1: stat_info... state: 405 AuthAlgrthm: 0

u013485792的专栏 1万+

《深入了解TensorFlow》笔记——Chapter 1th TensorFlow概述

TensorFlow 概述 TensorFlow 优势 运算性能高。TensorFlow1.0加入线性代数编译器XLA,它可以帮助TensorFlow在CPU, GPU, TPU, 以及嵌入式设备等平台上更快速地运行机器学习模型。TensorFlow提供了大量针对不同软硬件环境的优化配置参数。 通用化框架。TensorFlow最初用于机器学习和深度神经网络方面的研究。但是其灵活的设计也可用于其他领域。同时TensorFlow提供high level wrapper:Slim, Keras, TF Laye

dongz 610

别再乱改基础库了!手把手教你搞定uni-app小程序上传图片报错(chooseAndUploadFile权限篇)

本文详细解析了uni-app开发微信小程序时遇到的`chooseAndUploadFile`权限报错问题,并提供了四步解决方案。从隐私协议与API权限的关联入手,指导开发者正确配置后台声明、双重提交策略和版本管理,避免降级基础库等常见误区,确保小程序合规运行。

weixin_33709364的博客 276

TensorFlow基础知识(一)

一TensorFlow系统架构 二设计理念 三TensorFlow的编程模型 TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。它灵活的架构让你可以在多种平台上展开计算,例如台式计算机中的一个或多个CPU(或GPU

不忘初心~ 559

Windows环境下Ollama的本地部署方案

本文主要介绍了Windows环境下Ollama的本地部署方案,希望对使用大语言模型的同学们有所帮助。 文章目录 1. 前言 2. Windows环境安装 3. API调用示例代码

herosunly的博客 11万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

初步认识Tensorflow

     不多说,直接上干货!     TensorFlow 是一个开源软件库,用于使用数据流图进行数值计算。换句话说,即是构建深度学习模型的最佳方式。                    Tensorflow的官网 https://www.tensorflow.org/          TensorFlow™ is an open source so...

weixin_34000916的博客 140

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

PLC编程入门:循环扫描机制与梯形图设计原理详解

可编程逻辑控制器(PLC)是工业自动化控制的核心设备,其独特的循环扫描运行机制和梯形图编程语言构成了工业控制领域最基础的技术体系。与普通计算机的事件驱动模式不同,PLC采用周期性顺序扫描方式,依次完成输入采样、程序执行和输出刷新,从而保证控制逻辑的确定性和可预测性。梯形图则以继电器电路为视觉隐喻,将复杂的逻辑运算转化为直观的触点与线圈组合,极大降低了电气工程师的编程门槛。理解扫描周期、输入输出映像区以及能流执行顺序等核心概念,是掌握PLC编程的关键基础,也是排查现场调试问题的理论依据。

weixin_34174105的博客 291

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

TensorFlow 原理与架构设计:从核心机制到分层架构

摘要: 本文深入解析TensorFlow四大核心原理:1)张量作为统一数据载体,携带形状、类型、设备等元信息,支持自动微分与跨设备计算;2)计算图通过有向无环图实现计算优化,支持全局算子融合、分布式部署与跨平台执行;3)自动微分利用GradientTape动态记录计算路径,实现高效反向传播;4)设备抽象层统一硬件接口,自动分配CPU/GPU/TPU资源。这些设计使TensorFlow兼具高效性、灵活性与扩展性,支撑从训练到部署的全流程AI开发。 关键词: TensorFlow、张量、计算图、自动微分

没事学AI的博客 1387

终极TensorFlow Models架构解析:深入理解模型设计与实现原理

TensorFlow Models是Google官方维护的深度学习模型集合,提供了从计算机视觉到自然语言处理的完整解决方案。这个开源项目汇集了最先进的模型架构和最佳实践,帮助开发者快速构建和部署AI应用。作为深度学习框架的重要组成部分,TensorFlow Models展示了如何设计高效、可扩展的神经网络架构。 ## 🔥 核心架构设计理念 TensorFlow Models的核心设计理念是*

gitblog_00301的博客 1050

SENet-Tensorflow源码架构解析:理解项目文件结构与设计模式

SENet-Tensorflow是一个基于TensorFlow实现的Squeeze and Excitation Networks(SENet)项目,支持ResNeXt、Inception-v4和Inception-resnet-v2等经典网络架构,特别针对Cifar10数据集进行了优化。本文将深入解析项目的文件结构与设计模式,帮助新手快速理解代码组织逻辑。 ## 项目核心文件结构概览 📂

gitblog_00061的博客 1078

【人工智能】TensorFlow和机器学习概述

TensorFlow是由Google Brain团队开发的开源机器学习库,用于各种复杂的数学计算,特别是在深度学习领域。以下是对TensorFlow的详细概述:

weixin_51306394的博客 1527

tensorflow底层架构

TensorFlow 的架构分为多个层次,从上层的 Python 和 C++ 客户端到底层的设备管理和分布式计算。上层提供了用户友好的 API,用于定义和执行计算图;中层处理数据流的执行和分布式计算;底层则负责与硬件设备的交互,确保计算任务能够高效地在不同设备上执行。这种分层结构使得 TensorFlow 既能方便用户使用,也能够高效处理大规模的深度学习任务。

2303_77224751的博客 2319

深入理解TensorFlow底层架构

通过深入了解TensorFlow的底层架构,我们可以更加高效地构建和运行复杂的机器学习模型。TensorFlow的灵活性和强大的分布式计算能力使其成为研究和工业应用的首选框架。随着TensorFlow不断发展,我们期待更多性能优化和高级特性的出现,这将进一步加强其在机器学习领域的地位。总之,希望这篇博客能为想要深入了解TensorFlow底层架构的你提供有价值的信息。通过掌握这些知识,你可以更有效地利用TensorFlow解决实际问题,并推动你的项目向前发展。

4.0啊的博客 2111

基于TensorFlow的棋盘FEN布局预测系统架构设计与实现

在国际象棋AI和棋局分析领域,将棋盘图像自动转换为标准FEN(Forsyth-Edwards Notation)布局格式是一个具有挑战性的计算机视觉任务。TensorFlow ChessBot项目通过深度学习方法,实现了从棋盘截图到FEN布局的端到端预测系统,准确率可达73%以上。该系统结合了计算机视觉预处理、卷积神经网络特征提取和多分类任务,为棋局分析自动化提供了创新解决方案。 ## 问题驱动

gitblog_01070的博客 968
上一篇: 目录
下一篇: 张量,边,节点,图,会话,设备,变量
linux_win
博客等级 码龄8年 4粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值