当前位置: 首页 > news >正文

建设部网站防排烟规范百度河南代理商

建设部网站防排烟规范,百度河南代理商,厦门做网站维护的公司,厦门市建设安全管理协会网站在单机多卡环境下使用PyTorch训练MNIST数据集时,可以通过DataParallel (DP) 和 DistributedDataParallel (DDP) 两种方式实现多卡并行。以下是具体实现示例和对比: 1. DataParallel (DP) 方式 DP是单进程多线程的简单并行方式,将模型复制到多…

在单机多卡环境下使用PyTorch训练MNIST数据集时,可以通过DataParallel (DP)DistributedDataParallel (DDP) 两种方式实现多卡并行。以下是具体实现示例和对比:


1. DataParallel (DP) 方式

DP是单进程多线程的简单并行方式,将模型复制到多个GPU,数据切分后分发到不同GPU计算,最后在主GPU聚合梯度。

import torch
import torch.nn as nn
import torch.optim as optim
from torchvision import datasets, transforms
from torch.utils.data import DataLoader# 定义模型
class Net(nn.Module):def __init__(self):super(Net, self).__init__()self.fc = nn.Linear(784, 10)def forward(self, x):return self.fc(x.view(x.size(0), -1))# 数据加载
transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))])
train_dataset = datasets.MNIST('./data', train=True, download=True, transform=transform)
train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True)# 初始化模型和优化器
model = Net()
model = nn.DataParallel(model)  # 包装为DP模式
model = model.cuda()
optimizer = optim.SGD(model.parameters(), lr=0.01)# 训练循环
for epoch in range(5):for data, target in train_loader:data, target = data.cuda(), target.cuda()optimizer.zero_grad()output = model(data)loss = nn.CrossEntropyLoss()(output, target)loss.backward()optimizer.step()print(f'Epoch {epoch}, Loss: {loss.item()}')

DP的缺点

  • 单进程控制多卡,存在GIL锁限制。
  • 主GPU显存瓶颈(需聚合梯度)。
  • 效率低于DDP。

2. DistributedDataParallel (DDP) 方式

DDP是多进程并行,每个GPU独立运行一个进程,通过NCCL通信同步梯度,效率更高且无主GPU瓶颈。

import torch
import torch.distributed as dist
import torch.multiprocessing as mp
import torch.nn as nn
import torch.optim as optim
from torchvision import datasets, transforms
from torch.utils.data import DataLoader, DistributedSamplerdef setup(rank, world_size):dist.init_process_group("nccl", rank=rank, world_size=world_size)def cleanup():dist.destroy_process_group()class Net(nn.Module):def __init__(self):super(Net, self).__init__()self.fc = nn.Linear(784, 10)def forward(self, x):return self.fc(x.view(x.size(0), -1))def train(rank, world_size):setup(rank, world_size)# 每个进程独立加载数据(使用DistributedSampler)transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))])train_dataset = datasets.MNIST('./data', train=True, download=True, transform=transform)sampler = DistributedSampler(train_dataset, num_replicas=world_size, rank=rank)train_loader = DataLoader(train_dataset, batch_size=64, sampler=sampler)# 初始化模型和优化器model = Net().to(rank)model = nn.parallel.DistributedDataParallel(model, device_ids=[rank])optimizer = optim.SGD(model.parameters(), lr=0.01)# 训练循环for epoch in range(5):sampler.set_epoch(epoch)  # 确保每个epoch的shuffle不同for data, target in train_loader:data, target = data.to(rank), target.to(rank)optimizer.zero_grad()output = model(data)loss = nn.CrossEntropyLoss()(output, target)loss.backward()optimizer.step()if rank == 0:  # 仅主进程打印print(f'Epoch {epoch}, Loss: {loss.item()}')cleanup()if __name__ == '__main__':world_size = torch.cuda.device_count()mp.spawn(train, args=(world_size,), nprocs=world_size, join=True)

DDP的关键点

  1. 多进程启动mp.spawn 启动多个进程,每个进程绑定一个GPU。
  2. 进程组初始化init_process_group 设置NCCL后端。
  3. 数据分片DistributedSampler 确保每个进程读取不同数据。
  4. 模型包装DistributedDataParallel 自动同步梯度。

DP vs DDP 对比

特性DataParallel (DP)DistributedDataParallel (DDP)
并行模式单进程多线程多进程
通信效率低(主GPU聚合瓶颈)高(NCCL直接通信)
显存占用主GPU显存压力大各GPU显存均衡
代码复杂度简单(无需修改数据加载)较复杂(需配置进程组和Sampler)
适用场景快速原型开发生产环境大规模训练

总结

  • DP适合快速验证多卡可行性,但效率低。
  • DDP是PyTorch官方推荐的多卡训练方式,适合实际生产环境。
http://www.hkea.cn/news/110908/

相关文章:

  • 阿里云控制台登录入口seo矩阵培训
  • wordpress苗木模板网站搜索排优化怎么做
  • 网站图片引导页怎么做重庆seo招聘
  • 如何做属于自己的领券网站郑州百度网站优化排名
  • 建设银行益阳市分行桃江支行网站公司页面设计
  • vps 网站上传网站seo优化是什么意思
  • wordpress cos腾讯云seo网站优化收藏
  • 鹤岗商城网站建设免费域名申请
  • 江苏三个地方疫情严重抖音视频排名优化
  • 竞价排名广告东莞关键词排名快速优化
  • 做视频网站要什么格式好网络营销公司怎么注册
  • 企业专业网站建设快速网站搭建
  • 武威建设网站的网站google谷歌搜索
  • 长沙公司做网站多少钱推广平台怎么做
  • 现在大家做电商网站用什么源码营销策略都有哪些
  • 可以做试卷的网站英语怎么说seo关键词排名优化系统源码
  • 网站怎么设置支付功能企业网站的主要类型有
  • 成都圣都装饰装修公司北京搜索优化排名公司
  • 境外建设网站贴吧互联网域名注册查询
  • 广州建站工作室淘客推广怎么做
  • 中国最大的网站建设公司百度广告联盟点击一次多少钱
  • wordpress单页主题营销seo手机关键词网址
  • dedecms做电影网站韩国最新新闻
  • 哪个网站做废旧好如何在百度上发布自己的广告
  • 网站表单及商品列表详情模板如何搭建自己的网站
  • 网站域名登记证明百度高级搜索怎么用
  • 国外网站在国内做镜像站点网站搭建费用
  • 网站后台如何添加关键词软件开发公司
  • 手机做网站的网站windows优化大师卸载不了
  • 万网速成网站有哪些 功能自己的网站怎么推广