信息通信
INFORMATION  & COMMUNICATIONS
2019年第8期(总第200期)
2019(Sum. No  200)
一种在Tensorflow 软件上测试RDMA 数据传输的方法和系统
符渊
(国家知识产权局专利局专利审查协作北京中心,福建福州350000)
摘要:由于能够支持大量应用程序的进程间通信,零拷贝RDMA 技术正在变得越来越流行。现代高性能网络协议如In-
finiband, RoCE,和iWARP 支持RDMA,它们为应用程序提供了高带宽低延迟的网络性能。文章评估了在Tensorflow  软件上测试RDMA 数据传输的方法和系统。我们的Tensorflow 作业调度采用平均轮替算法,运行时间t  = £;占;每个
进程运行在一台服务器上,服务器之间采用RDMA 通信,服务器带宽利用率达到100%。采用运行脚本程序使机器学习 任务能够7x24小时不间断运行,满足测试任务长时间运行的要求。
关键词:Tensorflow  ;数据传输;RDMA 技术中图分类号:TP391
文献标识码:A  文章编号:1673-1131 ( 2019 )08-0137-02
1简介
RDMA  (Remote  Direct  Memory  Access)技术全称远程直 接数据存取,就是为了解决网络传输中服务器端数据处理的
延迟而产生的。RDMA 通过网络把资料直接传入计算机的 存储区,将数据从一个系统快速移动到远程系统存储器中,而
不对操作系统造成任何影响,这样就不需要用到多少计算机
的处理功能。它消除了外部存储器复制和上下文切换的开
销,因而能解放内存带宽和CPU 周期用于改进应用系统性能。
TensorFlow 是_个釆用数据流图(data  flow  graphs),用于 数值计算的开源软件库。节点(Nodes)在图中表示数学操作,
图中的线(edges)则表示在节点间相互联系的多维数据数组, 即张量(tensor)。它灵活的架构让你可以在多种平台上展开计
算,例如台式计算机中的一个或多个CPU (或GPU),服务器, 移动设备等等。TensorFlow 可以用于机器学习和深度神经网 络方面的研究,也可广泛用于其他计算领域。
Tensorflow 的旧版本釆用了传统的gRPC"技术来进行节
点之间数据传输。gRPC 是由Google 主导开发的RPC 框架,
使用HTTP/2协议并用ProtoBuf 作为序列化工具。其客户端
提供 Objective-C 、Java  接口,服务器侧则有 Java 、Golang 、C++
等接口,从而为移动端(iOS/Androi)到服务器端通讯提供了一
种解决方案。Google  gRPC 定义一个服务,指定其能够被远程 调用的方法(包含参数和返回类型)。客户端应用可以像调用
本地对象一样直接调用另一台不同的机器上服务端应用的方
法。在gRPC 里客户端应用可以像调用本地对象一样直接调 用另一台不同的机器上服务端应用的方法,使得您能够更容
易地创建分布式应用和服务。釆用gRPC 进行数据传输、带宽 利用率比较低,网络的延迟会比较大。
这篇论文釆用了 RDMA 来进行Tensorflow 的数据传输
工作。本论文主要包括以下的发明点:提出釆用RMDA 传输 Tensorflow 数据,并提出在Tensorflow 机器学习软件上测试 RDMA 数据传输。多Tensorflow 进程通过调度算法调度运 行,作业调度釆用平均轮替算法,;每个进程运行在一台服务
器上,服务器之间釆用RDMA 通信,服务器带宽利用率达到 100%。釆用运行脚本程序使机器学习任务能够7x24小时不
间断运行,满足测试任务长时间运行的要求。
这篇论文的组织架构如下:在第二章,我们提供一个相关 工作的概述。在第三章,我们说明了 Tensorflow  MNIST 程序 及Tensorflow 数据传输方式。在第四章,我们介绍了 Tensorflow
RDMA 数据传输测试方案的整体方法流程。最后,在第五章, 我们对全文进行总结。
2相关工作
论文回提供一种基于TensorFlow 的深度学习图像分类与
应用部署方法,包括以下步骤:①搭建Tensorflow 机器学习开 发环境;②数据采集与转换,通过分布式爬虫系统从互联网中
获取大量有标签或者无标签的图像数据,并对图像数据进行 预处理;③模型建立与训练,建立分类模型,根据获取的图像
数据对分类模型进行训练、测试与验证,并将训练好的分类模
型保存;④将训练好的分类模型导出;⑤定义服务器接口,为
导出的分类模型创建分类服务器;⑥创建请求服务,为移动端
与分类服务器建立连接,创建Web  APP,移动端通过Web  APP  上传图像数据,并调用分类模型实现图像的自动分类;⑦产品
部署,将分类服务器应用于产品。该论文提供一种基于Tens-
orflow 的深度学习图像分类与应用部署方法,该论文未涉及
RDMA 数据传输测试领域与相关的方法和系统。
论文°」公开了一种基于TensorFlow 图像识别诊断硬盘故 障的方法,包括以下步骤:终端对服务器硬盘获取现场状态的
多角度图像;传输至服务器端进行相对角度归一化处理,再利
用几何校正方法对多角度图像进行配准,得到修正后的硬盘
图像;通过TensorFlow 处理修正后的硬盘图像信息;服务器存 储有硬盘初始化正常状态图像数据;将硬盘现场状态图像数
据与初始化正常状态图像数据进行比对判断;将硬盘的现场 状态信息反馈给终端。本发明利用多角度硬盘现场状态图像,
结合几何校正处理进行配准,融合为较准确的硬盘图像,结合
TensorFlow 智能处理使硬盘故障诊断过程快速、准确,实现全
自动化操作。该论文公开了一种基于TensorFlow 图像识别诊
断硬盘故障的方法,该论文未涉及RDMA 数据传输测试领域
及其相关的方法和系统。
论文e 涉及一种基于TensorFlow 的工业机器人动力学控
制系统及方法,系统包括:数据釆集模块、控制器、PC 服务器、
显示器、电机驱动模块和伺服电机;控制器将数据釆集模块釆
集到的工业机器人的关节位置、关节速度和关节力矩发送给
PC 服务器,由PC 服务器进行数据处理并利用tensorflow 构建
卷积神经网络进行训练优化,根据实时的关节位置和关节速
度输出工业机器人的关节力矩控制指令,控制器将关节力矩
控制指令通过GPIO 接口发送至电机驱动模块,控制伺服电机 实现工业机器人的关节控制。本发明不需要额外去辨识惯性
力、离心力、哥氏力、粘摩擦、静摩力等参数,就可以实现机器
人的稳定的运动。该论文涉及一种基于TensorFlow 的工业机
137
信息通信符渊:一种在Tensorflow软件上测试RDMA数据传输的方法和系统
器人动力学控制系统及方法,涉及tensorflow构建卷积神经网络进行训练优化。该论文未涉及RDMA数据传输测试领域及其相关的方法和系统。
3Tensorflow MNIST程序及Tensorflow数据传输方式MNIST手写识别库是世界上最权威的,由美国邮政系统开发的,手写内容是0—9的内容,手写内容釆集于美国人口调查局的员工和高中生。MNIST是深度学习的经典入门demo,它是由6万张训练图片和1万张测试图片构成的,每张图片都是28*28大小(如下图),而且都是黑白构成,这些图片是釆集的不同的人手写从0到9的数字。这些手写图片经过Tensorflow MNIST手写识别程序的识别就成为计算机可识别的0到9的数字。
一个Tensorflow程序由一个Tensorflow PS和多个Tens­orflow Worker组成。在Tensorflow程序计算神经网络参数的时候,更新的神经网络参数值通过Tensorflow PS和Tensorflow Worker之间的RDMA数据连接进行数据传输”采用RDMA 进行数据传输比传统的釆用gRPC方式的传输具有带宽大,时延低等优势。
4Tensorflow RDMA数据传输测试方案的整体方法流程
Tensorflow RDMA数据传输测试方案的整体的方法流程一共包含四个步骤:①RDMA程序安装部署;②Tensorflow软件部署;③修改Tensorflow Distribute_MNIST程序并部署;④7x24小时长时间运行机器学习脚本程序。
其中步骤①RDMA程序安装部署,包括网卡驱动的安装, OFED驱动的安装。其中步骤②Tensorflow软件部署,包括Tensorflow软件的安装。其中步骤③修改Tensorflow Distrib-ute_MNIST程序并部署,包括修改Tensorflow数据传输方式,修改Tensorflow Distribute_MNIST算法程序并在服务器部署。其中步骤④7x24小时长亦间运行机器学习脚本程序,包括循
环清理tensorflow python进程,并调用runtensorflow.sh脚本程序启动Distribute_MNIST程序。
4.1RDMA程序和Tensorflow软件安装部署
RDMA程序和Tensorflow软件安装部署的具体实施方案如下:
⑴安装RDMA Mellanox HCA网卡驱动
./Network_Firmware_WY9X0_LN_14.20.18.22.BIN
(2)从安装RDMA OFED驱动程序
cd MLNX_OFED_LINUX-4.2-1,2.0.0-rhel7.3-x86_64
./mlnxofedinstall
(3)安装Tensorflow软件
pip install tensorflow-1.10.1-q)27-cp27mu-linux_x86_64.whl 4.2修改Tensorflow MNIST程序并部署
(1)修改在多台服务器上运行的分布式Distribute_MNIST 算法程序代码,将其底层数据传输协议修改为“grpc+verbs”,使其能够运行在RDMA±:
am.Server(clusterj o b_name=FLAGS.j o bname, task_index=FL A GS.task_index,protocol=M grpc+verbs")
(2)修改Tensorflow Distribute MNIST算法程序,将其部署在多台服务器节点上。Tensorflow Distribute M
NIST程序包含Tensorflow PS程序和Tensorflow worker程序两部分。Tensorflow PS程序部署在头节点上,Tensorflow worker程序部署在工作节点上。具体修改部署过程如下:
在头节点上修改如下代码用以部署Tensorflow PS程序,其中distributed.py为Distribute_MNIST python代码程序,job_ name为作业名称,task_index为作业标号:python distrib­uted.py-^jobjiame=ps—task_index=O
在第一个工作节点上修改如下代码用以部署Tensorflow worker0程序,其中distributed.py为Distribute MNIST python 代码程序,job name为作业名称,task index为作业标号:py・thon distributed.py-^j o b_name=worker~task^index=O 在第二个工作节点上修改如下代码用以部署Tensorflow worker1程序:python distributed.py--job_name=worker~task_ index=ltensorflow版本选择
在第三个工作节点上修改如下代码用以部署Tensorflow worker2程序:python distributed.py--job_name=worker~task_ index=2
4.3脚本程序用于7x24小时长时间运行机器学习任务
程序部署后,就可以运行run7x24hours.sh脚本程序调用Tensorflow Distribute MNIST程序。该脚本程序run7x24ho-urs.sh包含两个子任务:①清理Tensorflow Distribute MNIST 程序,准备好程序运行上下文环境;②循环调用runtensor­flow.sh脚本程序,使Tensorflow Distribute MNIST达到7x24
小时不间断运行的效果。具体步骤如下:_
4.3.1清理Tensorflow Distribute_MNIST程序
⑴对头节点上的Tensorflow PS程序进行清理。
(2)对工作节点上的Tensorflow worker程序进行清理。432循环调用runtensorflow.sh脚本程序
⑴外层循环判断程序执行时间是否达到7x24小时,若达到则调用"清理Tensorflow DistributeMNIST程序”;若未达到则调用^runtensorflow.sh脚本程序”。
(2)调用runtensorflow.sh脚本程序
①登陆头节点,启动TensorflowPS程序。该程序汇总工作节点发送的中间计算结果,并将汇总后的结果发送给工作节点o
②登陆工作节点,启动Tensorflow worker程序。该程序开始深度学习计算,并将中间计算结果发送到头节点汇总。
多Tensorflow Distribute MNIST进程(Tensorflow PS进程+Tensorflow workei■进程)通过调度算法调度运
行,作业调度算法釆用平均轮替算法,;表示第i个进程的调度时间,每个进程运行在一台服务器上。服务器之间釆用RDMA通信,服务器带宽利用率达到100%。
5结语
本论文提出采用RMDA传输Tensorflow数据,并提出在Tensorflow机器学习软件上测试RDMA数据传输。多Tens-orflow进程通过调度算法调度运行,作业调度算法采用平均轮替算法,运行时间t=£二1百;每个进程运行在一台服务器上,服务器之间釆用RDMA通信,服务器利用的最大带宽达到100%=脚本程序使机器学习任务能够7x24小时不间断运行,满足测试任务长时间运行的要求。
参考文献:
[1]grpc.io/.
[2]基于TensorFlow的深度学习图像分类与应用部署方法.
[3]一种基于TensorFlow图像识别诊断硬盘故障的方法.
[4]基于TensorFlow的工业机器人动力学控制系统及方法.
138

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。