0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

实现 TensorFlow 架构的规模性和灵活性

Tensorflowers 来源:工程师李察 2019-01-26 14:48 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

TensorFlow 是为了大规模分布式训练和推理而设计的,不过它在支持新机器学习模型和系统级优化的实验中的表现也足够灵活。

本文对能够同时兼具规模性和灵活性的系统架构进行了阐述。设定的人群是已基本熟悉 TensorFlow 编程概念,例如 computation graph, operations, and sessions。有关这些主题的介绍,请参阅

https://tensorflow.google.cn/guide/low_level_intro?hl=zh-CN。如已熟悉Distributed TensorFlow,本文对您也很有帮助。行至文尾,您应该能了解 TensorFlow 架构,足以阅读和修改核心 TensorFlow 代码了。

概览

TensorFlow runtime 是一个跨平台库。图 1 说明了它的一般架构。 C API layer 将不同语言的用户级代码与核心运行时分开。

实现 TensorFlow 架构的规模性和灵活性

图 1

本文重点介绍以下几个方面:

客户端:

将整个计算过程转义成一个数据流图

通过 session,启动图形执行

分布式主节点

基于用户传递给 Session.run() 中的参数对整个完整的图形进行修剪,提取其中特定子图

将上述子图划分成不同片段,并将其对应不同的进程和设备当中

将上述划分的片段分布到 worker services 工作节点服务上

每个 worker services 工作节点服务上执行其收到的图形片段

工作节点服务 Worker Services(每一任务一个)

使用内核实现来计划图形表示的计算部分分配给正确的可用硬件(如 cpugpu 等)

与其他工作节点服务 work services 相互发送和接收计算结果

内核实现

执行单个图形操作的计算部分

图2 说明了这些组件的相互作用。“/ job:worker / task:0” 和 “/ job:ps / task:0” 都是工作节点服务 worker services 上执行的任务。“PS” 表示“参数服务器”:负责存储和更新模型参数。其他任务在迭代优化参数时会对这些参数发送更新。如果在单机环境下,上述 PS 和 worker 不是必须的,不需要在任务之间进行这种特定的分工,但是对于分布式训练,这种模式就是很常见的。

实现 TensorFlow 架构的规模性和灵活性

图 2

请注意,分布式主节点 Distributed Master 和工作节点服务 Worker Service 仅存在于分布式 TensorFlow 中。TensorFlow 的单进程版本包含一个特殊的 Session 实现,它可以执行分布式主服务器执行的所有操作,但只与本地进程中的设备进行通信

下面,通过逐步处理示例图来详细介绍一下 TensorFlow 核心模块。

客户端

用户在客户端编写 TensorFlow 程序来构建计算图。该程序可以直接组成单独的操作,也可以使用 Estimators API 之类的便利库来组合神经网络层和其他更高级别的抽象概念。TensorFlow 支持多种客户端语言,我们优先考虑 Python 和 C ++,因为我们的内部用户最熟悉这些语言。随着功能的日趋完善,我们一般会将它们移植到 C ++,以便用户可以从所有客户端语言优化访问。尽管大多数训练库仍然只支持 Python,但 C ++ 确实能够支持有效的推理。

客户端创建会话,该会话将图形定义作为tf.GraphDef 协议缓冲区发送到分布式主节点。当客户端评估图中的一个或多个节点时,评估会触发对分布式主节点的调用以启动计算。

在图 3 中,客户端构建了一个图表,将权重(w)应用于特征向量(x),添加偏差项(b)并将结果保存在变量中。

实现 TensorFlow 架构的规模性和灵活性

图 3

代码:

tf.Session

分布式主节点 Distributed master

分布式主节点:

基于客户端指定的节点,从完整的图形中截取所需的子图

对图表进一步进行划分,使其可以将每个图形片段映射到不同的执行设备上

以及缓存这些划分好的片段,以便在后续步骤中再次使用

由于主节点可以总揽步骤计算,因此它可以使用标准的优化方法去做优化,例如公共子表达式消除和常量的绑定。然后,对一组任务中优化后的子图或者片段执行协调。

实现 TensorFlow 架构的规模性和灵活性

图4

图 5 显示了示例图的可能分区。分布式主节点已对模型参数进行分组,以便将它们放在参数服务器上。

实现 TensorFlow 架构的规模性和灵活性

图5

在分区切割图形边缘的情况下,分布式主节点插入发送和接收节点以在分布式任务之间传递信息(图 6)。

实现 TensorFlow 架构的规模性和灵活性

图 6

然后,分布式主节点将图形片段传送到分布式任务。

实现 TensorFlow 架构的规模性和灵活性

图 7

代码:

MasterService API definition

Master interface

工作节点服务 Worker Service

在每个任务中,该部分负责:

