<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>简单之美 &#187; Tag &#187; DDP</title>
	<atom:link href="http://shiyanjun.cn/archives/tag/ddp/feed" rel="self" type="application/rss+xml" />
	<link>http://shiyanjun.cn</link>
	<description>简单之美，难得简单，享受简单的唯美。</description>
	<lastBuildDate>Wed, 04 Mar 2026 07:04:53 +0000</lastBuildDate>
	<language>zh-CN</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.9.2</generator>
	<item>
		<title>理解 PyTorch DDP 分布式数据并行模式</title>
		<link>http://shiyanjun.cn/archives/2515.html</link>
		<comments>http://shiyanjun.cn/archives/2515.html#comments</comments>
		<pubDate>Wed, 07 Feb 2024 14:45:55 +0000</pubDate>
		<dc:creator><![CDATA[Yanjun]]></dc:creator>
				<category><![CDATA[PyTorch]]></category>
		<category><![CDATA[人工智能]]></category>
		<category><![CDATA[DDP]]></category>

		<guid isPermaLink="false">http://shiyanjun.cn/?p=2515</guid>
		<description><![CDATA[<p>PyTorch 使用 DDP（Distributed Data Parallel） 实现了真正的分布式数据并行，在下面的两个场景下都可以使用 DDP 实现模型的分布式训练：

单机、多 GPU（单进程多线程的伪分布式）
多机、多 GPU（多机多进程的真正分布式）

上面第一种方式，就是类似使用简单的 DP 数据并行模式，但是 DP 使用的单进程、多线程的范式来实现的；而 DDP 完全使用了多进程的方式，包括单机多进程、多机多进程，如果是多机的情形则对应着物理上的分布式多进程模式。为了获得更好的性能，最好是使用 DDP 模式来训练模型，即使是在单机、多 GPU 的情况下，也建议使用 DDP 模式来实现基于数据并行的模型训练，使用单机 DDP 模式训练模型的性能要比 DP 模式好很多。
DDP 基于集合通信（Collective Communications）来实现分布式训练过程中的梯度同步。在反向传播过程中，DDP 使用 AllReduce 来实现分布式梯度计算和同步。
下面，我们从与 DDP 相关的几个方面来理解 DDP 的设计与实现，包括：

集合通信（Collective Communication）
通信后端（Communication Backend）
DDP 内部实现概览
</p>]]></description>
	<p>PyTorch 使用 DDP（Distributed Data Parallel） 实现了真正的分布式数据并行，在下面的两个场景下都可以使用 DDP 实现模型的分布式训练：

单机、多 GPU（单进程多线程的伪分布式）
多机、多 GPU（多机多进程的真正分布式）

上面第一种方式，就是类似使用简单的 DP 数据并行模式，但是 DP 使用的单进程、多线程的范式来实现的；而 DDP 完全使用了多进程的方式，包括单机多进程、多机多进程，如果是多机的情形则对应着物理上的分布式多进程模式。为了获得更好的性能，最好是使用 DDP 模式来训练模型，即使是在单机、多 GPU 的情况下，也建议使用 DDP 模式来实现基于数据并行的模型训练，使用单机 DDP 模式训练模型的性能要比 DP 模式好很多。
DDP 基于集合通信（Collective Communications）来实现分布式训练过程中的梯度同步。在反向传播过程中，DDP 使用 AllReduce 来实现分布式梯度计算和同步。
下面，我们从与 DDP 相关的几个方面来理解 DDP 的设计与实现，包括：

集合通信（Collective Communication）
通信后端（Communication Backend）
DDP 内部实现概览
</p>			<content:encoded><![CDATA[<p>PyTorch 使用 DDP（Distributed Data Parallel） 实现了真正的分布式数据并行，在下面的两个场景下都可以使用 DDP 实现模型的分布式训练：

单机、多 GPU（单进程多线程的伪分布式）
多机、多 GPU（多机多进程的真正分布式）

上面第一种方式，就是类似使用简单的 DP 数据并行模式，但是 DP 使用的单进程、多线程的范式来实现的；而 DDP 完全使用了多进程的方式，包括单机多进程、多机多进程，如果是多机的情形则对应着物理上的分布式多进程模式。为了获得更好的性能，最好是使用 DDP 模式来训练模型，即使是在单机、多 GPU 的情况下，也建议使用 DDP 模式来实现基于数据并行的模型训练，使用单机 DDP 模式训练模型的性能要比 DP 模式好很多。
DDP 基于集合通信（Collective Communications）来实现分布式训练过程中的梯度同步。在反向传播过程中，DDP 使用 AllReduce 来实现分布式梯度计算和同步。
下面，我们从与 DDP 相关的几个方面来理解 DDP 的设计与实现，包括：

集合通信（Collective Communication）
通信后端（Communication Backend）
DDP 内部实现概览
</p>]]></content:encoded>
			<wfw:commentRss>http://shiyanjun.cn/archives/2515.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
