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

AI竞赛服务平台—— FlyAI ** AI竞赛服务平台—— FlyAI ** https://www.flyai.com/ ** 其中,与图像相关的比赛: ** 1.手部图像性别分类和生物识别 https://www.flyai.com/d/HandInfo 2.Caltech256 图像分类竞赛 (剩余奖金 ¥ 8,505) https://www.flyai.com/d/Caltech256 3.CIFAR100种图片分类练... 阅读详情

人工智能学习离不开实践的验证,推荐大家可以多在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       x = tf.constant(np.random.rand(100).astype(np.float32))

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

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

 9       y = x * 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!!!

Tensorflow分布式训练实例详解 一、Tensorflow分布式训练策略 模型并行in-graph replication:将模型部署到很多设备上运行,比如一个或多个机器的GPUs,不同 GPU 负责网络模型的不同部分。 数据并行between-graph replication:每个Worker拥有模型的完整副本但分配到不同的数据,各自单独地训练,然后将计算结果合并。这是目前主流的做法... 阅读详情

相关推荐

英飞凌 AURIX Development Studio工程移植到Hightec的方法

1. 软件简介 AURIX™ Development Studio是英飞凌针对AURIX TC2XX/TC3XX系列单片机推出了一款免费的软件,集成了iLLD库,内置Tasking compiler和Tasking Debugger,但这两个模块只能用于非商业用途,可供学习和试用。iLLD库是英飞凌为TC2XX和TC3XX Tricore系列单片机提供的底层驱动库,有完善的使用手册,和较好的移植性。 Hightec是一款可以用来开发Aurix系列单片机的编译器,有免费版,可商用,集成GCC编译器,可用UDE

weixin_42967006的博客 7137

怎样使用AI模型

3. 部署到服务器或设备:如果你想在自己的服务器或设备上部署AI模型,可以使用相应的软件开发工具和平台。1. 使用AI框架或库:AI框架(例如TensorFlow、PyTorch)和库(例如scikit-learn)提供了API和函数,用于加载和调用已经训练好的AI模型。请注意,具体的调用方法取决于你使用的AI框架、平台或工具,并且可能因具体的编程语言和环境而有所不同。4. 集成到应用程序:如果你正在开发一个应用程序,可以直接将AI模型的代码集成到应用程序的代码中。

星瀚 3544

在PyCharm中配置使用Anaconda环境

在PyCharm中配置使用Anaconda环境一、步骤1.Anaconda2.PyCharm总结 一、步骤 1.Anaconda 如未安装Anaconda可至其官网下载,学习使用个人版就可以了。 下载地址:https://www.anaconda.com/products/individual 1、打开Anaconda Navigator,点击Environments可以看到anaconda中已经有了默认的“base”环境,其中包含了大多数我们会用到的包,在PyCharm中可以直接使用该环境,而无需自行下载

TuckX的博客 19万+

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

FlyAI使用教程 文章目录FlyAI使用教程1、FlyAI是什么?2、账号注册3、文件上传3、如何插入图片4、如何插入代码5、如何构造文章目录6、如何使用富文本格式符7、如何编辑数学公式 1、FlyAI是什么? 想知道FlyAI如何使用,首先你要知道FlyAI是个什么平台,真的蛮良心的一个平台,地址是:https://www.flyai.com/ 内含很多竞赛,奖金池也很丰富,完全不虚各大公司的...

qq_33949900的博客 1565

Anaconda报错no qt platform plugin could be initialized

今天因为在anaconda中安装了一个新包,安装成功后运行python 程序报错:no qt platform plugin could be initialized。 1.安装Anaconda3-4.2.0-Windows-x86_64,对应python版本为3.5.2,scikit learn版本是0.17。因为要用Isolation Forest算法,只有0.18以上版本scikit learn才包含此算法,所以想更新scikit learn。 conda install scikit-lear

zhang1806618的博客 1万+

RandLA-Net复现SemanticKITTI和S3DIS数据集

RandLA-Net复现KITTI和室内数据集

weixin_48845174的博客 4116

如何训练 AI 模型:分步指南

当前可以微调的模型包括 gpt-3.5-turbo-0125(推荐)、gpt-3.5-turbo-1106、gpt-3.5-turbo-0613、babbage-002、davinci-002 和实验性的 gpt-4-0613。较长的示例将被截断。然后对模型进行进一步的训练,使用较小的特定数据集,使其能够将先前学到的知识应用于新任务,通常在较少的数据和计算资源下表现更好。微调是一种将训练于大型数据集(如OpenAI 的 GPT-4)上的模型,适应较小的任务特定数据集,通过继续训练过程来实现的策略。

亮数据 Bright Data 的博客 2987

YOLOv11改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 StarNet,超级精简高效的轻量化模块