处理来自 master 发来的请求

为包含本地子图规划所需要的内核执行

协调与其他任务之间的直接信息交换

我们优化了 Worker Service,以便其以较低的负载便能够运行大型图形。当前的版本可以执行每秒上万个子图,这使得大量副本可以进行快速的,细粒度的训练步骤。Worker service 将内核分派给本地设备并在可能的情况下并行执行内核,例如通过使用多个 CPU 内核或者 GPU 流。

我们还特别针对每对源设备和目标设备类型的 Send 和 Recv 操作进行了专攻:

使用 cudaMemcpyAsync() 来进行本地 CPU 和 GPU 设备之间的重叠计算和数据传输

两个本地 GPU 之间的传输使用对等 DMA,以避免通过主机 CPU 主内存进行高负载的复制

对于任务之间的传输,TensorFlow 使用多种协议,包括:

gRPC over TCP

融合以太网上的 RDMA

另外,我们还初步支持 NVIDIA 用于多 GPU 通信的 NCCL 库

实现 TensorFlow 架构的规模性和灵活性

图8

代码:

WorkerService API definition

Worker interface

Remote rendezvous (for Send and Recv implementations)

内核运行

该运行时包含了 200 多个标准操作,其中涉及了数学,数组,控制流和状态管理等操作。每个操作都有对应各种设备优化后的内核运行。其中许多操作内核都是通过使用 Eigen::Tensor 实现的,它使用 C ++ 模板为多核 CPU 和 GPU 生成高效的并行代码;但是,我们可以自由地使用像 cuDNN 这样的库,就可以实现更高效的内核运行。我们还实现了 quantization 量化,可以在移动设备和高吞吐量数据中心应用等环境中实现更快的推理,并使用 gemmlowp 低精度矩阵库来加速量化计算。

如果用户发现很难去将子计算组合,或者说组合后发现效率很低,则用户可以通过注册额外的 C++ 编写的内核来提供有效的运行。例如,我们建议为一些性能的关键操作注册自己的融合内核,例如 ReLU 和 Sigmoid 激活函数及其对应的梯度等。XLA Compiler提供了一个实验性质的自动内核融合实现。

代码:

OpKernel interface

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 存储
    +关注

    关注

    13

    文章

    4713

    浏览量

    89662
  • 架构
    +关注

    关注

    1

    文章

    532

    浏览量

    26517
  • tensorflow
    +关注

    关注

    13

    文章

    332

    浏览量

    61872

原文标题:实现 TensorFlow 架构的规模性和灵活性

