<?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>AI Infra on Echo的技术博客</title><link>https://cybersecurityerial.github.io/echo_blog/tags/ai-infra/</link><description>Recent content in AI Infra on Echo的技术博客</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Sun, 21 Jun 2026 00:00:00 +0800</lastBuildDate><atom:link href="https://cybersecurityerial.github.io/echo_blog/tags/ai-infra/index.xml" rel="self" type="application/rss+xml"/><item><title>LLM System: 算法和 Infra 交织的 RL 杂谈 01 - RL Align 会议纪要与一点思考（AI 总结）</title><link>https://cybersecurityerial.github.io/echo_blog/posts/llm-system-rl-algorithm-infra-notes-01-rl-align-meeting-notes/</link><pubDate>Sun, 21 Jun 2026 00:00:00 +0800</pubDate><guid>https://cybersecurityerial.github.io/echo_blog/posts/llm-system-rl-algorithm-infra-notes-01-rl-align-meeting-notes/</guid><description>&lt;h1 id="rl-aigc-开发者交流纪要从模型适配到异步训练系统"&gt;RL AIGC 开发者交流纪要：从模型适配到异步训练系统&lt;/h1&gt;
&lt;p&gt;这次交流的核心不是单一算法，而是 RL AIGC 训练在工程落地中的系统问题。整体看下来，主要矛盾是：RL 链路把训练、推理、数据流、权重同步、checkpoint 和调试工具全部耦合在一起，而现有框架对这些问题的支持还不够完整。让AI总结了一下会议纪要。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="1-多模态-rl-的更新稳定性"&gt;1. 多模态 RL 的更新稳定性&lt;/h2&gt;
&lt;p&gt;多模态 RL 中，有一种做法是：如果某次参数更新和当前模型之间的 diff 超过阈值，就直接舍弃这次更新。&lt;/p&gt;
&lt;p&gt;这个机制可以避免异常 update 破坏模型状态：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;异常 batch / 异常 reward / 异常 rollout
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;参数更新过大
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;超过阈值后舍弃本次更新
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;但它只能止损，不能解释问题来源。真正需要的是面向 RL 的 debugger，能够定位是 reward、logprob、rollout、并行切分还是权重同步出了问题。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="2-新模型接入成本高"&gt;2. 新模型接入成本高&lt;/h2&gt;
&lt;p&gt;如果要把一个新模型接入 RL 训练框架，往往需要手写 Megatron、FSDP 或其他并行逻辑的适配。&lt;/p&gt;
&lt;p&gt;难点不只是 forward 能跑，而是整个 RL 链路都要对齐：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;模型结构
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;并行切分
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;checkpoint / reshard
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rollout 权重同步
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;logprob 计算
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;loss 计算
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;训练侧和推理侧的数据格式
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;RL 场景下，模型适配错误不一定马上报错，很多时候只表现为训练逐渐崩掉。因此新模型适配需要更强的调试工具，比如检查权重版本、logprob 对齐、reshard 正确性和并行切分一致性。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="3-rl-训练周期长问题复现成本高"&gt;3. RL 训练周期长，问题复现成本高&lt;/h2&gt;
&lt;p&gt;RL 训练周期通常很长，一个周期可能需要几天。很多问题不会在前几个 step 暴露，而是在训练一段时间后才出现。&lt;/p&gt;</description></item><item><title>LLM System: Transformer Engine 01 - 在 AI Infra 技术栈中的位置</title><link>https://cybersecurityerial.github.io/echo_blog/posts/llm-system-te-01-ai-infra-position/</link><pubDate>Thu, 21 May 2026 06:10:00 +0800</pubDate><guid>https://cybersecurityerial.github.io/echo_blog/posts/llm-system-te-01-ai-infra-position/</guid><description>&lt;blockquote&gt;
&lt;p&gt;本篇目标：了解 Transformer Engine 的技术定位，搞清楚它为什么存在，以及它和 PyTorch、cuBLAS、Megatron-LM 的边界。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="基本接口"&gt;基本接口&lt;/h2&gt;
&lt;p&gt;Layer 类定义接口非常直接，最表层的使用方式就是把 &lt;code&gt;torch.nn&lt;/code&gt; 模块替换成 &lt;code&gt;transformer_engine.pytorch&lt;/code&gt; 模块。&lt;/p&gt;
&lt;p&gt;普通 PyTorch 写法：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;self&lt;span style="color:#f92672"&gt;.&lt;/span&gt;linear &lt;span style="color:#f92672"&gt;=&lt;/span&gt; torch&lt;span style="color:#f92672"&gt;.&lt;/span&gt;nn&lt;span style="color:#f92672"&gt;.&lt;/span&gt;Linear(hidden_size, &lt;span style="color:#ae81ff"&gt;4&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt; hidden_size)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;TE 写法：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;import&lt;/span&gt; transformer_engine.pytorch &lt;span style="color:#66d9ef"&gt;as&lt;/span&gt; te
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;self&lt;span style="color:#f92672"&gt;.&lt;/span&gt;linear &lt;span style="color:#f92672"&gt;=&lt;/span&gt; te&lt;span style="color:#f92672"&gt;.&lt;/span&gt;Linear(hidden_size, &lt;span style="color:#ae81ff"&gt;4&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt; hidden_size)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;量化上下文：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;from&lt;/span&gt; transformer_engine.pytorch &lt;span style="color:#f92672"&gt;import&lt;/span&gt; fp8_autocast
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;with&lt;/span&gt; fp8_autocast(enabled&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;True&lt;/span&gt;):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; y &lt;span style="color:#f92672"&gt;=&lt;/span&gt; module(x)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;进入 TE 的 FP8 上下文之后，TE 会围绕量化、反量化、fused path、tensor cache 和 backend 选择做一系列处理。相较于纯 PyTorch 计算图优化，TE 会拿到更多信息 tensor parallel、sequence parallel、FP8 recipe 等。这些额外信息给底层算子优化留下了空间。&lt;/p&gt;
&lt;p&gt;这一点目前还是比较 general 层面 的认知，后面要继续顺着源码和 profiler trace 去验证。&lt;/p&gt;
&lt;h2 id="te-和-megatron-的边界"&gt;TE 和 Megatron 的边界&lt;/h2&gt;
&lt;p&gt;Megatron-Core 负责模型并行、训练 loop、optimizer、activation checkpoint、MoE routing、pipeline schedule 和 config。&lt;/p&gt;</description></item></channel></rss>