FlyAI小课堂:Tensorflow-分布式训练

article/2025/9/19 10:32:21

人工智能学习离不开实践的验证,推荐大家可以多在FlyAI-AI竞赛服务平台多参加训练和竞赛,以此来提升自己的能力。FlyAI是为AI开发者提供数据竞赛并支持GPU离线训练的一站式服务平台。每周免费提供项目开源算法样例,支持算法能力变现以及快速的迭代算法模型。

 

目录

  1. 简介
  2. 构建步骤
  3. 实现方式
  4. Demo演示

一、简介

1.  使用单台机器或者单个GPU/CPU来进行模型训练,训练速度会受资源的影响,因为毕竟单个的设备的计算能力和存储能力具有一定的上限的,针对这个问题,TensorFlow支持分布式模型运算,支持多机器、多GPU、多CPU各种模型的组合运行方案的设计。(默认情况下,TensorFlow程序会将程序运行在第一个GPU上<如果有GPU,并且安装的TensorFlow支持GPU运行>)

2.  TensorFlow的分布式支持单机多GPU、单机GPU+CPU、多机GPU等结构,不过所有结构的构建方式基本类似。

3.   除了TensorFlow外,Caffe、DeepLearning4j等也支持分布式训练,TensorFlow中的集群(Cluster)指的是一系列能够对TensorFlow中的图(graph)进行分布式计算的任务(task)。每个任务是同服务(server)相关联的。TensorFlow中的服务会包含一个用于创建session的主节点和至少一个用于图运算的工作节点。另外在TensorFlow中,一个集群可以被拆分为一个或者多个作业(job),每个作业可以包含至少一个任务。

4.  cluster(集群)、job(作业)、task(任务)概念:三者可以简单的看成是层次关系,task可以看成每台机器上的一个进程,多个task组成job;job又有:ps、worker两种,分别用于参数服务、计算服务,组成cluster。

二、构建步骤

TensorFlow分布式集群的构建主要通过代码实现,主要步骤如下:

①创建集群(Cluster)

  • 创建一个tf.train.ClusterSpec用于对集群中的所有任务进行描述,该描述内容对于所有内容应该是相同的。
  • 创建tf.train.Server并将tf.train.ClusterSpec中参数传入构造函数,

②使用tf.device API指定运算的设备,构建计算图,最后提交运算

备注:TensorFlow负责内部作业之间的数据传输

详细见最后的实验代码。

三、实现方式

TensorFlow中主要包含两个方面

第一:对不同数据大小进行计算的任务(work作业)

第二:用于不停更新共享参数的任务(ps作业)。这样任务都可以运行不同在机器上,在TensorFlow中,主要实现方式如下:

  • 图内的拷贝(In-Graph Replication)
  • 图间的拷贝(Between-Graph Replication)
  • 异步训练(Asynchronous Training)
  • 同步训练(Synchronous Training)

3.1  在In-Graph Replication

指定整个集群由一个客户端来构建图,并且这个客户端来提交图到集群中,worker只负责处理执行任务。In-Graph模式的好处在于解耦了TensorFlow集群和训练应用之间的关系,这样可以提前构建好参数服务器和计算服务器,而这些角色本身不需要额外的逻辑代码,只需要使用join等待即可,真正的训练逻辑全部位于客户端,具有足够高的灵活性。

备注:在小规模数据集的情况下,经常使用。在海量数据的训练过程中,不建议使用该方式,建议使用Between-Graph Replication模式。

3.2  在Between-Graph Replication

每个客户端会构建一个相似的图结构,该结构中的参数均通过ps作业进行声明并使用tf.train.replica_device_setter方法将参数映射到不同的任务作业中。

3.3  Synchronous Training

在同步训练中,每个graph的副本读取相同的parameter值,并行的计算,然后将计算完的结果放到一起处理。在TensorFlow中,如果是Betweengraph replication的情况下,可以通tf.train.SyncReplicasOptimizer来处理,如果是In-graph replication情况下,直接对结果进行处理即可(比如平均).