本文记录的是基于StarNet的YOLOv11轻量化改进方法研究。StarNet设计简洁,没有复杂的设计和精细调整的超参数,仅是一个 4 阶段的分层架构。并且其中能够在低维空间计算的同时考虑极高维的特征这一特性,进而提高模型精度。本文在替换骨干网络中配置了原论文中的starnet_s1starnet_s2starnet_s3和starnet_s4七种模型,以满足不同的需求。

Limiiiing的博客 5987

TensorFlow入门(十二、分布式训练)

在实际训练过程中,如果遇到模型非常庞大,一张GPU不够存储的情况,可以使用模型并行的分布式训练,把模型的不同部分交给不同的GPU负责。原理:假设我们有n张GPU,GPU0将数据分成n份分到各张GPU上,每张GPU负责自己那一批次数据的训练,得到梯度后,返回给GPU0上做累计,得到更新的权重参数后,再分发给各张GPU。同步更新的好处是loss的下降比较稳定,但是这个的坏处也很明显,这种方式有等待,处理的速度取决于最慢的那个GPU计算的时间。使用这个API,可以在尽可能少改动代码的同时,分布式训练模型。

Victor_Li_的博客 1674

【100分】最长子字符串的长度

题目要求在一个环形字符串中找出字符 ‘o’ 出现了偶数次的最长子字符串长度。这里的字符串是一个环形的,即首尾相连。代码统计了字符串中字符 ‘o’ 的出现次数,并根据其奇偶性返回相应的最长子字符串长度。当 ‘o’ 的数量为偶数时,直接返回字符串长度;当 ‘o’ 的数量为奇数时,返回长度减去 1。给你一个字符串 s,字符串s首尾相连成一个环形 ,请你在环中找出 ‘o’ 字符出现了偶数次最长子字符串的长度。【最长子字符串的长度】

weixin_54707168的博客 897

【错误解决】本地计算机上的mysql服务启动停止后,某些服务在未由其他服务或程序使用时将自动停止

转载请注明出处:http://blog.youkuaiyun.com/qq_26525215 本文源自【大学之旅_谙忆的博客】 在启动mysql服务时出现该错误: 本地计算机上的mysql服务启动停止后,某些服务在未由其他服务或程序使用时将自动停止。mysql 版本 5.7.14 系统 win 7后来经过一系列的百度,谷歌,总算是解决了。首先,你需要把原来的服务删除:mysqld --remove mysq

谙忆-陈浩翔 12万+

如何使用开放平台调试人工智能模型

结尾:具体的运行结果以及调试,我就不做演示,我也是个初学者,正所谓:积跬步,至千里,积小流以成江海。

qq_36973384的博客 470

从技术债红线到系统治理:透视 SAP Clean Core 中的 Level D

SAP推出的Clean Core分级体系将扩展风险划分为A到D四个等级,其中Level D代表最高风险类别,涉及直接修改标准代码、隐式增强、使用noAPI对象等不被推荐的做法。这些做法虽然短期见效快,但会带来升级冲突、数据完整性风险等长期问题。SAP强调治理重点不是完全消除经典ABAP,而是优先清理Level D对象,逐步向稳定接口迁移。典型案例显示,依赖内部细节的扩展往往在系统升级或云迁移时集中暴露出问题。企业应通过工具链持续监控Level D占比,将其纳入技术债管理范畴。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1064

将训练好的模型保存并使用

这篇文章为说明将训练好的模型保存为ckpt后,再生成PB文件,并调用的方法。其中,生成和调用的部分代码是统一的格式,可以收藏。训练图用的是前一篇博文泰坦尼克生存率预测,可以参考:https://blog.youkuaiyun.com/aspirinLi/article/details/105350452。由于这个图的输入和输出都较为简单,测试模型部分也简化了,图像的输入还需要找机会尝试。 一、首先将训练好的...

aspirinLi的博客 5626

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

MaxBot小车学习笔记(一) 使用MaxBot小车开发简单水果分拣系统

MaxBot小车是一款低门槛,功能丰富的无人小车,容易组装,方便低年龄学生进行上手,还适合学生用其来为科技比赛进行练手。其使用Python3.8配合Mind+进行编程开发。本文主要通过少儿编程即积木块搭建的方式进行叙述。

weixin_63233438的博客 895

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Tensorflow分布式训练

Tensorflow分布式训练一、分布式训练模式1、模型并行(In-graph)2、数据并行(Between-graph)二、异步、同步训练1、异步训练2、同步训练三、同步更新和异步更新的优缺点四、分布式机器类型(TODO)1、单机单卡2、单机多卡3、多机多卡 一、分布式训练模式 1、模型并行(In-graph) 所谓模型并行指的是将模型部署到很多设备上(设备可能分布在不同机器上,下同)运行,比如多个机器的GPUs。当神经网络模型很大时,由于显存限制,它是难以完整地跑在单个GPU上,这个时候就需要把模型分割

Charlotte_DL的博客 1244

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

TensorFlow分布式训练

