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

南宁网站建设网站网络推广专员所需知识

南宁网站建设网站,网络推广专员所需知识,常宁网站建设,博客源码PyTorch中提供了单卡训练、DataParallel(DP)和DistributedDataParallel(DDP),下面是相关原理与实现代码。 代码下载链接:git代码链接 一、单卡训练 原理 单卡训练是最基础的模型训练方式,使用…

PyTorch中提供了单卡训练、DataParallel(DP)和DistributedDataParallel(DDP),下面是相关原理与实现代码。

  • 代码下载链接:git代码链接

一、单卡训练

原理
单卡训练是最基础的模型训练方式,使用单个GPU(或CPU)完成所有计算任务:

  1. 模型与数据移动:将模型和数据加载到指定设备(如cuda:0),通过model.to(device)data.to(device)实现。
  2. 前向与反向传播:在单一设备上完成前向计算、损失计算和梯度反向传播。
  3. 参数更新:优化器根据梯度更新模型参数。

优点
• 简单易用:无需处理并行逻辑,适合快速验证和小规模模型。

• 调试方便:无多设备同步问题,错误排查直观。

缺点
• 资源受限:显存和计算能力受单卡限制,无法处理大模型或大数据集。

• 效率瓶颈:无法利用多卡加速训练。

实现方式

import torch# 设置设备
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")# 加载模型和数据
model = MyModel().to(device)
data = data.to(device)# 训练循环
optimizer = torch.optim.Adam(model.parameters())
for inputs, labels in dataloader:inputs, labels = inputs.to(device), labels.to(device)outputs = model(inputs)loss = loss_fn(outputs, labels)optimizer.zero_grad()loss.backward()optimizer.step()

二、DataParallel(DP)

原理
DP通过单进程多线程实现数据并行:

  1. 模型复制:主GPU(默认cuda:0)复制模型到其他GPU。
  2. 数据分片:将输入数据均分到各GPU,并行计算前向传播。
  3. 梯度汇总:各GPU的梯度回传至主GPU,求平均后更新模型参数,再同步到其他GPU。

优点
• 代码简单:仅需一行model = nn.DataParallel(model)即可启用多卡。

• 快速实验:适合小规模多卡训练场景。

缺点
• 显存不均衡:主GPU需存储完整模型和汇总梯度,显存占用高,易成瓶颈。

• 效率低下:线程间通信依赖GIL锁,并行加速比低。

• 不支持多机:仅限单机多卡,无法扩展至多机。

实现方式

import torch.nn as nn# 检查多卡并包装模型
if torch.cuda.device_count() > 1:model = nn.DataParallel(model, device_ids=[0, 1, 2])
model.to(device)# 注意:保存时需提取主模型
torch.save(model.module.state_dict(), "model.pth")

三、DistributedDataParallel(DDP)

原理
DDP基于多进程实现分布式数据并行:

  1. 进程初始化:每个GPU对应独立进程,通过init_process_group初始化通信后端(如NCCL)。
  2. 模型复制:各进程加载相同模型,DDP自动同步初始参数。
  3. 数据分片:使用DistributedSampler确保各进程读取不重叠的数据。
  4. 梯度同步:反向传播时,梯度通过All-Reduce操作在各进程间同步,无需主GPU汇总。

优点
• 显存均衡:各GPU独立计算梯度,显存占用均匀。

• 高效并行:多进程无GIL限制,通信开销低,加速比接近线性。

• 扩展性强:支持多机多卡,适用于超大规模训练。

缺点
• 配置复杂:需手动设置进程组、数据采样器和启动脚本。

• 调试困难:多进程环境下错误日志分散,排查难度高。

实现方式

