<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>CUDA on 个人技术随想</title>
        <link>https://www.dhao2001.com/tags/cuda/</link>
        <description>Recent content in CUDA on 个人技术随想</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh</language>
        <lastBuildDate>Wed, 21 Jan 2026 11:00:00 +0800</lastBuildDate><atom:link href="https://www.dhao2001.com/tags/cuda/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>MoE模型的高效微调</title>
            <link>https://www.dhao2001.com/2026/01/21/lora-fine-tune-on-qwen3-moe/</link>
            <pubDate>Wed, 21 Jan 2026 11:00:00 +0800</pubDate>
            <guid>https://www.dhao2001.com/2026/01/21/lora-fine-tune-on-qwen3-moe/</guid>
            <description>&lt;p&gt;2026年了，MoE大模型微调竟然还没有彻底极其方便的通解。这合理吗？&lt;/p&gt;&#xA;&lt;!-- more --&gt;&#xA;&lt;h2 id=&#34;为什么moe大模型多卡分布式lora微调是困难的&#34;&gt;&lt;a href=&#34;#%e4%b8%ba%e4%bb%80%e4%b9%88moe%e5%a4%a7%e6%a8%a1%e5%9e%8b%e5%a4%9a%e5%8d%a1%e5%88%86%e5%b8%83%e5%bc%8flora%e5%be%ae%e8%b0%83%e6%98%af%e5%9b%b0%e9%9a%be%e7%9a%84&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;为什么MoE大模型多卡分布式LoRA微调是困难的？&#xA;&lt;/h2&gt;&lt;blockquote class=&#34;alert alert-important&#34;&gt;&#xA;        &lt;div class=&#34;alert-header&#34;&gt;&#xA;            &lt;span class=&#34;alert-icon&#34;&gt;📌&lt;/span&gt;&#xA;            &lt;span class=&#34;alert-title&#34;&gt;重要&lt;/span&gt;&#xA;        &lt;/div&gt;&#xA;        &lt;div class=&#34;alert-body&#34;&gt;&#xA;            &lt;p&gt;&lt;strong&gt;一句话总结&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;MoE模型在LoRA微调中产生&lt;strong&gt;巨量低秩矩阵&lt;/strong&gt;，叠加&lt;strong&gt;低效的MoE实现&lt;/strong&gt;，导致多卡梯度计算困难，最终容易卡死。&lt;/p&gt;&#xA;        &lt;/div&gt;&#xA;    &lt;/blockquote&gt;&#xA;&lt;p&gt;一开始我也很惊奇，都2026年了，Qwen3模型问世已半年有余，**难道业界就没有MoE做LoRA微调的需求么？**怎么会一直存在这个问题呢？&lt;/p&gt;&#xA;&lt;p&gt;后来多方查阅资料，这个问题还真没那么好解决：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;MoE架构的模型中存在数量极其庞大的小专家FFN，每个专家（Gated MLP）内有三个Linear模块；&lt;/li&gt;&#xA;&lt;li&gt;在LoRA微调时，LoRA会为每个Linear模块添加两个低秩矩阵(A/B)；&lt;/li&gt;&#xA;&lt;li&gt;这导致模型中&lt;strong&gt;参与计算的模块数量极其庞大&lt;/strong&gt;，CUDA计算图相较Dense模型极其复杂；&lt;/li&gt;&#xA;&lt;li&gt;在 HF transformers 4.* 版本中，MoE的专家路由与FFN选择甚至使用Python for循环实现；&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;低效的专家选择和计算&lt;/strong&gt;加剧了多卡分布式计算的困难，也容易导致多卡不同rank数据不对齐，reduce失败；&lt;/li&gt;&#xA;&lt;li&gt;最终导致训练完全卡死，&lt;strong&gt;表现为显卡占用率100%却没有计算量&lt;/strong&gt;，NCCL通信超时；&lt;/li&gt;&#xA;&lt;li&gt;所有基于transformers库搭建的框架（LLaMA-Factory等）都面临相同问题。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;包括我在内，很多人惯性认为，现在的计算能力足以满足更大规模的模型训练，小小MoE引入的计算开销应当不足为惧才对？&lt;/p&gt;&#xA;&lt;p&gt;让我们看看例子，以Qwen3-30B-A3B为例：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;模型中每一层有128个专家&lt;/li&gt;&#xA;&lt;li&gt;模型总共48层，因此整个模型就有6000多个专家FFN模块&lt;/li&gt;&#xA;&lt;li&gt;而每个FFN模块都是一个Gated MLP模块，内含3个Linear矩阵&lt;/li&gt;&#xA;&lt;li&gt;此时，单论专家部分，模型中就总共有18000+ Linear矩阵了，还没考虑Attention等部件&lt;/li&gt;&#xA;&lt;li&gt;使用LoRA微调时，需要对每个Linear增加两个矩阵(A/B)，再次翻倍变成&lt;strong&gt;36000+矩阵参与反向传播&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;作为对比，Qwen3-32B共64层，每层包括Attention和Norm在内也不过11个Linear矩阵，整个模型应用LoRA后的&lt;strong&gt;可更新Linear数控制在2000&lt;/strong&gt;以内，还不到MoE模型的零头。&lt;/p&gt;&#xA;&lt;h2 id=&#34;解决方案&#34;&gt;&lt;a href=&#34;#%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;解决方案&#xA;&lt;/h2&gt;&lt;p&gt;分析了问题原因，解决方案呼之欲出，无非两种：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Sensei，我不做LoRA微调啦！泷泽LoRA哒！&lt;/li&gt;&#xA;&lt;li&gt;你去把 Huggingface 师徒干掉。我？&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;第一种方案是研究论文的主要手段，研究一些小模型尚且可以接受。&lt;/p&gt;&#xA;&lt;p&gt;但眼下是大模型时代！Qwen3发布的MoE最小也有30B参数量，全参数微调需要的VRAM奔着360G以上去了，只有财大气粗的团队才能轻松实现吧。&lt;/p&gt;&#xA;&lt;p&gt;第二种方案说得好，既然transformers库的MoE实现有问题，那我们不用不就行了？&lt;/p&gt;&#xA;&lt;p&gt;很好，现在请开始手搓一个Fused MoE Kernel吧。这就是传说中的从入门到入土吗？&lt;/p&gt;&#xA;&lt;p&gt;等一下，为什么要自己手搓呢？还好，有人帮我们实现过了！&lt;/p&gt;&#xA;&lt;h2 id=&#34;megatron--swift&#34;&gt;&lt;a href=&#34;#megatron--swift&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;Megatron + Swift&#xA;&lt;/h2&gt;&lt;p&gt;现在，有请NVIDIA开发的&lt;a class=&#34;link&#34; href=&#34;https://github.com/NVIDIA/Megatron-LM&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Megatron&lt;/a&gt;库，以及Modelscope开发的&lt;a class=&#34;link&#34; href=&#34;https://github.com/modelscope/ms-swift&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;ms-swift&lt;/a&gt;库。&lt;/p&gt;&#xA;&lt;p&gt;上面两个库是什么，还请自行搜索。总而言之，借助这两个库，我们可以在transformers v5真正解决MoE计算效率问题前，高效地训练MoE模型LoRA。&lt;/p&gt;&#xA;&lt;p&gt;现在让我们直接开始准备吧！&lt;/p&gt;&#xA;&lt;h3 id=&#34;环境配置&#34;&gt;&lt;a href=&#34;#%e7%8e%af%e5%a2%83%e9%85%8d%e7%bd%ae&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;环境配置&#xA;&lt;/h3&gt;&lt;p&gt;这一套方案需要使用Python 3.11，原始配环境教程在&lt;a class=&#34;link&#34; href=&#34;https://swift.readthedocs.io/zh-cn/v3.12/Megatron-SWIFT/Quick-start.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;这里&lt;/a&gt;。&lt;/p&gt;&#xA;&lt;p&gt;相较于原始教程，我做了一点点修改，总结了一些踩坑的改进，可以和原文档一起阅读。&lt;/p&gt;&#xA;&lt;p&gt;假设此时系统已配置好CUDA Toolkit，也就是&lt;code&gt;nvcc&lt;/code&gt;那一套东西。&lt;/p&gt;&#xA;&lt;p&gt;另外，我现在更偏好使用&lt;code&gt;uv&lt;/code&gt;作为&lt;code&gt;pip&lt;/code&gt;的替代，使用&lt;code&gt;pip&lt;/code&gt;时请自行调整。&lt;/p&gt;&#xA;&lt;h4 id=&#34;基础环境&#34;&gt;&lt;a href=&#34;#%e5%9f%ba%e7%a1%80%e7%8e%af%e5%a2%83&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;基础环境&#xA;&lt;/h4&gt;&lt;p&gt;准备以下&lt;code&gt;requirements.txt&lt;/code&gt;：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-requirements.txt&#34; data-lang=&#34;requirements.txt&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ms-swift==3.12&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;torch==2.8.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;transformers&amp;lt;4.58&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;trl&amp;lt;0.25&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;peft&amp;lt;0.19&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepspeed&amp;lt;0.18&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pybind11&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;需要注意，这一套环境中，&lt;strong&gt;PyTorch 2.9.0或更高版本似乎存在一些问题&lt;/strong&gt;，所以&lt;strong&gt;建议使用2.8.0&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;接下来，根据机器上NVIDIA驱动的CUDA版本，选择好希望使用的CUDA版本号，然后开装！这里我们使用CUDA 12.6版本的PyTorch。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uv venv -p 3.11&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uv pip install -r requirements.txt --torch-backend cu126&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;h4 id=&#34;外部依赖项&#34;&gt;&lt;a href=&#34;#%e5%a4%96%e9%83%a8%e4%be%9d%e8%b5%96%e9%a1%b9&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;外部依赖项&#xA;&lt;/h4&gt;&lt;p&gt;接下来，我们需要获取一些外部依赖项，这些依赖需要手动从Github上拉取后本地编译安装。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Create a folder, or NOT as you wish.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir deps&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# NVIDIA APEX&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/NVIDIA/apex deps/apex&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# NVIDIA Megatron&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone --branch core_r0.15.0 https://github.com/NVIDIA/Megatron-LM.git deps/Megatron-LM&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;h4 id=&#34;本地编译依赖&#34;&gt;&lt;a href=&#34;#%e6%9c%ac%e5%9c%b0%e7%bc%96%e8%af%91%e4%be%9d%e8%b5%96&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;本地编译依赖&#xA;&lt;/h4&gt;&lt;p&gt;现在，我们需要开始一项项编译依赖。首先是transformer_engine：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;source&lt;/span&gt; .venv/bin/activate&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;SITE_PACKAGES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;uv run python -c &lt;span class=&#34;s2&#34;&gt;&amp;#34;import site; print(site.getsitepackages()[0])&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$SITE_PACKAGES&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;CUDNN_PATH&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$SITE_PACKAGES&lt;/span&gt;/nvidia/cudnn &lt;span class=&#34;nv&#34;&gt;CPLUS_INCLUDE_PATH&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$SITE_PACKAGES&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/nvidia/cudnn/include:&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$SITE_PACKAGES&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/nvidia/nccl/include&amp;#34;&lt;/span&gt; uv pip install --no-build-isolation transformer_engine&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;pytorch&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;上面这一串看起来怪吓人的，其实就是把Python虚拟环境中的include文件夹暴露给编译器，避免重复下载CUDNN或者NCCL等库的麻烦。参考这个&lt;a class=&#34;link&#34; href=&#34;https://github.com/modelscope/ms-swift/issues/3793&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Issue&lt;/a&gt;。&lt;/p&gt;&#xA;&lt;p&gt;接下来是APEX：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uv pip install -v --disable-pip-version-check --no-cache-dir --no-build-isolation --config-settings&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;--build-option=--cpp_ext&amp;#34;&lt;/span&gt; --config-settings&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;--build-option=--cuda_ext&amp;#34;&lt;/span&gt; ./deps/apex/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;MS-Swift教程中的命令不完全兼容&lt;code&gt;uv&lt;/code&gt;指令，需要像上面的例子一样，&lt;code&gt;--config-settings&lt;/code&gt;后用等于号&lt;code&gt;=&lt;/code&gt;连接参数字符串。&lt;/p&gt;&#xA;&lt;p&gt;然后是Megatron：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uv pip install ./deps/Megatron-LM/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;最后是Flash Attention：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uv pip install &lt;span class=&#34;s2&#34;&gt;&amp;#34;flash-attn==2.8.3&amp;#34;&lt;/span&gt; --no-build-isolation&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;如果没有出错，那么环境就配好啦。&lt;/p&gt;&#xA;&lt;h3 id=&#34;参数调优&#34;&gt;&lt;a href=&#34;#%e5%8f%82%e6%95%b0%e8%b0%83%e4%bc%98&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;参数调优&#xA;&lt;/h3&gt;&lt;p&gt;请参考&lt;a class=&#34;link&#34; href=&#34;https://github.com/NVIDIA/Megatron-LM/blob/main/megatron/core/transformer/moe/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Megatron Core MoE&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;坑&#34;&gt;&lt;a href=&#34;#%e5%9d%91&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;坑&#xA;&lt;/h3&gt;&lt;h4 id=&#34;数据加载有问题&#34;&gt;&lt;a href=&#34;#%e6%95%b0%e6%8d%ae%e5%8a%a0%e8%bd%bd%e6%9c%89%e9%97%ae%e9%a2%98&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;数据加载有问题&#xA;&lt;/h4&gt;&lt;p&gt;上述依赖会在环境中使用&lt;code&gt;datasets==3.6.0&lt;/code&gt;，如果你生成的数据集文件使用了不同版本的datasets库，会容易出错。&lt;/p&gt;&#xA;&lt;p&gt;解决方法很简单：在生成数据集文件时，就使用&lt;code&gt;datasets==3.6.0&lt;/code&gt;。&lt;/p&gt;&#xA;</description>
        </item></channel>
</rss>
