搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
凡人多烦事01
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
ContentProvider原理分析_content provider原理
2
java中int转string,string转int效率对比_java string转int效率
3
kotlin 面试二十题_kotlin面试题
4
Linux系统常用命令,指令详解及案例_命令行查找文件命令
5
ZCU104监控温度_in_temp0_ps_temp_raw
6
C++操作Windows WIFI
7
Android—内容提供者_android什么是内容提供者
8
2.特定领域知识图谱(Domain-specific KnowledgeGraph:DKG)融合方案:技术知识前置【一】文本匹配算法、知识融合学术界方案、知识融合业界落地方案、算法测评KG生产质量保障_知识图谱重塑开发方案
9
PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中……)_pintia,l1_036
10
深度学习模型加速_TensorRT部署深度学习模型
当前位置:
article
> 正文
李沐动手学深度学习V2-多GPU数据并行内容和手动实现代码_当模型大小超过gpu显存,gpu之间如何进行数据并行的切分
作者:凡人多烦事01 | 2024-03-18 08:06:48
赞
踩
当模型大小超过gpu显存,gpu之间如何进行数据并行的切分
1.多GPU并行
1.1 多GPU并行方式
模型并行:在多个GPU之间拆分网络
。 也就是说,每个GPU将流入特定层的数据作为输入,跨多个后续层对数据进行处理,然后将数据发送到下一个GPU。 与单个GPU所能处理的数据相比,我们可以用更大的网络处理数据。 此外,每个GPU占用的显存(memory footprint)可以得到很好的控制,虽然它只是整个网络显存的一小部分。比如前五个层用第一个GPU计算,后面五个层用第二个GPU计算
缺点:GPU的接口之间需要的密集同步可能是很难办的,特别是层之间计算的工作负载不能正确匹配的时候, 还有层之间的接口需要大量的数据传输的时候(例如:激活值和梯度,数据量可能会超出GPU总线的带宽)。 此外,计算密集型操作的顺序对于拆分来说也是非常重要的,这仍然是一个困难的问题,目前还不清楚研究是否能在特定问题上实现良好的线性缩放。 综上所述,除非存框架或操作系统本身支持将多个GPU连接在一起,
否则不建议这种方法。
通道并行:拆分层内的工作。 例如,
将问题分散到 4 个GPU,每个GPU生成 16 个通道的数据,而不是在单个GPU上计算 64 个通道,
对于全连接的层,同样可以拆分输出单元的数量。以前通常用于处理显存非常小(当时为2GB)的GPU,当通道或单元的数量不太小时,使计算性能有良好的提升。 此外,由于可用的显存呈线性扩展,多个GPU能够处理不断变大的网络。
缺点:同样需要大量的同步或屏障操作(barrier operation),因为每一层都依赖于所有其他层的结果。 此外,需要传输的数据量也可能比跨GPU拆分层时还要大。 因此,基于带宽的成本和复杂性,我们
同样不推荐这种方法。
数据并行:跨多个GPU对数据进行拆分。 这种方式下,所有GPU尽管有不同的观测结果,但是执行着相同类型的工作。
在完成每个小批量数据的训练之后,梯度在GPU上聚合。
这种方法最简单,并可以应用于任何情况,同步只需要在每个小批量数据处理之后进行。 也就是说,
当其他梯度参数仍在计算时,完成计算的梯度参数就可以开始交换。而且,GPU的数量越多,小批量包含的数据量就越大,从而就能提高训练效率。 但是,添加更多的GPU并不能让我们训练更大的模型,因为每个GPU仍然包含模型的全部权重参数和梯度等。 总体而言,只要GPU的显存足够大,数据并行是最方便的
,三种方式如下图所示。
1.2 详细介绍多GPU的数据并行
假设一台机器有
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/凡人多烦事01/article/detail/261567
推荐阅读
article
Android
Studio
报错(Installed Build Tools revision 3...
网上很多人的解决办法是把对应的安卓
sdk
版本卸载了再重装一遍,但这貌似是安卓studio的bug,记录如下_
please
...
赞
踩
article
ubuntu
g
cc
g
++
版本降级(转载)_
ubuntu
22.04
降低
g
cc
g
++
-
4.4
...
系版本高,在配置环境的时候,
g
cc
安装了高版本,
g
cc
版本太高导致一些编译问题(编译android源码),需要降低
g
cc
...
赞
踩
article
通俗易懂
地解释
OpenAI
Sora
视频
生成
的
特点有哪些?与
Runway
Gen2
、
Pika
有什么区...
生成长达一分钟
的
视频
,更加自由尺寸
的
视频
,支持向前以及向后扩展
视频
,多个
视频
的
连接,涌现出真实物理世界模拟
的
能力_sor...
赞
踩
article
机器学习
模型
——
lightGBM
_
lightgbm
官方文档...
lightGBM
一、
lightGBM
的前世今生1.GBDT(Gradient Boosting Decision Tre...
赞
踩
article
Git
和
Tortoise
Git
的
下载
、
安装
和使用,以及
git
本地
操作案例_
git
小乌龟
下载
...
Git
和
Tortoise
Git
的
下载
、
安装
和使用,以及
git
本地
操作案例_
git
小乌龟
下载
git
小乌龟
下载
...
赞
踩
article
pytorch
训练
自己
的
数据
集...
使用
pytorch
自带的模型,并修改全连接层为
自己
数据
集的类别数。model = models.resnet50(pre...
赞
踩
article
HTML
语法
基础...
html与网站开发
HTML
语法
基础 1.
HTML
是什么
HTML
是超文本标记语言,标准通用标记语...
赞
踩
article
Keras
库搭建
神经网络
...
上述代码构建了一个具有两个隐藏层的
神经网络
模型,使用tanh和sigmoid作为激活函数,采用随机梯度下降优化器进行训练...
赞
踩
article
Logstash
详细介绍
、
安装
与
使用
...
Logstash
是一个具有实时管道功能的开源数据收集引擎。
Logstash
可以动态统一来自不同来源的数据,并将数据规范...
赞
踩
article
java
判断
当天_
java
判断
一个
时间
是否是
今天
的方法...
java
判断
时间
是否是
今天
:public class Test {/***
java
判断
一个
时间
是不是
今天
的
时间
范围内...
赞
踩
article
协程
(
22
) |
Channel
原理解析
_
xvpp002
...
在前面文章我们介绍过 `
Channel
`的使用,`
Channel
`主要用于
协程
间的通信,相比于`Flow`,它还是热的,...
赞
踩
article
ubuntu
下
gcc
版本
切换方法_
ubuntu
gcc
update
-
alternative
...
1.升级
gcc
版本
,4.8升级到5.4
版本
,升级方法如下sudo
update
-
alternative
s--install...
赞
踩
article
linux
gcc
环境
变量_3.搭建
Linux
开发
环境
...
目录1、软件包安装2、编译arm-himix200交叉编译器3、编译uboot和Kernel前言:此篇搭建
环境
的Linu...
赞
踩
article
ssh
命令——安全
远程
连接
Linux
服务器
...
ssh
命令是Secure Shell的简写,其功能是安全地
远程
连接
服务器
,
ssh
是OpenSSH套件中的客户端连接工具,...
赞
踩
article
python
-
参数
的类型_可变
参数
_
强制
命名
参数
_
python
强制
命名
参数
...
可变
参数
指的是‘可变数量的
参数
’。分两种情况:1.*param(一个星号),将多个
参数
收集到一个‘元组’对象中。2.**...
赞
踩
article
JavaSE
基础:
Properties
属性
类...
Properties
在Java中
属性
操作类是一个很重要的类,而要想明白
属性
操作类的作用,就必须先要清楚什么是
属性
文件,在...
赞
踩
article
并行
计算
(一):
GPU
与
CPU
比较以及
并行
计算
初步学习_cpu 与
gpu
计算
...
一、
GPU
与
CPU
结构上的对比Multicore machines and hyper-threading techno...
赞
踩
article
g
++
版本控制,apt安装
g
++
11
_
g
++
-
11
...
g
++
_
g
++
-
11
g
++
-
11
安装
g
++
11
sudo ad...
赞
踩
article
Jenkins
自动化
打包
_
jenkins
build
steps
打包
...
Jenkins
自动化
打包
_
jenkins
build
steps
打包
jenkins
build
steps
打包
...
赞
踩
article
LeetCode
J
a
v
a
刷题笔记—
2
1.
合并
两个
有序
链
表
_(
2
)创建
两个
单
链
表
p
a
和p
b
,再编写...
LeetCode
J
a
v
a
刷题笔记—
2
1.
合并
两个
有序
链
表
_(
2
)创建
两个
单
链
表
p
a
和p
b
,再编写一个函数将
两个
非空单...
赞
踩
相关标签
android-studio
gradle
ubuntu
linux
音视频
人工智能
大数据
科技
机器学习
决策树
算法
git
python
深度学习
html
前端
css
css3
node.js
vue.js
keras
神经网络
运维
centos
elk