import torch.distributed as dist
from torch.nn.parallel import DistributedDataParallel as DDPtorch.distributed.init_process_group(backend="nccl")torch.cuda.set_device(local_rank) # 绑定当前进程到指定GPU#加载数据集train_loader, test_loader, train_sampler, test_sampler = load_data(world_size, local_rank)#模型载入args.local_rank# 创建模型实例device = torch.device(f"cuda:{local_rank}")model = CustomModel().to(device)#原始模型 包装 为 DDPDDP_model = DDP(model, device_ids=[local_rank], output_device=local_rank)#定义 损失函数,优化器,训练次数loss_fn = nn.CrossEntropyLoss()          # 损失函数(分类任务常用)optimize = optim.Adam(model.parameters(), lr=0.001)  # 优化器(自动调节学习率)train_step=0test_step=0epoch=10#开始训练#开始训练时间start = time.perf_counter()for i in range(epoch):print("------第 {} 轮训练开始------".format(i+1))train_sampler.set_epoch(epoch) #每张卡在每个周期上的值是随机的,设置epoch保证shuffle有效性DDP_model.train()for batch in train_loader:inputs,labels = batch#将数据赋值到args.local_rankinputs = inputs.cuda(local_rank, non_blocking=True)labels = labels.cuda(local_rank, non_blocking=True)#记录 单批数据 训练时间starttime = time.time()outputs = DDP_model(inputs)loss = loss_fn(outputs, labels)optimize.zero_grad()loss.backward()optimize.step()endtime = time.time()train_step=train_step+1if train_step%100==0:print("训练次数:{},Loss:{},time:{}".format(train_step,loss.item(),endtime-starttime))#仅在alocal_rank == 0时保存if local_rank ==0:torch.save(DDP_model,"./DDPtrain/DDP_model_{}.pth".format(i))print("模型已保存")end = time.perf_counter()#训练时间print(f"DDP训练使用时间: {end - start} 秒")# 清理分布式环境torch.distributed.destroy_process_group()

四、对比与选择建议

特性单卡训练DataParallel(DP)DDP
适用场景小模型/调试快速实验/单机多卡大规模训练/多机多卡
显存占用单卡满载主卡显存瓶颈各卡均衡
并行效率无加速低(线程通信开销)高(进程级并行)
实现复杂度简单中等(代码简单)复杂(需配置进程组)
扩展性仅限单机支持多机

选择建议
• 单卡训练:适合快速验证或显存需求极低的场景。

• DP:仅推荐在单机多卡且代码快速迁移时使用,避免主卡显存瓶颈。

• DDP:生产环境首选,尤其适合千亿参数模型或多节点训练。

http://www.cadmedia.cn/news/5341.html

相关文章:

  • 合肥网站的建设中国十大互联网公司
  • 中国代理网官网网站seo设计
  • 常州二建建设有限公司官方网站百度的链接
  • 基于python的网站开发项目哪里有网络推广
  • 网站建设开发能力很强的企业培训体系包括四大体系
  • 阜新小程序 阜新网站建设开发网络运营推广具体做什么工作
  • 上海网站托管全网seo优化电话
  • 深圳上市公司网站建设公司竞价账户托管哪家好
  • 常州市网站建设公司网络营销的发展历程
  • 购买网站服务器sem优化服务公司
  • 做英语教具的网站软件开发工具
  • 深圳网站建设与制作公司网络优化的意义
  • 上一篇 下一篇 wordpress网站关键词排名优化工具
  • 揭阳网站制作计划sem竞价代运营
  • 网站制作建设公司哪家好收录提交入口网址
  • 网站建设北京市营销策划的概念
  • 慢慢来建站公司维普网论文收录查询
  • 河北大名网站建设招聘河南搜索引擎优化
  • 耒阳市人民政府门户网站重庆网站推广
  • 网络策划工作内容湖南seo公司
  • 建设一个网站需要那些技术关键词举例
  • 香港建设 招聘信息网站网站流量查询网站统计查询
  • 怎样申请免费网站域名百度访问量统计
  • 公众号购物做网站还是小程序seo站内优化
  • 网站建设工作总结报告朋友圈产品推广文案
  • 中企业网站建设百度关键词推广价格
  • 石碣做网站优化如何在百度上发广告
  • 网站建设课程下载网站关键词怎么优化排名
  • 成都网站定制开发seo培训学校
  • 网络维护工作怎么样网站seo搜索