TensorFlow 技术框架解析 | 图文理解深度学习技术实现
2018-02-08 11:34
1016 查看
最近项目需要,客户想上tensorflow,想把项目做的高大上一点,向我咨询tensorflow的相关问题和部署方案,我要假装自己很懂TF,之前一直在跟进tensorflow的技术进展,最近又做了很多功课,整理出以下内容,用这个ppt给客户讲解并加上TF的demo和tensorboard的可视化演示,客户十分满意,说这就是他们想看到的。
先来认识一下TF的价值:
TensorFlow,是Google在15年年底发布的机器学习平台,发布以后由于其速度快,扩展性好,推广速度也很快。
Google的大战略:Android占领了移动端;TF占领神经网络提供AI服务。未来的趋势恰好是语音图像以及AI的时代。
TF的特点之一就是可以支持很多种设备,大到GPU、CPU,小到手机平板,五花八门的设备都可以跑起来TF。不得不说这一点很有前瞻性,可以预见的是,mobile-end的用户将会享受到越来越多的AI服务。
整个系统从底层到上层可分为七层:
最底层是硬件计算资源,支持CPU、GPU;
支持两种通信协议;
数值计算层提供最基础的计算,有线性计算、卷积计算;
数据的计算都是以数组的形式参与计算;
计算图层用来设计神经网络的结构;
工作流层提供轻量级的框架调用
最后构造的深度学习网络可以通过TensorBoard服务端可视化
整体技术栈分为两部分:
前端系统:提供编程模型,负责构造计算图;
后端系统:提供运行时环境,负责执行计算图。
组件交互
master节点给两种类型的节点分发任务:
/job:ps/task:0: 负责模型参数的存储和更新
/job:worker/task:0: 负责模型的训练或推理
会话(Session)
客户端使用会话来和TF系统交互,一般的模式是,建立会话,此时会生成一张空图;在会话中添加节点和边,形成一张图,然后执行。
实现(Implementation)
TF中最重要的Tensor被支持的非常全面,8bit到64bit, signed和unsigned,IEEE float/double,complex number等等。使用引用计数来保存tensor,当计数到0时,tensor被回收。
客户端,用户会使用;与master和一些worker process交流
master,用来与客户端交互,同时调度任务;
worker process,工作节点,每个worker process可以访问一到多个device。
device,TF的计算核心,通过将device的类型、job名称、在worker process中的索引将device命名。可以通过注册机制来添加新的device实现,每个device实现需要负责内存分配和管理调度TF系统所下达的核运算需求。
跨设备通信
当两个需要通信的op在不同的机器上时,就需要跨设备通信,当它们需要通信时,TF会在它们之间的联系中添加Send和Recv节点,通过Send和Recv之间进行通信来达到op之间通信的效果。如上所示。
梯度计算( Gradient Computation )
连接式的机器学习算法往往需要使用梯度下降法来求取参数,TF通过扩展图的方式实现了自动求导,TF做法如下:
对于每张计算图,得到从输入I到输出C的路径,并从C到I回溯,回溯过程中对于路径上的每个节点A,添加另一个节点来计算A’来计算偏导,在计算偏导的过程中,A’不仅仅将上一层传下来的反向导数作为输入,还可能将A的输入和输出也作为其输入。
数据并行计算( Data Parallel Training)
通过数据并行的方式来提升模型的效率,比如,假如每次模型的mini-batch是1000个样本,那么,切成10份,每份100个,然后将模型复制10份,每份都将梯度传到参数服务器上。
数据切分也分为同步和异步两种方式,同步的切分是等待每个独立的model传上来的梯度都到齐后再进行更新,这样和一个大的batch没有区别。异步的切分则是不用等待,每个独立的模型的参数更新直接更新。
模型并行训练( Model Parallel Training)
还可以对模型进行切分,让模型的不同部分执行在不同的设备上,这样可以一个迭代的样本可以在不同的设备上同时执行。如上图所示的LSTM模型
4000
先来认识一下TF的价值:
TensorFlow,是Google在15年年底发布的机器学习平台,发布以后由于其速度快,扩展性好,推广速度也很快。
Google的大战略:Android占领了移动端;TF占领神经网络提供AI服务。未来的趋势恰好是语音图像以及AI的时代。
TF的特点之一就是可以支持很多种设备,大到GPU、CPU,小到手机平板,五花八门的设备都可以跑起来TF。不得不说这一点很有前瞻性,可以预见的是,mobile-end的用户将会享受到越来越多的AI服务。
系统概述
整个系统从底层到上层可分为七层:
最底层是硬件计算资源,支持CPU、GPU;
支持两种通信协议;
数值计算层提供最基础的计算,有线性计算、卷积计算;
数据的计算都是以数组的形式参与计算;
计算图层用来设计神经网络的结构;
工作流层提供轻量级的框架调用
最后构造的深度学习网络可以通过TensorBoard服务端可视化
技术架构
整体技术栈分为两部分:
前端系统:提供编程模型,负责构造计算图;
后端系统:提供运行时环境,负责执行计算图。
组件交互
master节点给两种类型的节点分发任务:
/job:ps/task:0: 负责模型参数的存储和更新
/job:worker/task:0: 负责模型的训练或推理
会话(Session)
客户端使用会话来和TF系统交互,一般的模式是,建立会话,此时会生成一张空图;在会话中添加节点和边,形成一张图,然后执行。
实现(Implementation)
TF中最重要的Tensor被支持的非常全面,8bit到64bit, signed和unsigned,IEEE float/double,complex number等等。使用引用计数来保存tensor,当计数到0时,tensor被回收。
客户端,用户会使用;与master和一些worker process交流
master,用来与客户端交互,同时调度任务;
worker process,工作节点,每个worker process可以访问一到多个device。
device,TF的计算核心,通过将device的类型、job名称、在worker process中的索引将device命名。可以通过注册机制来添加新的device实现,每个device实现需要负责内存分配和管理调度TF系统所下达的核运算需求。
跨设备通信
当两个需要通信的op在不同的机器上时,就需要跨设备通信,当它们需要通信时,TF会在它们之间的联系中添加Send和Recv节点,通过Send和Recv之间进行通信来达到op之间通信的效果。如上所示。
梯度计算( Gradient Computation )
连接式的机器学习算法往往需要使用梯度下降法来求取参数,TF通过扩展图的方式实现了自动求导,TF做法如下:
对于每张计算图,得到从输入I到输出C的路径,并从C到I回溯,回溯过程中对于路径上的每个节点A,添加另一个节点来计算A’来计算偏导,在计算偏导的过程中,A’不仅仅将上一层传下来的反向导数作为输入,还可能将A的输入和输出也作为其输入。
数据并行计算( Data Parallel Training)
通过数据并行的方式来提升模型的效率,比如,假如每次模型的mini-batch是1000个样本,那么,切成10份,每份100个,然后将模型复制10份,每份都将梯度传到参数服务器上。
数据切分也分为同步和异步两种方式,同步的切分是等待每个独立的model传上来的梯度都到齐后再进行更新,这样和一个大的batch没有区别。异步的切分则是不用等待,每个独立的模型的参数更新直接更新。
模型并行训练( Model Parallel Training)
还可以对模型进行切分,让模型的不同部分执行在不同的设备上,这样可以一个迭代的样本可以在不同的设备上同时执行。如上图所示的LSTM模型
4000
相关文章推荐
- TensorFlow深度学习框架学习(三):TensorFlow实现K-Means算法
- 深度学习-传统神经网络使用TensorFlow框架实现MNIST手写数字识别
- 深度学习框架TensorFlow学习----100行代码实现AlexNet
- 深度学习框架TensorFlow学习(二)----简单实现Mnist
- 深度学习-CNN卷积神经网络使用TensorFlow框架实现MNIST手写数字识别
- Tensorflow:谷歌的一种深度学习框架/丹炉 | 炼丹术 | 干货分享 | 解读技术
- 深度学习框架技术解析及caffe实战一些总结
- TensorFlow:实战Google深度学习框架(二)实现简单神经网络
- TensorFlow深度学习框架学习(二):TensorFlow实现线性支持向量机(SVM)
- 深度学习笔记——深度学习框架TensorFlow之DNN深度神经网络的实现(十四)
- TensorFlow深度学习笔记 实现与优化深度神经网络
- 深度学习框架TensorFlow学习(一)------关于Tensorflow的简介和配置
- TensorFlow 深度学习笔记 TensorFlow实现与优化深度神经网络
- 简易的深度学习框架Keras代码解析与应用
- Tensorflow 深度学习分布式实现方式
- 设计模式学习(十四)————抽象工厂模式(使用Qt框架的反射技术——根据字符串动态创建类来实现)
- 深度学习框架Torch7解析-- Tensor篇
- 关于深度学习框架TensorFlow的调研
- 1.深度学习框架——TensorFlow的安装与入门
- TensorFlow 深度学习笔记 TensorFlow实现与优化深度神经网络