人工智能之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支持原生物理环境、虚拟机、容器,方便构建基于云计算环境的各种应用。

相关推荐
小蜗子4 分钟前
Multi‐modal knowledge graph inference via media convergenceand logic rule
人工智能·知识图谱
SpikeKing16 分钟前
LLM - 使用 LLaMA-Factory 微调大模型 环境配置与训练推理 教程 (1)
人工智能·llm·大语言模型·llama·环境配置·llamafactory·训练框架
小码的头发丝、23 分钟前
Django中ListView 和 DetailView类的区别
数据库·python·django
黄焖鸡能干四碗1 小时前
信息化运维方案,实施方案,开发方案,信息中心安全运维资料(软件资料word)
大数据·人工智能·软件需求·设计规范·规格说明书
1 小时前
开源竞争-数据驱动成长-11/05-大专生的思考
人工智能·笔记·学习·算法·机器学习
ctrey_1 小时前
2024-11-4 学习人工智能的Day21 openCV(3)
人工智能·opencv·学习
攻城狮_Dream1 小时前
“探索未来医疗:生成式人工智能在医疗领域的革命性应用“
人工智能·设计·医疗·毕业
Chef_Chen1 小时前
从0开始机器学习--Day17--神经网络反向传播作业
python·神经网络·机器学习
千澜空1 小时前
celery在django项目中实现并发任务和定时任务
python·django·celery·定时任务·异步任务
学习前端的小z2 小时前
【AIGC】如何通过ChatGPT轻松制作个性化GPTs应用
人工智能·chatgpt·aigc