人工智能之Tensorflow技术特点及组件结构

前言

Tensorflow的前身时谷歌的神经网络算法库DistBelief,被广泛应用于各类机器学习、深度学习算法的编程实现。Tensorflow具有实现代码简洁、编程范式灵活、分布式深度学习算法执行效率高、多语言API支持、CPU/GPU部署方便、良好的可扩展性、可移植性及在学术研究和产品研发两端取得良好平衡等优秀特性。
TensorFlow由Tensor(张量)和Flow(流)两个单词组成,意味着"张量的流动",形象地描述了TensorFlow是以张量数据和流计算的方式来运行整个程序,它把任意维度的数据都统一用张量来表示

TensorFlow从本质上看就是一个基于数据流编程的符号数学系统,其设计之初就被定义为灵活且通用的端到端深度学习平台。

技术特点

TensorFlow相比其他框架具有如下优点 :

  1. 运算性能强劲。 线性代数编译器(XLA)可以帮助TensorFlow在CPU、GPU、TPU、嵌入式设备等平台上更快速地运行机器学习模型的训练与推理任务。同时提供大量针对不同软硬件环境的优化配置参数,可以根据需要进一步提升计算性能。
  2. 框架设计通用。TensorFlow不仅可以用机器学习和深度神经网络方面的研究,而且也可以广泛用于其他计算领域。同时它提供了高层封装API、底层原生API,用于帮助用户快速实现算法模型及分布式并行模式。
  3. 支持生产环境部署。它支持使用同一套API实现探索环境和生产环境的部署。
  4. 语言接口丰富。它的核心层由C++实现,应用层使用SWIG等技术封装,提供了多语言API的支持。目前支持的语言有Python、C、C++、Java、Go、NodeJs、R、Julia等。
  5. 端云协同计算。它同时支持在云侧(服务端)和端侧(移动设备等终端)运行。

组件结构

TensorFlow是一个包含数十万行代码的大型软件,其组件结构较为复杂。由于其代码组织合理、文档资料充分,通过这些信息可以将它的软件结构进行不同层次的抽象,抽象之后的组件结构示意图如下:

外围项目

Google官方团队及开源贡献者在TensorFlow社区开设了若干算法模型库及人工智能应用程序项目。这些项目可以直接复用来加快自己的项目开发进度,提升自己的模型与应用设计水平。

TensorFlow运行时核心库

构成TensorFlow的主体是其运行时(RunTime)核心库,这个核心库是指通过pip命令等方式安装TensorFlow之后,部署到Lib\site-packages或类似目录中的动态链接库文件。生成这个库的C++源代码大致分为3个层次:分布式运行时、公共运行时和算子核函数。

  • 分布式运行时:实现数据流图计算的基本逻辑
  • 公共运行时:实现数据流图的跨进程协同计算逻辑
  • 算子核函数:包含图上具体操作节点的算法实现代码
    TensorFlow运行时核心库导出的函数接口基于C和C++语言,为了方便其他语言,提供了多语言API层。以python为例,可以使用import tensorflow 导入。
通信及计算库

这库有的是外部组件(如CPU代数计算的Eigen库),也有作为TensorFlow源代码的一部分集成在核心库内部(如用户GPU并行计算的StreamExecutor库)。用户只需要按照软件文档安装好必要的外部依赖包即可。

基础设施

上述所有都是部署在基础设施上,在服务端的运行场景,最常见的宿主操作系统试试Linux,硬件一般为X86 CPU和NVIDIA GPU。在移动终端的运行场景,宿主机操作系统可以是Android、IOS等,硬件一般为ARM CPU和专用的人工智能芯片。TensorFlow支持原生物理环境、虚拟机、容器,方便构建基于云计算环境的各种应用。

相关推荐
张人玉29 分钟前
人工智能——猴子摘香蕉问题
人工智能
草莓屁屁我不吃33 分钟前
Siri因ChatGPT-4o升级:我们的个人信息还安全吗?
人工智能·安全·chatgpt·chatgpt-4o
AIAdvocate35 分钟前
Pandas_数据结构详解
数据结构·python·pandas
小言从不摸鱼37 分钟前
【AI大模型】ChatGPT模型原理介绍(下)
人工智能·python·深度学习·机器学习·自然语言处理·chatgpt
AI科研视界1 小时前
ChatGPT+2:修订初始AI安全性和超级智能假设
人工智能·chatgpt
霍格沃兹测试开发学社测试人社区1 小时前
人工智能 | 基于ChatGPT开发人工智能服务平台
软件测试·人工智能·测试开发·chatgpt
小R资源1 小时前
3款免费的GPT类工具
人工智能·gpt·chatgpt·ai作画·ai模型·国内免费
FreakStudio3 小时前
全网最适合入门的面向对象编程教程:50 Python函数方法与接口-接口和抽象基类
python·嵌入式·面向对象·电子diy
redcocal4 小时前
地平线秋招
python·嵌入式硬件·算法·fpga开发·求职招聘
artificiali4 小时前
Anaconda配置pytorch的基本操作
人工智能·pytorch·python