<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Data Parallelism on Duo&#39;s Tech Blog</title>
    <link>https://duoan.github.io/tags/data-parallelism/</link>
    <description>Recent content in Data Parallelism on Duo&#39;s Tech Blog</description>
    <image>
      <title>Duo&#39;s Tech Blog</title>
      <url>https://duoan.github.io/images/papermod-cover.png</url>
      <link>https://duoan.github.io/images/papermod-cover.png</link>
    </image>
    <generator>Hugo -- 0.153.1</generator>
    <language>en-us</language>
    <lastBuildDate>Sun, 06 Apr 2025 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://duoan.github.io/tags/data-parallelism/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Data Parallelism: From Parameter Server to Ring All-Reduce</title>
      <link>https://duoan.github.io/posts/data-parallelism-ddp-ring-allreduce/</link>
      <pubDate>Sun, 06 Apr 2025 00:00:00 +0000</pubDate>
      <guid>https://duoan.github.io/posts/data-parallelism-ddp-ring-allreduce/</guid>
      <description>&lt;h1 id=&#34;data-parallelism-from-parameter-server-to-ring-all-reduce&#34;&gt;Data Parallelism: From Parameter Server to Ring All-Reduce&lt;/h1&gt;
&lt;p&gt;Data parallelism is the default scaling move because it preserves the model program. Every rank owns the same model, sees different examples, computes gradients, and applies the same update.&lt;/p&gt;
&lt;p&gt;The algorithm is simple. The system is not. The whole post is about removing one bottleneck: do not push all gradient traffic through one server when every GPU could be moving bytes at the same time.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