3.4  Asynchronous Training

在异步训练中,每个任务计算完后,就会直接使用计算出的结果更新parameter值。不同的任务之间不存在协调进度。

同步训练需要等待最慢的一个任务执行完后,才可用更新参数;异步训练中,可以每执行完一个任务,就更新一次参数。一般情况下,建议使用异步训练。

四、Demo演示

server-demo.py服务器代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

1   import tensorflow as tf

 2   # 1. 配置服务器相关信息

 3   # 因为tensorflow底层代码中,默认就是使用ps和work分别表示两类不同的工作节点

 4   # ps:变量/张量的初始化、存储相关节点

 5   # work: 变量/张量的计算/运算的相关节点

 6   ps_hosts = ['127.0.0.1:33331''127.0.0.1:33332']

 7   work_hosts = ['127.0.0.1:33333''127.0.0.1:33334''127.0.0.1:33335']

 8   cluster = tf.train.ClusterSpec({'ps': ps_hosts, 'work': work_hosts})

 9   # 2. 定义一些运行参数(在运行该python文件的时候就可以指定这些参数了)

10   tf.app.flags.DEFINE_string('job_name', default_value='work', docstring="One of 'ps' or 'work'")

11   tf.app.flags.DEFINE_integer('task_index', default_value=0, docstring="Index of task within the job")

12   FLAGS = tf.app.flags.FLAGS

13   # 2. 启动服务

14   def main(_):

15       print(FLAGS.job_name)

16       server = tf.train.Server(cluster, job_name=FLAGS.job_name, task_index=FLAGS.task_index)

17       server.join()

18   if __name__ == '__main__':

19       # 底层默认会调用main方法

20       tf.app.run()

客户端代码:client-demo01

1

2

3

4

5

6

7

8

9

10

11

12

13

1   import tensorflow as tf

 2   import numpy as np

 3   # 1. 构建图

 4   with tf.device('/job:ps/task:0'):

 5       # 2. 构造数据

 6       = tf.constant(np.random.rand(100).astype(np.float32))

 7   # 3. 使用另外一个机器

 8   with tf.device('/job:work/task:1'):

 9       = * 0.1 + 0.3

10   # 4. 运行

11   with tf.Session(target='grpc://127.0.0.1:33335',

12   config=tf.ConfigProto(log_device_placement=True, allow_soft_placement=True)) as sess:

13       print(sess.run(y))

执行:

1、通过命令行,进入对应环境:我的是activate tensorflow-gpu,再进入对应server-demo.py所在文件夹,重复打开5个,分别输入(虽然最后结果只是在最后3335中显示,但是必须要全部运行,才能运算出结果):

python server-demo.py --job_name=ps --task_index=0

python server-demo.py --job_name=ps --task_index=1

python server-demo.py --job_name=work --task_index=0

python server-demo.py --job_name=work --task_index=1

python server-demo.py --job_name=work --task_index=2

2、运行客户端,最后结果如下:

 

————————————————

更多精彩内容请访问FlyAI-AI竞赛服务平台;为AI开发者提供数据竞赛并支持GPU离线训练的一站式服务平台;每周免费提供项目开源算法样例,支持算法能力变现以及快速的迭代算法模型。

挑战者,都在FlyAI!!!


http://chatgpt.dhexx.cn/article/yhMDH87M.shtml

相关文章

FlyAI小课堂:【文本分类-中文】textRNN

摘要: 随着深度学习的快速发展&#xff0c;人们创建了一整套神经网络结构来解决各种各样的任务和问题。在英文分类基础上&#xff0c;中文文本分类的处理也同样重要... 人工智能学习离不开实践的验证&#xff0c;推荐大家可以多在FlyAI-AI竞赛服务平台多参加训练和竞赛&#x…

FlyAI小课堂:【文本分类-中文】textCNN

摘要: 随着深度学习的快速发展&#xff0c;人们创建了一整套神经网络结构来解决各种各样的任务和问题。在英文分类基础上&#xff0c;中文文本分类的处理也同样重要... 人工智能学习离不开实践的验证&#xff0c;推荐大家可以多在FlyAI-AI竞赛服务平台多参加训练和竞赛&#x…

