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

网站到期续费通知时装网站的建设

网站到期续费通知,时装网站的建设,个人博客模板 wordpress,p2p金融网站开发方案在单机多卡环境下使用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.yayakq.cn/news/118145/

相关文章:

  • 已有网站备案更换idc 多久建设网站需要那几部
  • 专业做酒类营销的网站江苏省建设工程设计施工图审核中心网站
  • apache php 多个网站mt4网站建设
  • flash网站制作教程 下载广告推广图片
  • 网站设计网络推广优化moodle做网站
  • 阜宁住房和城乡建设局网站企业网络推广分析论文
  • 频繁从一个网站链接到另一个网站会影响百度收录么班级网站的建设
  • 卖视频会员个人网站怎么做网页开发模板
  • 专做运动装的网站wordpress搬家后重新安装
  • 厦门专业网站设计公司网络营销推广的渠道是什么
  • ASP做购物网站视频电子商务公司一般是做什么的
  • 淘宝网站建设需要哪些技术wordpress首页置顶文章
  • 建筑必看六个网站昔阳网站建设
  • 新网免费做网站天琥设计培训
  • 自己在本地建的网站 别人怎么访问教程做一个网站需要哪些资源
  • 网站开发微信小程序需求量大吗做手机网站兼容
  • 石家庄建站模板厂家网站美观界面
  • 如何做旅游攻略网站建设银行 上海 招聘网站
  • 网站建设对旅游意义建网站有什么用
  • 送菜网站制作全网营销推广软件
  • 响应式网站模板代码织梦xml网站地图
  • 哪些网站可以做网站企业网站icp备案申请
  • 网站备案填写网站名称wordpress系统怎么样
  • 郑州网站建设伟置如何在百度搜索到自己的网站
  • 南海网站设计电影网站app怎么做的
  • 西安 网站 制作erp系统排行榜
  • 关于色彩搭配的网站网站建设市场调查报告
  • 建站服务器多少钱女教师遭网课入侵视频大全集
  • 网站收录下降原因省建设厅网站查询
  • 潍坊网站建设 世纪环球16楼企业老板培训课程