简介 Tensorflow API提供了Cluster、Server以及Supervisor来支持模型的分布式训练。 关于Tensorflow的分布式训练介绍可以参考Distributed Tensorflow文档。简单的概括说明如下: Tensorflow分布式Cluster由多个Task组成,每个Task对应一个tf.train.Server实例,作为Cluster的一个单独节点。 多

laolu1573的专栏 1192

【Keras】TensorFlow分布式训练

当我们拥有大量计算资源时,通过使用合适的分布式策略,我们可以充分利用这些计算资源,从而大幅压缩模型训练的时间。针对不同的使用场景,TensorFlow 在 tf.distribute.Strategy 中为我们提供了若干种分布式策略,使得我们能够更高效地训练模型。 一、单机多卡训练: MirroredStrategy tf.distribute.MirroredStrategy 是一种简单且高性能的,数据并行的同步式分布式策略,主要支持多个 GPU 在同一台主机上训练。使用这种策略时,我们只需实例化一个 M

qq_36643449的博客 1482

Tensorflow分布式训练原理

以下文章摘录自: 《机器学习观止——核心原理与实践》 京东:https://item.jd.com/13166960.html 当当:http://product.dangdang.com/29218274.html (由于博客系统问题,部分公式、图片和格式有可能存在显示问题,请参阅原书了解详情) ———————————————— 版权声明:本文为优快云博主「林学森」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.cs.

林学森的技术专栏 2361

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

文章目录一、介绍二、代码实现1_数据加载2_归一化3_定义网络结构4_设置优化器和退火函数5_数据增强6_拟合数据7_训练轮数和批大小8_准确率和损失三、总结 一、介绍 最近发现了一个比较不错的竞赛平台,很适合练手,也就是很多人熟知的 FlyAi。 为什么觉得它好呢? 直观上两点很吸引我:1. 有奖金!!!2. 难度适中0-0 话不多说,直接正题,MNIST手写数字识别练习赛。 【MNIST...

种树最好的时间是10年前,其次是现在!!! 5461

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

摘要:2019 年,GPT-2 凭借将近 30 亿条参数的规模拿下来“最强 NLP 模型”的称号;2020 年,1750 亿条参数的 GPT-3 震撼发布,并同时在工业界与学术界掀起了各种争论。随着时间的推移,争论的焦点也发生了变化,人们逐渐 … 人工智能学习离不开实践的验证,推荐大家可以多在FlyAI-AI竞赛服务平台多参加训练和竞赛,以此来提升自己的能力。FlyAI是为AI开发者提供数据竞赛并支持GPU离线训练的一站式服务平台。每周免费提供项目开源算法样例,支持算法能力变现以及快速的迭代算法模型。 2.

iFlyAI的博客 655

tensorflow的分布式训练

参考https://www.tensorflow.org/versions/master/how_tos/distributed/index.html和https://blog.youkuaiyun.com/CodeMaster_/article/details/76223835。 一、单机单卡 单机单卡是最普通的情况,当然也是最简单的,示例代码如下: #coding=utf-8 #单机单卡 #对于单...

lidichengfo0412的博客 823

训练自己的ai模型(一)学习笔记与项目实操

ai模型大火,作为普通人,我也想做个自己的ai模型。

m0_54765221的博客 2万+

TensorFlow分布式训练:TensorFlow中的分布式数据并行性

为了在TensorFlow中实现分布式数据并行,开发人员需要将模型和数据进行划分,并将它们分配给不同的设备或机器。虽然数据流系统可以提供可扩展性和容错能力,但与 TensorFlow 相比,它们需要不同的编程模型,并且可能无法为深度学习训练提供相同水平的灵活性和优化。尝试不同的技术、配置和硬件平台有助于实现更快、更高效的训练,从而能够在更大的数据集上训练更大的模型。第一步是跨多个设备或机器复制模型。TensorFlow 的分布式数据并行性遵循类似的方法,允许开发人员使用同步训练在多个设备或机器上训练模型。

新华编程特战队 1615

分布式TensorFlow训练指南:GPU/TPU加速与参数服务器架构

本文介绍了如何使用TensorFlow进行分布式深度学习训练,涵盖GPU/TPU加速和参数服务器架构。首先,文章概述了分布式训练的基础概念,包括数据并行、模型并行、同步和异步更新等策略。接着,详细讲解了单机多GPU训练的配置与优化,包括MirroredStrategy的使用、数据管道构建和训练监控。对于多机分布式训练,文章介绍了集群配置、MultiWorkerMirroredStrategy的应用以及容错处理。此外,还探讨了TPU加速训练的初始化、优化和数据读取方法。最后,文章深入解析了参数服务器架构的配置

2501_91537435的博客 920
上一篇: FlyAI小课堂:Tensorflow-模型和数据的保存和载入
下一篇: FlyAI小课堂:Tensorflow基操
iFlyAI
博客等级 码龄9年 238粉丝 134原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值