FlyAI人工智能社区参赛指南—用户体验版

Fly-AI竞赛服务平台 flyai.com 在开始学习之前推荐大家可以多在 FlyAI竞赛服务平台多参加训练和竞赛&#xff0c;以此来提升自己的能力。FlyAI是为AI开发者提供数据竞赛并支持GPU离线训练的一站式服务平台。每周免费提供项目开源算法样例&#xff0c;支持算法能力变现以…

FlyAI资讯:GPT-3的威力,助力AI领域

摘要&#xff1a;大概一个月之前&#xff0c;史上最巨无霸NLP模型GPT-3问世。当时它向世界展示的能力是&#xff0c;“不仅会写短文&#xff0c;而且写出来的作文挺逼真的&#xff0c;几乎可以骗过人类&#xff0c;可以说几乎通过了图灵测试。”可能是因为它的前一代模型GPT-2也…

FlyAI赛题预告:时间序列初学者指南

近期&#xff0c;FlyAI服务竞赛平台将上线时间序列相关赛题&#xff0c;看到此文的童鞋们可以多多关注下&#xff1b;推荐大家可以多在FlyAI竞赛服务平台多参加训练和竞赛&#xff0c;以此来提升自己的能力。FlyAI是为AI开发者提供数据竞赛并支持GPU离线训练的一站式服务平台。…

FlyAI资讯:人工智能的前世今生

摘要: 现代电子产品和设备在诸如通信 、娱乐 、安全和医疗保健等许多方面改善了我们的生活质量 &#xff0c;这主要是因为现代微电子技术的发展极大地改变了人们的日常工作和互动方式。在过去几十年中&#xff0c;摩尔定律一直是通过不断缩小芯 … 人工智能学习离不开实践的验…

FlyAI小课堂:Tensorflow基操

人工智能学习离不开实践的验证&#xff0c;推荐大家可以多在FlyAI-AI竞赛服务平台多参加训练和竞赛&#xff0c;以此来提升自己的能力。FlyAI是为AI开发者提供数据竞赛并支持GPU离线训练的一站式服务平台。每周免费提供项目开源算法样例&#xff0c;支持算法能力变现以及快速的…

FlyAI资讯:台积电布局新存储技术

摘要&#xff1a;近年来&#xff0c;在人工智能&#xff08;AI&#xff09;、5G等推动下&#xff0c;以MRAM&#xff08;磁阻式随机存取存储器&#xff09;、铁电随机存取存储器 (FRAM)、相变随机存取存储器&#xff08;PRAM&#xff09;&#xff0c;以及可变电阻式随机存取存储…

强烈推荐!FlyAI机器学习数据竞赛启动,丰厚奖金等你来拿

FlyAI 数据竞赛平台 FlyAI 是隶属于北京智能工场科技有限公司旗下&#xff0c;为AI开发者 &#xff08;深度学习&#xff09;提供数据竞赛并支持GPU离线训练的一站式服务平台。每周免费提供项目开源算法样例&#xff0c;样例所使用开发框架涉及TensorFlow、Keras、PyTorch. 支持…

FlyAI竞赛服务平台赛题上新——手写英文字体识别(名企内推)

人工智能学习离不开实践的验证&#xff0c;推荐大家可以多在FlyAI-AI竞赛服务平台多参加训练和竞赛&#xff0c;以此来提升自己的能力。FlyAI是为AI开发者提供数据竞赛并支持GPU离线训练的一站式服务平台。每周免费提供项目开源算法样例&#xff0c;支持算法能力变现以及快速的…

万元大奖,FlyAI算法新赛事,心理卡牌目标检测

本文转自竞赛社区FlyAI最新上线算法赛。 “心理卡牌目标检测算法赛”由测测星座与趣鸭心理联合发起的线上竞赛项目。2020年新冠肺炎疫情打破了我们平静的生活&#xff0c;影响了我们的身体健康和精神健康。在国家发布的《“健康中国2030”规划纲要》中也提到&#xff0c;要加大…

