🕷️ Crawler Inspector

URL Lookup

Direct Parameter Lookup

Raw Queries and Responses

1. Shard Calculation

Query:
Response:
Calculated Shard: 149 (from laksa161)

2. Crawled Status Check

Query:
Response:

3. Robots.txt Check

Query:
Response:

4. Spam/Ban Check

Query:
Response:

5. Seen Status Check

ℹ️ Skipped - page is already crawled

📄
INDEXABLE
CRAWLED
1 month ago
🤖
ROBOTS ALLOWED

Page Info Filters

FilterStatusConditionDetails
HTTP statusPASSdownload_http_code = 200HTTP 200
Age cutoffPASSdownload_stamp > now() - 6 MONTH1.2 months ago
History dropPASSisNull(history_drop_reason)No drop reason
Spam/banPASSfh_dont_index != 1 AND ml_spam_score = 0ml_spam_score=0
CanonicalPASSmeta_canonical IS NULL OR = '' OR = src_unparsedNot set

Page Details

PropertyValue
URLhttps://developer.aliyun.com/article/1597945
Last Crawled2026-03-11 01:26:43 (1 month ago)
First Indexed2024-08-28 08:46:30 (1 year ago)
HTTP Status Code200
Meta TitlePyTorch与DistributedDataParallel:分布式训练入门指南-阿里云开发者社区
Meta Description想用PyTorch DistributedDataParallel (DDP)加速模型训练?本篇入门指南通过清晰的分步教学,提供从环境设置到主函数运行的完整代码,助您快速掌握并成功实现分布式训练。
Meta Canonicalnull
Boilerpipe Text
2024-08-27 2403 版权 版权声明: 本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《 阿里云开发者社区用户服务协议 》和 《 阿里云开发者社区知识产权保护指引 》。如果您发现本社区中有涉嫌抄袭的内容,填写 侵权投诉表单 进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。 简介: 【8月更文第27天】随着深度学习模型变得越来越复杂,单一GPU已经无法满足训练大规模模型的需求。分布式训练成为了加速模型训练的关键技术之一。PyTorch 提供了多种工具来支持分布式训练,其中 DistributedDataParallel (DDP) 是一个非常受欢迎且易用的选择。本文将详细介绍如何使用 PyTorch 的 DDP 模块来进行分布式训练,并通过一个简单的示例来演示其使用方法。 # 概述 随着深度学习模型变得越来越复杂,单一GPU已经无法满足训练大规模模型的需求。分布式训练成为了加速模型训练的关键技术之一。PyTorch 提供了多种工具来支持分布式训练,其中 DistributedDataParallel (DDP) 是一个非常受欢迎且易用的选择。本文将详细介绍如何使用 PyTorch 的 DDP 模块来进行分布式训练,并通过一个简单的示例来演示其使用方法。 分布式训练基础 在分布式训练中,通常有以下几种角色: Worker :执行实际的计算任务。 Master :协调 Worker 之间的通信。 DDP 通过将数据集分成多个部分,让每个 GPU 训练不同的数据子集来并行化训练过程。每个 GPU 上的模型权重会在每个训练批次之后进行同步,从而保证所有 GPU 上的模型状态保持一致。 环境准备 确保安装了支持多 GPU 的 PyTorch 版本。可以通过以下命令安装: pip install torch torchvision torchaudio -f https://download.pytorch.org/whl/cu117/torch_stable.html 这里假设你有一个 CUDA 兼容的 GPU 环境,并且安装了相应版本的 CUDA 和 cuDNN。 代码示例 下面是一个使用 PyTorch 的 DistributedDataParallel 进行分布式训练的简单示例。我们将使用一个简单的多层感知机 (MLP) 来训练 MNIST 数据集。 Step 1: 导入必要的库 import os import torch import torch . nn as nn import torch . optim as optim import torch . multiprocessing as mp from torch . nn . parallel import DistributedDataParallel as DDP from torch . utils . data . distributed import DistributedSampler from torch . utils . data import DataLoader from torchvision import datasets , transforms Step 2: 定义模型 class MLP ( nn . Module ) : def __init__ ( self ) : super ( MLP , self ) . __init__ ( ) self . fc1 = nn . Linear ( 784 , 256 ) self . fc2 = nn . Linear ( 256 , 10 ) def forward ( self , x ) : x = x . view ( - 1 , 784 ) x = torch . relu ( self . fc1 ( x ) ) x = self . fc2 ( x ) return x Step 3: 初始化进程组 def setup ( rank , world_size ) : os . environ [ 'MASTER_ADDR' ] = 'localhost' os . environ [ 'MASTER_PORT' ] = '12355' # 初始化进程组 torch . distributed . init_process_group ( "gloo" , rank = rank , world_size = world_size ) Step 4: 清理进程组 def cleanup ( ) : torch . distributed . destroy_process_group ( ) Step 5: 定义训练函数 def train ( rank , world_size ) : setup ( rank , world_size ) # 加载数据集 transform = transforms . Compose ( [ transforms . ToTensor ( ) , transforms . Normalize ( ( 0.1307 , ) , ( 0.3081 , ) ) ] ) dataset = datasets . MNIST ( './data' , train = True , download = True , transform = transform ) sampler = DistributedSampler ( dataset , num_replicas = world_size , rank = rank ) dataloader = DataLoader ( dataset , batch_size = 32 , sampler = sampler ) # 创建模型并将其封装为 DDP model = MLP ( ) . to ( rank ) ddp_model = DDP ( model , device_ids = [ rank ] ) loss_fn = nn . CrossEntropyLoss ( ) optimizer = optim . SGD ( ddp_model . parameters ( ) , lr = 0.001 ) for epoch in range ( 10 ) : ddp_model . train ( ) for batch_idx , ( data , target ) in enumerate ( dataloader ) : data , target = data . to ( rank ) , target . to ( rank ) optimizer . zero_grad ( ) output = ddp_model ( data ) loss = loss_fn ( output , target ) loss . backward ( ) optimizer . step ( ) if batch_idx % 10 == 0 : print ( f 'Rank {rank}, Epoch: {epoch}, Loss: {loss.item()}' ) cleanup ( ) Step 6: 主函数 def main ( ) : world_size = 2 # 假设有两个 GPU mp . spawn ( train , args = ( world_size , ) , nprocs = world_size , join = True ) if __name__ == "__main__" : main ( ) 解释 初始化进程组 ( setup ): 设置环境变量并初始化 PyTorch 的分布式训练环境。 清理进程组 ( cleanup ): 训练完成后销毁进程组。 训练函数 ( train ): 每个 GPU 上运行的训练逻辑。加载数据集,并使用 DistributedSampler 来确保每个 GPU 训练不同的数据子集。模型被封装为 DistributedDataParallel ,以便自动处理数据的分布和梯度的同步。 主函数 ( main ): 启动多个进程,每个进程对应一个 GPU。 总结 通过以上步骤,我们成功地使用 PyTorch 的 DistributedDataParallel 实现了一个简单的分布式训练过程。这种方法不仅能够显著加快训练速度,还可以处理更大的数据集和更复杂的模型。希望这篇指南能帮助你开始使用 PyTorch 进行分布式训练。 请注意,实际部署时可能需要根据具体硬件环境进行相应的调整,例如设置正确的 MASTER_ADDR 和 MASTER_PORT ,以及使用适当的后端(如 nccl )。 相关实践学习 在云上部署ChatGLM2-6B大模型(GPU版) ChatGLM2-6B是由智谱AI及清华KEG实验室于2023年6月发布的中英双语对话开源大模型。通过本实验,可以学习如何配置AIGC开发环境,如何部署ChatGLM2-6B大模型。
Markdown
[大模型](https://www.aliyun.com/product/tongyi)[产品](https://www.aliyun.com/product/list)[解决方案](https://www.aliyun.com/solution/tech-solution/)[权益](https://www.aliyun.com/benefit)[定价](https://www.aliyun.com/price)[云市场](https://market.aliyun.com/)[伙伴](https://partner.aliyun.com/management/v2)[服务](https://www.aliyun.com/service)[了解阿里云](https://www.aliyun.com/about) 查看 “ ” 全部搜索结果 [![](https://img.alicdn.com/imgextra/i2/O1CN01bYc1m81RrcSAyOjMu_!!6000000002165-54-tps-60-60.apng) AI 助理](https://www.aliyun.com/ai-assistant?displayMode=side) [文档](https://help.aliyun.com/)[备案](https://beian.aliyun.com/)[控制台](https://home.console.aliyun.com/home/dashboard/ProductAndService) [开发者社区](https://developer.aliyun.com/)[![大数据与机器学习](https://ucc.alicdn.com/pic/developer-ecology/pl6q6min3evyk_926b3c16dc09495097cca1b32e9a8926.png)](https://developer.aliyun.com/bigdata/) [首页](https://developer.aliyun.com/bigdata/ "大数据与机器学习")[MaxCompute](https://developer.aliyun.com/group/maxcompute/)[Hologres](https://developer.aliyun.com/group/hologres/)[Flink](https://developer.aliyun.com/group/sc/)[E-MapReduce](https://developer.aliyun.com/group/aliyunemr/)[DataWorks](https://developer.aliyun.com/group/dataworks/)[Elasticsearch](https://developer.aliyun.com/group/es/)[PAI](https://developer.aliyun.com/group/pai/)[智能搜索推荐](https://developer.aliyun.com/group/aios/)[Milvus](https://developer.aliyun.com/bigdata/milvus/)[DataV](https://developer.aliyun.com/group/datav/)[免费试用](https://free.aliyun.com/?product=9564565,9582237,9627867,9602825,9602831) 探索云世界 热门 [百炼大模型](https://developer.aliyun.com/modelstudio/)[Modelscope模型即服务](https://developer.aliyun.com/modelscope/)[弹性计算](https://developer.aliyun.com/ecs/)[通义灵码](https://developer.aliyun.com/lingma/)[云原生](https://developer.aliyun.com/cloudnative/)[数据库](https://developer.aliyun.com/database/)[云效DevOps](https://developer.aliyun.com/group/yunxiao/)[龙蜥操作系统](https://developer.aliyun.com/group/aliyun_linux/) [云计算](https://developer.aliyun.com/ecs/)[弹性计算](https://developer.aliyun.com/ecs/)[无影](https://developer.aliyun.com/group/wuying/)[存储](https://developer.aliyun.com/storage/)[网络](https://developer.aliyun.com/group/networking/)[倚天](https://developer.aliyun.com/yitian/) [云原生](https://developer.aliyun.com/cloudnative/)[容器](https://developer.aliyun.com/group/kubernetes/)[serverless](https://developer.aliyun.com/group/serverless/)[中间件](https://developer.aliyun.com/group/aliware/)[微服务](https://developer.aliyun.com/group/mse/)[可观测](https://developer.aliyun.com/group/arms/)[消息队列](https://developer.aliyun.com/group/rocketmq/) [数据库](https://developer.aliyun.com/database/)[关系型数据库](https://developer.aliyun.com/group/polardb/)[NoSQL数据库](https://developer.aliyun.com/group/hbasespark/)[数据仓库](https://developer.aliyun.com/group/analyticdb/)[数据管理工具](https://developer.aliyun.com/database/dm)[PolarDB开源](https://developer.aliyun.com/polardb/)[向量数据库](https://developer.aliyun.com/database/vectordatabase) [大数据](https://developer.aliyun.com/bigdata/)[大数据计算](https://developer.aliyun.com/group/maxcompute/)[实时数仓Hologres](https://developer.aliyun.com/group/hologres/)[实时计算Flink](https://developer.aliyun.com/group/sc/)[E-MapReduce](https://developer.aliyun.com/group/aliyunemr/)[DataWorks](https://developer.aliyun.com/group/dataworks/)[Elasticsearch](https://developer.aliyun.com/group/es/)[机器学习平台PAI](https://developer.aliyun.com/group/pai/)[智能搜索推荐](https://developer.aliyun.com/group/aios/)[数据可视化DataV](https://developer.aliyun.com/group/datav/) [人工智能](https://developer.aliyun.com/modelscope/)[机器学习平台PAI](https://developer.aliyun.com/group/pai/)[视觉智能开放平台](https://developer.aliyun.com/group/viapi/)[智能语音交互](https://developer.aliyun.com/group/speech/)[自然语言处理](https://developer.aliyun.com/group/nlp/)[多模态模型](https://developer.aliyun.com/group/multimodel/)[pythonsdk](https://developer.aliyun.com/group/pythonsdk/)[通用模型](https://developer.aliyun.com/group/others/) [开发与运维](https://developer.aliyun.com/group/othertech/)[云效DevOps](https://developer.aliyun.com/group/yunxiao/)[钉钉宜搭](https://developer.aliyun.com/group/yida/)[镜像站](https://developer.aliyun.com/group/mirror/) [开发者社区](https://developer.aliyun.com/) [大数据与机器学习](https://developer.aliyun.com/bigdata/) [文章](https://developer.aliyun.com/bigdata/article_hot) 正文 # PyTorch与DistributedDataParallel:分布式训练入门指南 2024-08-27 2403 版权 版权声明: 本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《 [阿里云开发者社区用户服务协议](https://developer.aliyun.com/article/768092)》和 《[阿里云开发者社区知识产权保护指引](https://developer.aliyun.com/article/768093)》。如果您发现本社区中有涉嫌抄袭的内容,填写 [侵权投诉表单](https://yida.alibaba-inc.com/o/right)进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。 **简介:** 【8月更文第27天】随着深度学习模型变得越来越复杂,单一GPU已经无法满足训练大规模模型的需求。分布式训练成为了加速模型训练的关键技术之一。PyTorch 提供了多种工具来支持分布式训练,其中 DistributedDataParallel (DDP) 是一个非常受欢迎且易用的选择。本文将详细介绍如何使用 PyTorch 的 DDP 模块来进行分布式训练,并通过一个简单的示例来演示其使用方法。 ## \# #### 概述 随着深度学习模型变得越来越复杂,单一GPU已经无法满足训练大规模模型的需求。分布式训练成为了加速模型训练的关键技术之一。PyTorch 提供了多种工具来支持分布式训练,其中 DistributedDataParallel (DDP) 是一个非常受欢迎且易用的选择。本文将详细介绍如何使用 PyTorch 的 DDP 模块来进行分布式训练,并通过一个简单的示例来演示其使用方法。 #### 分布式训练基础 在分布式训练中,通常有以下几种角色: 1. **Worker**:执行实际的计算任务。 2. **Master**:协调 Worker 之间的通信。 DDP 通过将数据集分成多个部分,让每个 GPU 训练不同的数据子集来并行化训练过程。每个 GPU 上的模型权重会在每个训练批次之后进行同步,从而保证所有 GPU 上的模型状态保持一致。 #### 环境准备 确保安装了支持多 GPU 的 PyTorch 版本。可以通过以下命令安装: ``` pip install torch torchvision torchaudio -f https://download.pytorch.org/whl/cu117/torch_stable.html ``` 这里假设你有一个 CUDA 兼容的 GPU 环境,并且安装了相应版本的 CUDA 和 cuDNN。 #### 代码示例 下面是一个使用 PyTorch 的 `DistributedDataParallel` 进行分布式训练的简单示例。我们将使用一个简单的多层感知机 (MLP) 来训练 MNIST 数据集。 **Step 1: 导入必要的库** ``` import os import torch import torch.nn as nn import torch.optim as optim import torch.multiprocessing as mp from torch.nn.parallel import DistributedDataParallel as DDP from torch.utils.data.distributed import DistributedSampler from torch.utils.data import DataLoader from torchvision import datasets, transforms ``` **Step 2: 定义模型** ``` class MLP(nn.Module): def __init__(self): super(MLP, self).__init__() self.fc1 = nn.Linear(784, 256) self.fc2 = nn.Linear(256, 10) def forward(self, x): x = x.view(-1, 784) x = torch.relu(self.fc1(x)) x = self.fc2(x) return x ``` **Step 3: 初始化进程组** ``` def setup(rank, world_size): os.environ['MASTER_ADDR'] = 'localhost' os.environ['MASTER_PORT'] = '12355' # 初始化进程组 torch.distributed.init_process_group("gloo", rank=rank, world_size=world_size) ``` **Step 4: 清理进程组** ``` def cleanup(): torch.distributed.destroy_process_group() ``` **Step 5: 定义训练函数** ``` def train(rank, world_size): setup(rank, world_size) # 加载数据集 transform = transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,)) ]) dataset = datasets.MNIST('./data', train=True, download=True, transform=transform) sampler = DistributedSampler(dataset, num_replicas=world_size, rank=rank) dataloader = DataLoader(dataset, batch_size=32, sampler=sampler) # 创建模型并将其封装为 DDP model = MLP().to(rank) ddp_model = DDP(model, device_ids=[rank]) loss_fn = nn.CrossEntropyLoss() optimizer = optim.SGD(ddp_model.parameters(), lr=0.001) for epoch in range(10): ddp_model.train() for batch_idx, (data, target) in enumerate(dataloader): data, target = data.to(rank), target.to(rank) optimizer.zero_grad() output = ddp_model(data) loss = loss_fn(output, target) loss.backward() optimizer.step() if batch_idx % 10 == 0: print(f'Rank {rank}, Epoch: {epoch}, Loss: {loss.item()}') cleanup() ``` **Step 6: 主函数** ``` def main(): world_size = 2 # 假设有两个 GPU mp.spawn(train, args=(world_size,), nprocs=world_size, join=True) if __name__ == "__main__": main() ``` #### 解释 1. **初始化进程组** (`setup`): 设置环境变量并初始化 PyTorch 的分布式训练环境。 2. **清理进程组** (`cleanup`): 训练完成后销毁进程组。 3. **训练函数** (`train`): 每个 GPU 上运行的训练逻辑。加载数据集,并使用 `DistributedSampler` 来确保每个 GPU 训练不同的数据子集。模型被封装为 `DistributedDataParallel`,以便自动处理数据的分布和梯度的同步。 4. **主函数** (`main`): 启动多个进程,每个进程对应一个 GPU。 #### 总结 通过以上步骤,我们成功地使用 PyTorch 的 `DistributedDataParallel` 实现了一个简单的分布式训练过程。这种方法不仅能够显著加快训练速度,还可以处理更大的数据集和更复杂的模型。希望这篇指南能帮助你开始使用 PyTorch 进行分布式训练。 请注意,实际部署时可能需要根据具体硬件环境进行相应的调整,例如设置正确的 `MASTER_ADDR` 和 `MASTER_PORT`,以及使用适当的后端(如 `nccl`)。 文章标签: [GPU云服务器](https://developer.aliyun.com/label/article_de-product-3-ecsgpu) [算法框架/工具](https://developer.aliyun.com/label/article_de-3-100049) [PyTorch](https://developer.aliyun.com/label/article_de-3-100231) [异构计算](https://developer.aliyun.com/label/article_de-3-100060) [机器学习/深度学习](https://developer.aliyun.com/label/article_de-3-100042) [并行计算](https://developer.aliyun.com/label/article_de-3-100061) 关键词: [分布式训练](https://www.aliyun.com/sswb/553265.html) [pytorch入门](https://www.aliyun.com/sswb/969329.html) [分布式入门](https://www.aliyun.com/sswb/587310.html) [pytorch训练](https://www.aliyun.com/sswb/969363.html) [pytorch分布式](https://www.aliyun.com/sswb/866059.html) 相关实践学习 在云上部署ChatGLM2-6B大模型(GPU版) ChatGLM2-6B是由智谱AI及清华KEG实验室于2023年6月发布的中英双语对话开源大模型。通过本实验,可以学习如何配置AIGC开发环境,如何部署ChatGLM2-6B大模型。 [![](https://ucc.alicdn.com/avatar/t6pqrjtpbleqs_9a22b07ddc544d2c970cbde19e05c9a6.png?x-oss-process=image/resize,h_150,m_lfit)](https://developer.aliyun.com/profile/t6pqrjtpbleqs) [郑小健](https://developer.aliyun.com/profile/t6pqrjtpbleqs) 目录 相关文章 [蒋星熠Jaxonic](https://developer.aliyun.com/profile/nckuiusmmgfow) \| 5月前 \| 机器学习/深度学习 人工智能 PyTorch [PyTorch深度学习 ? 带你从入门到精通!!!](https://developer.aliyun.com/article/1683841) 🌟 蒋星熠Jaxonic,深度学习探索者。三年深耕PyTorch,从基础到部署,分享模型构建、GPU加速、TorchScript优化及PyTorch 2.0新特性,助力AI开发者高效进阶。 [蒋星熠Jaxonic](https://developer.aliyun.com/profile/nckuiusmmgfow) 430 1 1 [![PyTorch深度学习 ? 带你从入门到精通!!!](https://ucc.alicdn.com/nckuiusmmgfow/developer-article1683841/20251001/b1ec9722492f434790a4157b0571986a.png?x-oss-process=image/format,webp/resize,h_160,m_lfit)](https://developer.aliyun.com/article/1683841) [Deephub](https://developer.aliyun.com/profile/yafymv6co4b4w) \| 8月前 \| 机器学习/深度学习 PyTorch 测试技术 [从训练到推理:Intel Extension for PyTorch混合精度优化完整指南](https://developer.aliyun.com/article/1674207) PyTorch作为主流深度学习框架,凭借动态计算图和异构计算支持,广泛应用于视觉与自然语言处理。Intel Extension for PyTorch针对Intel硬件深度优化,尤其在GPU上通过自动混合精度(AMP)提升训练与推理性能。本文以ResNet-50在CIFAR-10上的实验为例,详解如何利用该扩展实现高效深度学习优化。 [Deephub](https://developer.aliyun.com/profile/yafymv6co4b4w) 440 0 0 [蚂蚁数据智能技术](https://developer.aliyun.com/profile/egrfphh63agms) \| 11月前 \| 机器学习/深度学习 人工智能 自然语言处理 [ICLR 2025 \| EDiT:一种基于 Local SGD 策略的大模型高效分布式训练方法](https://developer.aliyun.com/article/1661899) 蚂蚁 AI Infra 团队在深度学习最核心之一的训练框架方向上持续投入与创新,实现了提升资源利用率、加速训练、提升训练稳定性等目标。我们提出的 EDiT 方法,即为其中一项工作。 [蚂蚁数据智能技术](https://developer.aliyun.com/profile/egrfphh63agms) 613 3 3 [aliyun9170107523-43660](https://developer.aliyun.com/profile/cctkwux277inw) \| 5月前 \| 存储 监控 算法 [117\_LLM训练的高效分布式策略:从数据并行到ZeRO优化](https://developer.aliyun.com/article/1684058) 在2025年,大型语言模型(LLM)的规模已经达到了数千亿甚至数万亿参数,训练这样的庞然大物需要先进的分布式训练技术支持。本文将深入探讨LLM训练中的高效分布式策略,从基础的数据并行到最先进的ZeRO优化技术,为读者提供全面且实用的技术指南。 [aliyun9170107523-43660](https://developer.aliyun.com/profile/cctkwux277inw) 609 2 2 [poemyang](https://developer.aliyun.com/profile/moe4tengrymu4) \| 6月前 \| 存储 算法 安全 [“卧槽,系统又崩了!”——别慌,这也许是你看过最通俗易懂的分布式入门](https://developer.aliyun.com/article/1682932) 本文深入解析分布式系统核心机制:数据分片与冗余副本实现扩展与高可用,租约、多数派及Gossip协议保障一致性与容错。探讨节点故障、网络延迟等挑战,揭示CFT/BFT容错原理,剖析规模与性能关系,为构建可靠分布式系统提供理论支撑。 [poemyang](https://developer.aliyun.com/profile/moe4tengrymu4) 310 2 2 [aliyun9170107523-43660](https://developer.aliyun.com/profile/cctkwux277inw) \| 5月前 \| 机器学习/深度学习 监控 PyTorch [68\_分布式训练技术:DDP与Horovod](https://developer.aliyun.com/article/1684009) 随着大型语言模型(LLM)规模的不断扩大,从早期的BERT(数亿参数)到如今的GPT-4(万亿级参数),单卡训练已经成为不可能完成的任务。分布式训练技术应运而生,成为大模型开发的核心基础设施。2025年,分布式训练技术已经发展到相当成熟的阶段,各种优化策略和框架不断涌现,为大模型训练提供了强大的支持。 [aliyun9170107523-43660](https://developer.aliyun.com/profile/cctkwux277inw) 706 0 0 [汀丶人工智能](https://developer.aliyun.com/profile/fnj5anauszhew) \| 8月前 \| 机器学习/深度学习 人工智能 API [AI-Compass LLM训练框架生态:整合ms-swift、Unsloth、Megatron-LM等核心框架,涵盖全参数/PEFT训练与分布式优化](https://developer.aliyun.com/article/1672577) AI-Compass LLM训练框架生态:整合ms-swift、Unsloth、Megatron-LM等核心框架,涵盖全参数/PEFT训练与分布式优化 [汀丶人工智能](https://developer.aliyun.com/profile/fnj5anauszhew) 674 9 9 [大熊计算机](https://developer.aliyun.com/profile/l3lzezlnboegq) \| 9月前 \| 存储 机器学习/深度学习 自然语言处理 [避坑指南:PAI-DLC分布式训练BERT模型的3大性能优化策略](https://developer.aliyun.com/article/1668965) 本文基于电商搜索场景下的BERT-Large模型训练优化实践,针对数据供给、通信效率与计算资源利用率三大瓶颈,提出异步IO流水线、梯度压缩+拓扑感知、算子融合+混合精度等策略。实测在128卡V100集群上训练速度提升3.2倍,GPU利用率提升至89.3%,训练成本降低70%。适用于大规模分布式深度学习任务的性能调优。 [大熊计算机](https://developer.aliyun.com/profile/l3lzezlnboegq) 446 3 3 [Deephub](https://developer.aliyun.com/profile/yafymv6co4b4w) \| 12月前 \| 并行计算 PyTorch 算法框架/工具 [融合AMD与NVIDIA GPU集群的MLOps:异构计算环境中的分布式训练架构实践](https://developer.aliyun.com/article/1657560) 本文探讨了如何通过技术手段混合使用AMD与NVIDIA GPU集群以支持PyTorch分布式训练。面对CUDA与ROCm框架互操作性不足的问题,文章提出利用UCC和UCX等统一通信框架实现高效数据传输,并在异构Kubernetes集群中部署任务。通过解决轻度与强度异构环境下的挑战,如计算能力不平衡、内存容量差异及通信性能优化,文章展示了如何无需重构代码即可充分利用异构硬件资源。尽管存在RDMA验证不足、通信性能次优等局限性,但该方案为最大化GPU资源利用率、降低供应商锁定提供了可行路径。源代码已公开,供读者参考实践。 [Deephub](https://developer.aliyun.com/profile/yafymv6co4b4w) 1058 3 3 [![融合AMD与NVIDIA GPU集群的MLOps:异构计算环境中的分布式训练架构实践](https://ucc.alicdn.com/yafymv6co4b4w/developer-article1657560/20250319/d52ff0f8c0a046ad80397ade71119a3a.jpeg?x-oss-process=image/format,webp/resize,h_160,m_lfit)](https://developer.aliyun.com/article/1657560) [大数据与机器学习](https://developer.aliyun.com/bigdata/) ## 热门文章 ## 最新文章 [1 身怀绝技的开发者们,快来DataV玩转可视化组件](https://developer.aliyun.com/article/255154) [2 大数据环境下该如何优雅地设计数据分层](https://developer.aliyun.com/article/136460) [3 odps是什么?](https://developer.aliyun.com/article/149536) [4 数据仓库介绍与实时数仓案例](https://developer.aliyun.com/article/691541) [5 分布式快照算法: Chandy-Lamport](https://developer.aliyun.com/article/688764) [6 DataV接入ECharts图表库 可视化利器强强联手](https://developer.aliyun.com/article/106656) [7 MaxCompute执行作业慢的原因排查](https://developer.aliyun.com/article/224681) [8 阿里云MaxCompute(大数据)公开数据集---带你玩转人工智能](https://developer.aliyun.com/article/89763) [9 优酷背后的大数据秘密](https://developer.aliyun.com/article/705113) [10 吴刚专访--大数据和 MaxCompute 技术和故事](https://developer.aliyun.com/article/710730) [1 从踩坑到高效落地:关键词搜索京东商品列表API的实操心得 19](https://developer.aliyun.com/article/1715885) [2 写 PyTorch 总像在写脚本?试试 PyTorch Lightning,把模型训练变成“工程化项目” 38](https://developer.aliyun.com/article/1715848) [3 别再盲目上 Serverless 了:聊聊 Serverless 数据分析的真相、成本和适用场景 31](https://developer.aliyun.com/article/1715846) [4 深度剖析:两节串联锂电池充电管理IC PW4253的选型与应用 27](https://developer.aliyun.com/article/1715761) [5 保姆级教程,通过GACCode在国内使用Claudecode、Codex! 82](https://developer.aliyun.com/article/1715725) [6 Snowflake SVA vs Aloudata CAN:两种语义层哲学的深度对比 27](https://developer.aliyun.com/article/1715672) [7 UV实战教程,我啥要从Anaconda切换到uv来管理包? 78](https://developer.aliyun.com/article/1715634) [8 java工具:《Java获取明日零点时间工具方法》 36](https://developer.aliyun.com/article/1715615) [9 1688图片搜索API(拍立淘)实操指南 64](https://developer.aliyun.com/article/1715558) [10 LitBuy反向海淘代购系统搭建指南 39](https://developer.aliyun.com/article/1715530) ## 相关课程 [更多](https://edu.aliyun.com/explore/) [开源PolarDB分布式版部署实操](https://edu.aliyun.com/course/3124900) [Spring Boot+Vue.js+FastDFS实现分布式图片服务器](https://edu.aliyun.com/course/315089) [基于Zookeeper、Dubbo构建互联网分布式基础架构](https://edu.aliyun.com/course/314481) [分布式文件存储系统技术及实现](https://edu.aliyun.com/course/313087) [分布式协调系统 Zookeeper 快速入门](https://edu.aliyun.com/course/312706) ## 相关电子书 [更多](https://developer.aliyun.com/ebook/) [高并发分布式缓存Redis6.0](https://developer.aliyun.com/ebook/110) [基于社区的分布式 风险感知模型](https://developer.aliyun.com/ebook/935) [如何利用Redisson分布式化传统Web项目](https://developer.aliyun.com/ebook/1279) ## 推荐镜像 [更多](https://developer.aliyun.com/mirror/) [pytorch-wheels](https://developer.aliyun.com/mirror/pytorch-wheels) 下一篇 [体检通知:阿里云2026年度云上安全健康体检即将开启!](https://developer.aliyun.com/article/1703180) ### 为什么选择阿里云 [什么是云计算](https://www.aliyun.com/about/what-is-cloud-computing)[全球基础设施](https://infrastructure.aliyun.com/)[技术领先](https://www.aliyun.com/why-us/leading-technology)[稳定可靠](https://www.aliyun.com/why-us/reliability)[安全合规](https://www.aliyun.com/why-us/security-compliance)[分析师报告](https://www.aliyun.com/analyst-reports) ### 大模型 [千问大模型](https://www.aliyun.com/product/tongyi)[大模型服务](https://bailian.console.aliyun.com/?tab=model#/model-market)[AI应用构建](https://bailian.console.aliyun.com/app-center?tab=app#/app-center) ### 产品和定价 [全部产品](https://www.aliyun.com/product/list)[免费试用](https://free.aliyun.com/)[产品动态](https://www.aliyun.com/product/news/)[产品定价](https://www.aliyun.com/price/detail)[配置报价器](https://www.aliyun.com/price/cpq/list)[云上成本管理](https://www.aliyun.com/price/cost-management) ### 技术内容 [技术解决方案](https://www.aliyun.com/solution/tech-solution)[帮助文档](https://help.aliyun.com/)[开发者社区](https://developer.aliyun.com/)[天池大赛](https://tianchi.aliyun.com/)[阿里云认证](https://edu.aliyun.com/) ### 权益 [免费试用](https://free.aliyun.com/)[解决方案免费试用](https://www.aliyun.com/solution/free)[高校计划](https://university.aliyun.com/)[5亿算力补贴](https://www.aliyun.com/benefit/form/index)[推荐返现计划](https://dashi.aliyun.com/?ambRef=shouYeDaoHang2&pageCode=yunparterIndex) ### 服务 [基础服务](https://www.aliyun.com/service)[企业增值服务](https://www.aliyun.com/service/supportplans)[迁云服务](https://www.aliyun.com/service/devopsimpl/devopsimpl_cloudmigration_public_cn)[官网公告](https://www.aliyun.com/notice/)[健康看板](https://status.aliyun.com/)[信任中心](https://security.aliyun.com/trust-center) ### 关注阿里云 关注阿里云公众号或下载阿里云APP,关注云资讯,随时随地运维管控云服务 ![阿里云APP](https://img.alicdn.com/imgextra/i4/O1CN01XLesV31fkf7pYNATb_!!6000000004045-2-tps-400-400.png)![阿里云微信](https://img.alicdn.com/tfs/TB1AOdINW6qK1RjSZFmXXX0PFXa-258-258.jpg) 联系我们:4008013260 [法律声明](https://help.aliyun.com/product/67275.html)[Cookies政策](https://terms.alicdn.com/legal-agreement/terms/platform_service/20220906101446934/20220906101446934.html)[廉正举报](https://aliyun.jubao.alibaba.com/)[安全举报](https://report.aliyun.com/)[联系我们](https://www.aliyun.com/contact)[加入我们](https://careers.aliyun.com/) ### 友情链接 [阿里巴巴集团](https://www.alibabagroup.com/cn/global/home)[淘宝网](https://www.taobao.com/)[天猫](https://www.tmall.com/)[全球速卖通](https://www.aliexpress.com/)[阿里巴巴国际交易市场](https://www.alibaba.com/)[1688](https://www.1688.com/)[阿里妈妈](https://www.alimama.com/index.htm)[飞猪](https://www.fliggy.com/)[阿里云计算](https://www.aliyun.com/)[万网](https://wanwang.aliyun.com/)[高德](https://mobile.amap.com/)[UC](https://www.uc.cn/)[友盟](https://www.umeng.com/)[优酷](https://www.youku.com/)[钉钉](https://www.dingtalk.com/)[支付宝](https://www.alipay.com/)[达摩院](https://damo.alibaba.com/)[淘宝海外](https://world.taobao.com/)[阿里云盘](https://www.aliyundrive.com/)[淘宝闪购](https://www.ele.me/) © 2009-现在 Aliyun.com 版权所有 增值电信业务经营许可证: [浙B2-20080101](http://beian.miit.gov.cn/) 域名注册服务机构许可: [浙D3-20210002](https://domain.miit.gov.cn/%E5%9F%9F%E5%90%8D%E6%B3%A8%E5%86%8C%E6%9C%8D%E5%8A%A1%E6%9C%BA%E6%9E%84/%E4%BA%92%E8%81%94%E7%BD%91%E5%9F%9F%E5%90%8D/%E9%98%BF%E9%87%8C%E4%BA%91%E8%AE%A1%E7%AE%97%E6%9C%89%E9%99%90%E5%85%AC%E5%8F%B8%20) [![](https://gw.alicdn.com/tfs/TB1GxwdSXXXXXa.aXXXXXXXXXXX-65-70.gif)](https://zzlz.gsxt.gov.cn/businessCheck/verifKey.do?showType=p&serial=91330106673959654P-SAIC_SHOW_10000091330106673959654P1710919400712&signData=MEUCIQDEkCd8cK7%2Fyqe6BNMWvoMPtAnsgKa7FZetfPkjZMsvhAIgOX1G9YC6FKyndE7o7hL0KaBVn4f%20V%2Fiof3iAgpsV09o%3D)[![浙公网安备 33010602009975号](https://img.alicdn.com/tfs/TB1..50QpXXXXX7XpXXXXXXXXXX-40-40.png)浙公网安备 33010602009975号](http://www.beian.gov.cn/portal/registerSystemInfo)[浙B2-20080101-4](https://beian.miit.gov.cn/)
Readable Markdown
2024-08-27 2403 版权 版权声明: 本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《 [阿里云开发者社区用户服务协议](https://developer.aliyun.com/article/768092)》和 《[阿里云开发者社区知识产权保护指引](https://developer.aliyun.com/article/768093)》。如果您发现本社区中有涉嫌抄袭的内容,填写 [侵权投诉表单](https://yida.alibaba-inc.com/o/right)进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。 **简介:** 【8月更文第27天】随着深度学习模型变得越来越复杂,单一GPU已经无法满足训练大规模模型的需求。分布式训练成为了加速模型训练的关键技术之一。PyTorch 提供了多种工具来支持分布式训练,其中 DistributedDataParallel (DDP) 是一个非常受欢迎且易用的选择。本文将详细介绍如何使用 PyTorch 的 DDP 模块来进行分布式训练,并通过一个简单的示例来演示其使用方法。 ## \# #### 概述 随着深度学习模型变得越来越复杂,单一GPU已经无法满足训练大规模模型的需求。分布式训练成为了加速模型训练的关键技术之一。PyTorch 提供了多种工具来支持分布式训练,其中 DistributedDataParallel (DDP) 是一个非常受欢迎且易用的选择。本文将详细介绍如何使用 PyTorch 的 DDP 模块来进行分布式训练,并通过一个简单的示例来演示其使用方法。 #### 分布式训练基础 在分布式训练中,通常有以下几种角色: 1. **Worker**:执行实际的计算任务。 2. **Master**:协调 Worker 之间的通信。 DDP 通过将数据集分成多个部分,让每个 GPU 训练不同的数据子集来并行化训练过程。每个 GPU 上的模型权重会在每个训练批次之后进行同步,从而保证所有 GPU 上的模型状态保持一致。 #### 环境准备 确保安装了支持多 GPU 的 PyTorch 版本。可以通过以下命令安装: ``` pip install torch torchvision torchaudio -f https://download.pytorch.org/whl/cu117/torch_stable.html ``` 这里假设你有一个 CUDA 兼容的 GPU 环境,并且安装了相应版本的 CUDA 和 cuDNN。 #### 代码示例 下面是一个使用 PyTorch 的 `DistributedDataParallel` 进行分布式训练的简单示例。我们将使用一个简单的多层感知机 (MLP) 来训练 MNIST 数据集。 **Step 1: 导入必要的库** ``` import os import torch import torch.nn as nn import torch.optim as optim import torch.multiprocessing as mp from torch.nn.parallel import DistributedDataParallel as DDP from torch.utils.data.distributed import DistributedSampler from torch.utils.data import DataLoader from torchvision import datasets, transforms ``` **Step 2: 定义模型** ``` class MLP(nn.Module): def __init__(self): super(MLP, self).__init__() self.fc1 = nn.Linear(784, 256) self.fc2 = nn.Linear(256, 10) def forward(self, x): x = x.view(-1, 784) x = torch.relu(self.fc1(x)) x = self.fc2(x) return x ``` **Step 3: 初始化进程组** ``` def setup(rank, world_size): os.environ['MASTER_ADDR'] = 'localhost' os.environ['MASTER_PORT'] = '12355' # 初始化进程组 torch.distributed.init_process_group("gloo", rank=rank, world_size=world_size) ``` **Step 4: 清理进程组** ``` def cleanup(): torch.distributed.destroy_process_group() ``` **Step 5: 定义训练函数** ``` def train(rank, world_size): setup(rank, world_size) # 加载数据集 transform = transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,)) ]) dataset = datasets.MNIST('./data', train=True, download=True, transform=transform) sampler = DistributedSampler(dataset, num_replicas=world_size, rank=rank) dataloader = DataLoader(dataset, batch_size=32, sampler=sampler) # 创建模型并将其封装为 DDP model = MLP().to(rank) ddp_model = DDP(model, device_ids=[rank]) loss_fn = nn.CrossEntropyLoss() optimizer = optim.SGD(ddp_model.parameters(), lr=0.001) for epoch in range(10): ddp_model.train() for batch_idx, (data, target) in enumerate(dataloader): data, target = data.to(rank), target.to(rank) optimizer.zero_grad() output = ddp_model(data) loss = loss_fn(output, target) loss.backward() optimizer.step() if batch_idx % 10 == 0: print(f'Rank {rank}, Epoch: {epoch}, Loss: {loss.item()}') cleanup() ``` **Step 6: 主函数** ``` def main(): world_size = 2 # 假设有两个 GPU mp.spawn(train, args=(world_size,), nprocs=world_size, join=True) if __name__ == "__main__": main() ``` #### 解释 1. **初始化进程组** (`setup`): 设置环境变量并初始化 PyTorch 的分布式训练环境。 2. **清理进程组** (`cleanup`): 训练完成后销毁进程组。 3. **训练函数** (`train`): 每个 GPU 上运行的训练逻辑。加载数据集,并使用 `DistributedSampler` 来确保每个 GPU 训练不同的数据子集。模型被封装为 `DistributedDataParallel`,以便自动处理数据的分布和梯度的同步。 4. **主函数** (`main`): 启动多个进程,每个进程对应一个 GPU。 #### 总结 通过以上步骤,我们成功地使用 PyTorch 的 `DistributedDataParallel` 实现了一个简单的分布式训练过程。这种方法不仅能够显著加快训练速度,还可以处理更大的数据集和更复杂的模型。希望这篇指南能帮助你开始使用 PyTorch 进行分布式训练。 请注意,实际部署时可能需要根据具体硬件环境进行相应的调整,例如设置正确的 `MASTER_ADDR` 和 `MASTER_PORT`,以及使用适当的后端(如 `nccl`)。 相关实践学习 在云上部署ChatGLM2-6B大模型(GPU版) ChatGLM2-6B是由智谱AI及清华KEG实验室于2023年6月发布的中英双语对话开源大模型。通过本实验,可以学习如何配置AIGC开发环境,如何部署ChatGLM2-6B大模型。
Shard149 (laksa)
Root Hash892221456919234349
Unparsed URLcom,aliyun!developer,/article/1597945 s443