<?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>Resharding on Echo的技术博客</title><link>https://cybersecurityerial.github.io/echo_blog/tags/resharding/</link><description>Recent content in Resharding on Echo的技术博客</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Fri, 19 Jun 2026 00:00:00 +0800</lastBuildDate><atom:link href="https://cybersecurityerial.github.io/echo_blog/tags/resharding/index.xml" rel="self" type="application/rss+xml"/><item><title>LLM System: 训练框架随笔 08 - MCore Checkpoint Resharding</title><link>https://cybersecurityerial.github.io/echo_blog/posts/llm-system-training-framework-notes-08-mcore-resharding/</link><pubDate>Fri, 19 Jun 2026 00:00:00 +0800</pubDate><guid>https://cybersecurityerial.github.io/echo_blog/posts/llm-system-training-framework-notes-08-mcore-resharding/</guid><description>&lt;h2 id="简述"&gt;简述&lt;/h2&gt;
&lt;p&gt;resharding这个词出现了好几次，rl的resharding，ckpt的resharding，fsdp的resharding，这部分先看ckpt的resharding目的是什么，怎么做的。&lt;/p&gt;
&lt;p&gt;ckpt的resharding发生在训练开始前loadckpt的时候，ckpt的格式有三种，torchdist，torchdcp，fsdpdtensor。torchdist是mcore原生的distckpt，torchdcp是torchdist的原生格式，fsdp是fsdp2的dcp格式，参数是dtensor分片。&lt;/p&gt;
&lt;p&gt;加载ckpt的时候sharded_state_dict_default演算一个ckpt shard在全局唯一确定的位置。
输入的信息：data，shape，tpaxis，tprank，tpsize，layerkey（name），replicaid
输出的信息：key，data，localshape，globalshape，globaloffset，axisinfo&lt;/p&gt;
&lt;p&gt;这里ckpt的resharding做的事情是当我们load一个ckpt，这个ckpt里面包含它被保存时候的并行信息，但是它被保存的时候的并行设置不一定和这次重新load的时候一样。所以这个resharding就是一次覆盖。那么能否直接不给ckpt加入并行信息呢，因为之前就是分布式的ckpt，没有之前的信息无法拼成完整的模型。&lt;/p&gt;
&lt;h2 id="异步分布式ckpt的难点"&gt;异步分布式ckpt的难点&lt;/h2&gt;
&lt;p&gt;训练的主路径不想等io，所以ckpt的过程是async的，但是ckpt的各个shard还需要同步。mcore和torchdcp在这里权衡的方式是在快照的时候做同步，但是分批写入的时候是异步的。也就是每个step的边界快照一次，然后异步并行传shard。另外同时最多只限制一个async的异步shard组在inflight，否则很难debug。那么如果一批全局async的shard还没都写入，其他新step的同步快照ckpt就得一直等着。所以这个地方也得开足够的空间保存这些shard，这个地方可以pinCPUmem。&lt;/p&gt;</description></item></channel></rss>