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

    文章

    4231

    浏览量

    85589
  • 架构
    +关注

    关注

    1

    文章

    506

    浏览量

    25432
  • tensorflow
    +关注

    关注

    13

    文章

    328

    浏览量

    60475

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

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

收藏 人收藏

    评论

    相关推荐

    使用低成本MSPM0 MCU提高电池管理设计的灵活性

    电子发烧友网站提供《使用低成本MSPM0 MCU提高电池管理设计的灵活性.pdf》资料免费下载
    发表于 09-07 10:53 0次下载
    使用低成本MSPM0 MCU提高电池管理设计的<b class='flag-5'>灵活性</b>

    使用低成本MSPM0 MCU提高电子温度计设计的灵活性

    电子发烧友网站提供《使用低成本MSPM0 MCU提高电子温度计设计的灵活性.pdf》资料免费下载
    发表于 09-07 09:46 0次下载
    使用低成本MSPM0 MCU提高电子温度计设计的<b class='flag-5'>灵活性</b>

    纳米软件带您了解电源自动测试设备的仪器灵活接入与扩展

    在ATECLOUD智能云测试平台上开发的电源自动测试系统,对比传统自动化测试系统,其独特之处在于拥有极为灵活的系统架构。这种架构灵活性体现在自动化测试的
    的头像 发表于 09-03 16:06 201次阅读
    纳米软件带您了解电源自动测试设备的仪器<b class='flag-5'>灵活</b>接入与扩展

    使用BQ27Z746实现反向充电保护的设计灵活性

    电子发烧友网站提供《使用BQ27Z746实现反向充电保护的设计灵活性.pdf》资料免费下载
    发表于 08-30 11:45 0次下载
    使用BQ27Z746<b class='flag-5'>实现</b>反向充电保护的设计<b class='flag-5'>灵活性</b>

    探索中国星坤FPC连接器:电子设备灵活性与可靠双重保障

    了电子设备设计中的一颗璀璨明星。   FPC连接器的灵活性 FPC连接器由柔性电路板构成,它拥有极高的弯曲和可塑性。这使得FPC连接器能够适应各种需要弯曲和折叠的应用场景,无论是在复杂的曲面还是狭小的空间中,都能展现出其卓越的适应
    的头像 发表于 08-13 16:14 339次阅读
    探索中国星坤FPC连接器:电子设备<b class='flag-5'>灵活性</b>与可靠<b class='flag-5'>性</b>双重保障

    TensorFlow是什么?TensorFlow怎么用?

    TensorFlow是由Google开发的一个开源深度学习框架,它允许开发者方便地构建、训练和部署各种复杂的机器学习模型。TensorFlow凭借其高效的计算性能、灵活架构以及丰富的
    的头像 发表于 07-12 16:38 538次阅读

    OPSL 优势1:波长灵活性

    与其他类型的连续激光器相比,光泵半导体激光器 (OPSL) 技术有许多优势,包括波长的灵活性。 特别是OPSL打破了传统技术的限制,可以通过设计与应用的波长要求相匹配。 不折不扣的波长灵活性 光泵
    的头像 发表于 07-08 06:30 258次阅读
    OPSL 优势1:波长<b class='flag-5'>灵活性</b>

    如何提升NMEA插座的灵活性

    德索工程师说道通过模块化设计,将NMEA插座拆分成多个独立的模块,每个模块具有特定的功能和接口。这种设计方式可以使插座更加灵活,方便用户根据实际需求进行组合和扩展。同时,模块化设计还可以降低制造和维护成本,提高产品的市场竞争力。
    的头像 发表于 06-19 15:48 241次阅读
    如何提升NMEA插座的<b class='flag-5'>灵活性</b>

    8芯M16公头如何提升灵活性

      德索工程师说道在电子设备的连接和传输中,8芯M16公头作为一种重要的电气连接器,其灵活性对于提高连接效率、降低故障率和增强用户体验至关重要。因此,本文将详细探讨如何提升8芯M16公头的灵活性,以满足不断变化的电子系统需求。
    的头像 发表于 05-25 17:48 218次阅读
    8芯M16公头如何提升<b class='flag-5'>灵活性</b>

    英特尔锐炫A系列显卡为客户提供了强大的性能和灵活性

    在当今快速发展的边缘计算和人工智能领域,英特尔凭借其创新的软硬件解决方案,为客户提供了强大的性能和灵活性。其中,推出的英特尔锐炫 A 系列显卡备受关注。
    的头像 发表于 03-22 15:17 463次阅读
    英特尔锐炫A系列显卡为客户提供了强大的性能和<b class='flag-5'>灵活性</b>

    意法半导体推出一款兼备智能功能和设计灵活性的八路高边开关

    意法半导体新推出的八路高边开关兼备智能功能和设计灵活性,每条通道导通电阻RDS(on)(典型值)仅为110mΩ,保护系统能效,体积紧凑,节省 PCB 空间。
    的头像 发表于 03-12 11:41 515次阅读

    纳米软件电源自动测试系统的灵活性特点详解

    实现自动化测试的同时,也为客户实现经济效益最大化。该系统的灵活性体现在:仪器灵活、流程灵活、分析灵活
    的头像 发表于 01-16 16:23 361次阅读

    FPGA为嵌入式设计带来了强大的功能与灵活性

    尽管 FPGA 为嵌入式设计带来了强大的功能与灵活性,但额外的开发流程也给设计工作增加了新的复杂和限制问题。整合传统的硬件-FPGA-软件设计流程并充分利用 FPGA 的可再编程功能是我们的一个
    的头像 发表于 12-07 09:35 475次阅读

    4G插卡路由器:无线上网的便利与灵活性

    4G插卡路由器:无线上网的便利与灵活性
    的头像 发表于 11-28 17:27 893次阅读

    MAC地址注册管理最佳实践:安全、可用灵活性

    MAC地址注册管理是在网络环境中确保设备身份验证和访问控制的重要步骤。本文将介绍MAC地址注册管理的最佳实践,旨在提高安全、可用灵活性,以满足现代网络的需求。随着网络规模和复杂
    的头像 发表于 11-21 14:57 519次阅读
    MAC地址注册管理最佳实践:安全<b class='flag-5'>性</b>、可用<b class='flag-5'>性</b>和<b class='flag-5'>灵活性</b>