• TensorFlow白皮书


    关键元素定义

    1) Graph 定义计算流,包括操作和值的具体类型
    2) Operation 定义操作,包含一些属性,用于操作的变体。比如不同种类的数字相加
    3) Kernel 定义操作的具体实现,区分平台,不同平台的kernel不同
    4) Session 与tensorflow交互,扩展图和执行图的接口
    5) Variables 包含状态的变量,持久化可变tensor 
    

    TensorFlow实现

    TensorFlow的实现包括前端和后端
    前端主要是客户端定义图和执行图的计算,当前主要是python和C++的接口
    后端实现包括后端进程,这些进程可以访问计算设备,比如CPU和GPU。
    计算设备是TensorFlow计算的核心抽象,每个计算设备负责内存管理和组织具体内核的计算。
    Tensor的实现是带有类型的多维数组,由对应的计算设备管理它的存储,通过引用计数的方式管理释放。
    有两种模式,本地和分布式。

    本地模式 单计算设备

    最简单的场景。按照图的依赖计算各个节点,具体作法,将依赖计数为0的计算节点放进待计算的队列当中。每计算完一个节点,更新所有依赖它的节点的依赖计数。

    本地模式 多计算设备

    需要做两件事情

    1. 确定每个计算节点放到哪个设备上

    2. 设备间的通信

    3. 基于贪婪实验的方法,从源节点一直比较然后添加进device。

    4. 插入两个节点,发送和接受,完成跨设备间通信。并且,对于同一份数据会合并发送。

    分布式模式

    和多设备很相似,只是跨设备间通信采用TCP或者RDMA方式。
    通过checkpoint进行容错,当错误发生,会从头开始训练。

    扩展

    自动梯度计算
    反向传播,构造对应的图。

    优化

    1. 自己定义好放置设备,控制数据交换和内存使用
    2. 异步内核,减少线程数
    3. 内核计算优化,采用对应的库完成
    4. 图优化:相同子计算合并
    5. 精度压缩
  • 相关阅读:
    Unity --- sharedMaterial 、material
    lua --- Module
    lua --- 点号 和 冒号
    lua --- __newindex 的使用规则
    DirectX之顶点法线的计算
    DirectX学习之第一个可运行的工程
    java--select*
    java--Servlet做控制器实现代码和UI分离
    java--JSTL取代%
    java--entity层的引入
  • 原文地址:https://www.cnblogs.com/axder/p/11417800.html
Copyright © 2020-2023  润新知