9月7日-8日,相约 2023 腾讯全球数字生态大会!聚焦产业未来发展新趋势! 了解详情
写点什么

对开源框架 Tensorflow 的优化总结

  • 2019-11-29
  • 本文字数:2264 字

    阅读完需:约 7 分钟

对开源框架Tensorflow的优化总结

一. 阿里云 TensorFlow On PAI

简单介绍:Tensorflow on PAI 是阿里巴巴机器学习产品团队结合阿里自身大数据业务,以及大规模分布式计算的优势,对开源的 TensorFlow 进行优化,并经过产品化封装后为互联网用户提供服务。


优化点:


  • 异构计算资源全局调度

  • 安全的分布式 TensorFlow:借助于虚拟化技术 ,重构了 TensorFlow 的底层网络拓扑。在用户分布多作业启动前,首先建立安全的虚拟网络通道,保证在多租户场景中,每位用户的作业都在独立的网络内读取自己的数据进行数据交换。

  • 增加了高性能的稀疏数据解析 OP,可以直接用来解析稀疏数据,并返回相应的 SparseTensor。

  • grpc 多 worker 下的网络通信优化。原生 TensorFlow 中 grpc 底层接收和发送的 handler 都是单线程,在并发请求多的时候需要排队处理,性能会很差。在分布式训练场景中,作业规模越大,对 grpc 性能依赖越高。我们对 grpc 处理线程进行了优化,采用多线程并发处理,并对 rendezvous 锁进行优化,将读写锁换为互斥锁。

二. 阿里妈妈 TensorFlowRS

原生 TF 的缺点:


  • 水平扩展能力差:在大部分模型的性能测试中,随着数据并行度的增加,单个 worker 的样本处理 QPS 急剧下降。当 worker 数量增大到一定规模的时候,系统整体 QPS 不再有增长甚至有所下降。

  • 缺乏完备的分布式 Failover 机制:TF 基于静态拓扑配置来构建 cluster,不支持动态组网,这就意味着当某个 ps 或者 worker 挂掉重启之后,如果 ip 或者端口发生变化(例如机器 crash),训练将无法继续。另外 TF 的 checkpoint 只包含 server 存储的参数信息,不包含 worker 端的状态,不是全局一致性的 checkpoint,无法实现 Exactly-Once 等基本的 Failover 语义。

  • TensorFlowRS 优化点:

  • 解决了原生 TF 水平扩展能力不足的问题。在我们的测试中,绝大多数搜索广告模型的训练性能提升在十倍以上,某些模型的极限性能最高可提升百倍。

  • 支持完备的在线学习语义,模型变更实时写出;稀疏特征无需做连续 ID 化,可以直接使用原始特征表征进行训练,大幅简化了特征工程的复杂度。

  • 异步训练的梯度修正优化器(grad-compensation optimizer),有效减少了异步大规模并发引起的训练效果损失。

  • 集成了高效的 Graph Embedding、Memory Network、Cross Media 等多种高级训练模式。

  • 模型可视化系统 DeepInSight 提供深度模型训练的多维度可视化分析。

  • TensorFlowRS 架构:


TensorflowRS 重新设计了一个高性能的参数服务器:PS-Plus。用户可以在原生-PS 和 PS-Plus 之间自由切换,并且完全兼容 TensorFlow 的 Graph 语义和所有 API。用户可以在深度网络代码一行不改的情况下,将参数分布和运行在 PS-Plus 上,享受高性能的参数交换和良好的水平扩展能力。另外,TensorFlowRS 引入了 worker state,在 checkpoint 中存储了 worker 的状态信息,worker 重启后,会从接着上次的进度继续训练。此外 TensorFlowRS 通过 zk 生成 cluster 配置,支持了动态组网的 Failover。新的 Failover 机制可以保证任意角色挂掉的情况下,系统都能在分钟级完成 Failover,并且不多算和漏算数据。


PS-Plus 优势:


  • 高性能:PS-Plus 通过智能参数分配,零拷贝,seastar 等多项技术,进一步提升了单台 server 的服务能力和系统整体的水平扩展能力。在实测中,在 64core 的机器上单个 server 能轻松用满 55+的核心,在 dense 场景下 io 能打满双 25G 网卡,系统整体在 1~4000 worker 的范围内都具有近似线性的水平扩展能力。

  • 高度灵活:PS-Plus 拥有完善的 UDF 接口,用户可使用 SDK 开发定制化的 UDF 插件,并且可以通过简单的 C++以及 Python 接口进行调用。

  • 完备的在线学习支持:PS-Plus 支持非 ID 化特征训练,特征动态增删,以及模型增量实时导出等支撑在线学习的重要特性。

  • 与原生 Tensorflow 性能对比:



参考文献:https://zhuanlan.zhihu.com/p/36139277

三. 阿里大规模分布式训练框架 PAISoar

传统的 TF 的 parameter-server 架构缺陷:


  • Variable placement 策略,常用的 replica_device_setter 的参数分配策略是 round-robin ,这种策略并没有考虑 Variable 大小,会导致参数分配不均衡,某些 ps 上分配的 Variable size 大就会成为通信瓶颈;

  • 多个 Worker 访问同一个 PS 节点时,受 PS 节点带宽限制和 TCP 的拥塞窗口控制,会导致通信效率大幅降低,并且规模越大,效率越差;

  • 分布式扩展后,模型需要精细调参才能收敛,需要用户有丰富的调参经验。

  • PAISoar 是基于 PAI Tensorflow 实现的分布式训练框架。通过 PAISoar,我们提供了一个从硬件到软件、易用的分布式训练的性能优异框架。