百万现金奖励,FlyAI实时竞赛等你来战

点击我爱计算机视觉标星&#xff0c;更快获取CVML新技术 这是一种新的算法竞赛方式&#xff01; FlyAI是一个为算法工程师提供&#xff08;深度学习&#xff09;项目竞赛并支持GPU离线训练的网站。目前每周更新两个以上现金奖励的竞赛项目。项目涉及领域包括图像识别/分类/检测…

使用FlyAI进行科学数据竞赛

转自百度经验 https://jingyan.baidu.com/article/acf728fd9c3e6af8e510a392.html 工具/原料 python3 Windows命令行&#xff08;mac/Linux都可运行&#xff0c;此经验以Windows为例&#xff09; 百度经验:jingyan.baidu.com 注册账号 1 使用浏览器打开 www.flyai.com,并点击注…

FlyAI资讯:收藏!深度学习必读10篇经典算法论文总结!

前言 目录 前言 1998年&#xff1a;LeNet 2012年&#xff1a;AlexNet 2014年&#xff1a;VGG 2014年&#xff1a;GoogLeNet 2015年&#xff1a;Batch Normalization 2015年&#xff1a;ResNet 2016年&#xff1a;Xception 2017年&#xff1a;MobileNet 2017年&#…

FlyAi实战之MNIST手写数字识别练习赛(准确率99.55%)

欢迎关注WX公众号&#xff1a;【程序员管小亮】 文章目录 欢迎关注WX公众号&#xff1a;【程序员管小亮】一、介绍二、代码实现1_数据加载2_归一化3_定义网络结构4_设置优化器和退火函数5_数据增强6_拟合数据7_训练轮数和批大小8_准确率和损失 三、总结 一、介绍 最近发现了一…

FlyAI图像识别类竞赛:什么蘑菇?

人工智能学习离不开实践的验证&#xff0c;推荐大家可以多在FlyAI-AI竞赛服务平台多参加训练和竞赛&#xff0c;以此来提升自己的能力。FlyAI是为AI开发者提供数据竞赛并支持GPU离线训练的一站式服务平台。每周免费提供项目开源算法样例&#xff0c;支持算法能力变现以及快速的…

flyai下载预训练的keras模型

进入FlyAI预训练模型地址找到需要的keras模型&#xff0c;相应链接后确定 3.得到复制后的内容 # 必须使用该方法下载模型&#xff0c;然后加载 from flyai.utils import remote_helper path remote_helper.get_remote_date("https://www.flyai.com/m/v0.8|NASNet-mobile…

FlyAI实验室使用教程【完整版】

FlyAI使用教程 文章目录 FlyAI使用教程1、FlyAI是什么&#xff1f;2、账号注册3、文件上传4、代码提交5、怎么训练 1、FlyAI是什么&#xff1f; 想知道FlyAI如何使用&#xff0c;首先你要知道FlyAI是个什么平台&#xff0c;真的蛮良心的一个平台&#xff0c;地址是&#xff1a…

FlyAI资讯:强大如GPT-3,1750亿参数也搞不定中国话

摘要&#xff1a;2019 年&#xff0c;GPT-2 凭借将近 30 亿条参数的规模拿下来“最强 NLP 模型”的称号&#xff1b;2020 年&#xff0c;1750 亿条参数的 GPT-3 震撼发布&#xff0c;并同时在工业界与学术界掀起了各种争论。随着时间的推移&#xff0c;争论的焦点也发生了变化&…

FlyAI-遥感影像场景分类预测经验总结

文章目录 数据介绍经验1. 准确率92.55%&#xff1a;SENet、PyTorch&#xff08;1&#xff09;数据预处理&#xff1a;加权采样&#xff08;2&#xff09;数据增强&#xff1a;采用随机裁剪&#xff0c;随机旋转&#xff0c;随机翻转&#xff0c;随机擦除&#xff08;3&#xff…