深度学习入门(三十九)计算性能——分布式训练、参数服务器(TBC)

前言

核心内容来自博客链接1博客连接2希望大家多多支持作者
本文记录用,防止遗忘
参数服务器未完成,感觉暂时用不到

计算性能——分布式训练、参数服务器

课件(分布式训练)

分布式计算

在这里插入图片描述

GPU机器架构

在这里插入图片描述

计算一个小批量

每个计算服务器读取小批量中的一块
在这里插入图片描述
进—步将数据切分到每个GPU上
在这里插入图片描述
每个worker从参数服务器那里获取模型参数
在这里插入图片描述
复制参数到每个GPU上
在这里插入图片描述
每个GPU计算梯度
在这里插入图片描述
将所有GPU上的梯度求和
在这里插入图片描述
梯度传回服务器
样本
每个服务器对梯度求和,并更新参数
在这里插入图片描述

同步SGD

  • 这里每个worker都是同步计算一个批量,称为同步SGD
  • 假设有n个GPU,每个GPU每次处理b个样本,那么同步SGD等价于在单GPU运行批量大小为nb的SGD
  • 在理想情况下,n 个GPU可以得到相对个单GPU的n倍加速
  • 性能

    t 1 = t_1= t1=在单GPU上计算 b b b个样本梯度时间
    假设有 m m m个参数,一个worker每次发送和接收 m m m个参数、梯度
    t 2 = t_2= t2=发送和接收所用时间
    每个批量的计算时间为 m a x ( t 1 , t 2 ) max(t_1,t_2) max(t1,t2)
    ·选取足够大的 b b b使得 t 1 > t 2 t_1>t_2 t1>t2
    ·增加 b b b n n n导致更大的批量大小,导致需要更多计算来得到给定的模型精度

    性能的权衡

    在这里插入图片描述

    实践的建议

    1、使用一个大数据集
    2、需要好的GPU-GPU和机器-机器
    3、带宽高效的数据读取和预处理
    4、模型需要有好的计算(FLOP)通讯(model size)比
    lnception > ResNet > AlexNet
    5、使用足够大的批量大小来得到好的系统性能
    6、使用高效的优化算法对对应大批量大小

    总结

    1、分布式同步数据并行是多GPU数据并行在多机器上的拓展
    2、网络通讯通常是瓶颈
    3、需要注意使用特别大的批量大小时收敛效率
    4、更复杂的分布式有异步、模型并行

    教材(参数服务器)

    当我们从一个GPU迁移到多个GPU时,以及再迁移到包含多个GPU的多个服务器时(可能所有服务器的分布跨越了多个机架和多个网络交换机),分布式并行训练算法也需要变得更加复杂。通过细节可以知道,一方面是不同的互连方式的带宽存在极大的区别(例如,NVLink可以通过设置实现跨6条链路的高达100GB/s的带宽,16通道的PCIe4.0提供32GB/s的带宽,而即使是高速100GbE以太网也只能提供大约10GB/s的带宽);另一方面是期望开发者既能完成统计学习建模还精通系统和网络也是不切实际的。

    1 数据并行训练

    让我们回顾一下在分布式架构中数据并行的训练方法,因为在实践中它的实现相对简单,因此本节将排除其他内容只对其进行介绍。由于当今的GPU拥有大量的显存,因此在实际场景中(不包括图深度学习)只有数据并行这种并行训练策略值得推荐。下图描述了在多GPU训练节中实现的数据并行的变体。其中的关键是梯度的聚合需要在GPU 0上完成,然后再将更新后的参数广播给所有GPU。
    在这里插入图片描述
    回顾来看,选择GPU 0进行聚合似乎是个很随便的决定,当然也可以选择CPU上聚合,事实上只要优化算法支持,在实际操作中甚至可以在某个GPU上聚合其中一些参数,而在另一个GPU上聚合另一些参数。例如,如果有四个与参数向量相关的梯度 g 1 , … , g 4 \mathbf{g}_1, \ldots, \mathbf{g}_4 g1,,g4,还可以一个GPU对一个 g i ( i = 1 , … , 4 \mathbf{g}_i (i = 1, \ldots, 4 gi(i=1,,4)地进行梯度聚合。

    2 环同步(Ring Synchronization)

    3 多机训练

    4 键值存储

    5 小结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在LAMMPS中,进行TBC(Thermal Boundary Conductance)计算时,需要进行以下方面的计算: 1. 温度场计算:首先,需要计算模拟系统中的温度场分布。这可以通过在模拟中引入热源、热槽或其他热边界条件来实现。常见的方法包括在模拟盒子中添加热源或通过NVT或NPT等算法来控制温度。 2. 势能计算:接下来,需要计算模拟系统中的势能分布。这可以通过分子动力学模拟等方法来获得。通过定义适当的势能函数和原子间相互作用模型,可以计算出原子之间的相互作用势能。 3. 热流计算:使用计算得到的温度场和势能分布,可以使用LAMMPS提供的相应命令和工具来计算热流。常见的方法包括使用自带的fix heat/flux命令或自定义编写计算热流的脚本。 4. 界面热阻计算:最后,利用计算得到的热流和温度差,可以通过计算界面处的温度跳跃来计算界面的热阻。这可以通过比较两侧温度梯度的大小或使用其他方法来实现。 在TBC研究中,主要研究对象可以包括以下几种: 1. 固体-固体界面:研究不同固体材料之间的热阻,特别是在纳米尺度下界面的热传导行为。这可以包括不同晶格结构的材料或异质界面。 2. 固体-液体界面:研究固体与液体之间的界面热阻,特别是在液体中加入纳米颗粒或纳米表面的情况下的热传导行为。 3. 固体-气体界面:研究固体与气体之间的界面热阻,特别是在气体中存在纳米颗粒或气体分子在固体表面吸附的情况下的热传导行为。 4. 纳米结构:研究纳米尺度下的热传导行为,包括纳米线、纳米薄膜、纳米颗粒等。这可以涉及到探索不同几何形状和尺寸对热阻的影响。 需要注意的是,TBC计算是一项复杂的任务,需要结合适当的模型和算法来计算热传导行为。具体的计算方法和模型选择应根据研究对象和目标而定,并且需要根据具体情况进行适当的调整和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值