优化点:


  • 网络层:搭建了集团内部第一套基于 RoCE 的大规模 RDMA 集群。

  • 软件层:接入 RDMA 驱动,使用 verbs 库进行 RDMA 通信,并和思科交换机进行适配调参;对 RDMA 通信的关键路径进行梳理,加速内存拷贝,异步化数据发送,优化通信状态机,提高 RDMA 通信的效率和稳定性;自研了深度优化的 Ring AllReduce 同步算法,通过针对 RDMA 网络的深度适配、多路通信融合等关键点优化。

  • API 层:提供了简化用户构建分布式 TF 模型训练的 ReplicatedVarsOptimizer,极大的方便了将单机模型扩展成分布式模型,降低了用户构建分布式 TF 训练代码的难度和学习成本;提供 lr(learning rate) 的动态调节算法 smooth_exponential_decay,算法中,lr 经过一定轮数的 warm up,从一个较小的 lr 平滑增加到目标 lr,再采用指数衰退,每隔固定 epoch 衰退一次,动态调节的 lr 可以加速用户调参过程。

  • 性能对比:




参考文献:https://yq.aliyun.com/articles/


本文转载自 Alex-zhai 知乎账号。


原文链接:


https://zhuanlan.zhihu.com/p/75989435


活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2019-11-29 13:461017

评论

发布
暂无评论
发现更多内容

aspnetcore 原生 DI 实现基于 key 的服务获取

newbe36524

C# Docker Kubernetes

MySql基础-笔记4 -数据表创建、删除和数据插入、查询等操作

MySQL 数据库 删除 创建

长安链入选“2022科创中国”开源创新榜

科技热闻

MySql基础-笔记10-索引

MySQL 数据库

2023-02-21:请用go语言调用ffmpeg,解码mp4文件,输出视频信息和总帧数。

福大大架构师每日一题

golang ffmpeg 福大大

日日顺于贞超:供应链数字化要做到有数、有路、有人

联营汇聚

【kafka专栏】kafka专栏目录整理(建议收藏不迷路)

石臻臻的杂货铺

kafka

OKR之剑·总结篇01:如何开好一场OKR复盘会

vivo互联网技术

团队管理 OKR

MySql基础-笔记5 -WHERE 、UPDATE、DELETE、LIKE、UNION使用

MySQL 数据库

MySql基础-笔记6 -排序、分组、连接的使用、NULL值处理

MySQL 数据库

MySql基础-笔记9 -ALTER命令

MySQL 数据库

SaaS+、SaaS的机遇都存在,但不要试图找最短成功路径,该犯的错都得走一遍

B Impact

浅谈新媒体运营岗位的发展前景

石头IT视角

自研的内存分析利器开源了!Android Bitmap Monitor 助你定位不合理的图片使用

拭心

android 性能优化 BitMap 内存优化

CorelDRAW2023软件新功能抢先看

茶色酒

CorelDraw2023

OSS Compass开源指南针发布,我国首个开源生态健康评估平台正式诞生

Geek_2d6073

架构训练营一作业

null

Unittest接口和UI自动化测试框架中的发送邮件服务如何使用?

Python 自动化测试 unittest 邮件服务

「 Java基础-Lambda 」试试Lambda表达式?通俗易懂得嘞!

小刘学编程

Lambda 代码优化 java 高级编程

架构实战营模块6 拆分电商系统为微服务

西山薄凉

「架构实战营」

MathType7.0简体中文汉化版下载

茶色酒

MathType2023

【深度挖掘 RocketMQ底层源码】「底层源码挖掘系列」透彻剖析贯穿RocketMQ的消费者端的运行核心的流程(Pull模式-上)

洛神灬殇

Apache RocketMQ 2月日更 运行原理 拉取模式

定了!Python3.7,今年停止更新!

程序员晚枫

Python 软件 下载 版本

得物热点探测技术架构设计与实践

得物技术

热点

流处理计算平台 StreamPark 2.0.0 重磅发布,首个 Apache 版本终于来了

ApacheStreamPark

flink spark 流处理 StreamPark

【立哥】【每日一个小知识】你所知道的牛郎织女故事是真的吗?

Lee Chen

业务架构那点事(1)业务架构师就是在“盖房子”

涛哥 数字产品和业务架构

企业架构 业务架构

LeetCode题解:938. 二叉搜索树的范围和,BFS,JavaScript,详细注释

Lee Chen

JavaScript 算法 LeetCode

易观千帆 | 2023年1月银行APP月活跃用户规模盘点

易观分析

金融 银行 手机银行

秒懂算法 | 莫队算法

TiAmo

算法 暴力猜解

MySql基础-笔记11-临时表、复制表、元数据、序列使用

MySQL 数据库

  • 扫码添加小助手
    领取最新资料包
对开源框架Tensorflow的优化总结_语言 & 开发_Alex-zhai_InfoQ精选文章