文章出处:【微信号:tensorflowers,微信公众号:Tensorflowers】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    沁恒网络芯片,自研技术解锁集成度与灵活性

    无线连接灵活、有线连接稳定,伴随物联网的快速发展,市场对蓝牙和以太网芯片集成度、灵活性的要求正逐步提高。 添加NFC和高速USB,蓝牙SoC高集成度 常规蓝牙芯片资源紧凑、外设简单,在智能门锁
    的头像 发表于 12-17 09:10 262次阅读
    沁恒网络芯片,自研技术解锁集成度与<b class='flag-5'>灵活性</b>

    德州仪器ADS644X系列ADC:高性能与灵活性的完美结合

      在当今的电子设计领域,模数转换器(ADC)的性能和灵活性对于系统的整体表现起着至关重要的作用。德州仪器(TI)的ADS6445、ADS6444、ADS6443和ADS6442(统称ADS644X
    的头像 发表于 11-27 18:07 1169次阅读
    德州仪器ADS644X系列ADC:高性能与<b class='flag-5'>灵活性</b>的完美结合

    RISC-V架构已成主流,这一环节价值凸显

    作为一种开放的指令集架构(ISA),RISC-V 凭借其开放和模块化设计,为开发者提供了前所未有的自由度和灵活性,正从早期采用者阶段跨越到主流市场。
    的头像 发表于 11-03 15:53 6296次阅读
    RISC-V<b class='flag-5'>架构</b>已成主流,这一环节价值凸显

    启动电压 2.5V升压恒流芯片H6912 12V-24V升压36V无频闪调光ic灵活性

    稳定驱动 LED 负载。 输入电压范围覆盖 2.6-40V,能直接适配锂电池及各类中低压供电场景。 输出耐压无固定限制,仅由外接 MOS 管的耐压规格决定,灵活性强。 调光与功能设计 支持模拟
    发表于 10-18 10:00

    EtherCAT热插拔技术:提升工业自动化系统灵活性的关键

    在工业自动化领域,系统灵活性和维护至关重要。本文将探讨EtherCAT从站热插拔技术,介绍其如何通过动态管理从站设备,提高系统的灵活性和维护。EtherCAT热插拔技术EtherC
    的头像 发表于 10-16 11:36 372次阅读
    EtherCAT热插拔技术:提升工业自动化系统<b class='flag-5'>灵活性</b>的关键

    AVR64EA微控制器:高性能与灵活性的完美结合

    Microchip Technology AVR64EA28/32/48 AVR® EA微控制器为AVR CPU配备了以高达20MHz的时钟速度运行的硬件乘法器。AVR EA系列具有灵活且低功耗
    的头像 发表于 10-10 11:32 448次阅读
    AVR64EA微控制器:高性能与<b class='flag-5'>灵活性</b>的完美结合

    TensorRT-LLM的大规模专家并行架构设计

    之前文章已介绍引入大规模 EP 的初衷,本篇将继续深入介绍 TensorRT-LLM 的大规模专家并行架构设计与创新实现
    的头像 发表于 09-23 14:42 768次阅读
    TensorRT-LLM的大<b class='flag-5'>规模</b>专家并行<b class='flag-5'>架构</b>设计

    利用事务级加速实现高速、高质量的RISC-V验证

    引言RISC-V架构以其开放和高度可定制的特性,正在重塑处理器设计格局。然而,这种灵活性也带来了显著的验证挑战,使其验证复杂度远超传统固定架构处理器。RISC-V的验证难点主要体现在
    的头像 发表于 09-18 10:08 1836次阅读
    利用事务级加速<b class='flag-5'>实现</b>高速、高质量的RISC-V验证

    动力电池组半自动生产线:效率与灵活性的平衡之道

    、一致差,而全自动化生产线虽能提升产能,却面临设备成本高、柔性不足的难题。在此背景下,半自动生产线凭借其“人机协同”的独特优势,成为行业兼顾效率与灵活性的重要选择。 半自动生产线的核心逻辑:以人补机,以机
    的头像 发表于 09-16 10:05 402次阅读

    恩智浦区域控制开发验证平台的功能

    随着整车电子电气架构的升级,Zonal区域控制架构已经成为新的“风口”。区域控制架构采用集中控制和计算的方式,按照边缘功能节点在车辆中的区域位置进行分区管理,能够大大简化车辆内部布线的复杂
    的头像 发表于 08-26 16:39 1221次阅读

    将M.2 SSD转为可插拔设计:提升工作站灵活性与维护效率的解决方案

    在日常工作站PC电脑使用中,内置的M.2SSD虽然具备高速传输和节省空间的优势,但在频繁维护、更换或数据交换时,拆装过程较为繁琐。将M.2SSD转换为外置可插拔的形式,不仅大幅提升了操作灵活性,也有
    的头像 发表于 05-09 17:10 1169次阅读
    将M.2 SSD转为可插拔设计:提升工作站<b class='flag-5'>灵活性</b>与维护效率的解决方案

    磁性近程传感器保证非接触式定位和近程检测的灵活性和可靠

    保证非接触式定位  和近程检测的 灵活性和可靠   磁性近程传感器为多种应用中的非接触式定位和近程检测提供了可靠而灵活的可选方案。这类传感器能够通过多种非磁性表面可靠地检测磁场。磁性近程传感器
    的头像 发表于 03-17 11:53 1070次阅读
    磁性近程传感器保证非接触式定位和近程检测的<b class='flag-5'>灵活性</b>和可靠<b class='flag-5'>性</b>

    FPGA+AI王炸组合如何重塑未来世界:看看DeepSeek东方神秘力量如何预测......

    功能模块,如AI引擎、可变精度DSP。 • 灵活性:FPGA可以在系统运行中重新编程,实现功能的动态重构。 • 低功耗:与ASIC相比,FPGA在功耗方面具有优势,尤其是在处理低延迟任务时。 二
    发表于 03-03 11:21

    Arm发布基于Armv9架构的Cortex-A320处理器

    边缘 AI 需要更卓越的计算性能、更强大的安全,以及更出色的软件灵活性。随着软件愈发复杂化,Armv9 架构应运而生,以提供先进的机器学习 (ML) 和 AI 功能,并具备增强的安全特性。该
    的头像 发表于 02-27 17:10 1195次阅读

    使用额定电流为 75 A 的 D-sub 连接器可保持电源的完整灵活性

    方面尤其如此。设计人员需要的大功率连接器不仅能保持大功率完整,还能在位置数量、触点配置和端接方面具有灵活性。 D-sub 连接器可能是电子产品中最常用的多针连接器,可满足电源系统的许多要求。这种连接器具有各种配置,可适合数以千计的应用。随着功率
    的头像 发表于 01-25 15:41 975次阅读
    使用额定电流为 75 A 的 D-sub 连接器可保持电源的完整<b class='flag-5'>性</b>和<b class='flag-5'>灵活性</b>