
AReaL 强化学习 LoRA 实战指南参数高效微调配置与多后端支持全解析【免费下载链接】AReaLThe RL Bridge for LLM-based Agent Applications. Made Simple Flexible.项目地址: https://gitcode.com/GitHub_Trending/are/AReaLLoRALow-Rank Adaptation是一种参数高效的微调技术通过在预训练权重中注入可训练的低秩矩阵通常作用于线性层附近以远低于全参数微调的内存与计算开销完成模型适配。在 AReaL 中LoRA 被用于把强化学习RL微调下沉到硬件资源有限的集群——例如用 8 × 80 GB GPU 训练 70B 规模模型。本文以 docs/zh/reference/lora.md 为骨架结合 examples/math 下的三份真实 LoRA 配置与areal/源码实现系统讲解 AReaL 中 LoRA 的后端支持矩阵、核心参数含义、完整配置范例与底层适配原理读完即可在自己的 RL 任务中正确启用并调优 LoRA。LoRA 在 AReaL 中的适用场景在 docs/zh/reference/lora.md 中AReaL 明确将 LoRA 定位为让超大模型 RL 微调在有限硬件下变得可行的手段其典型价值包括降低训练门槛在相对有限的硬件条件下进行超大模型的强化学习训练例如使用 8 × 80 GB GPU 训练 70B 规模模型放大 batch size由于显存压力更低可以支持更大的 batch size从而提升训练吞吐与样本效率简化迁移与部署训练产物只需保存和分发 LoRA adapter无需搬运全量权重未来能力多 adapter 并行微调更高效地并行微调多个 LoRA adapter 以提升硬件利用率仓库中该计划以 RFC 形式跟进当前尚未落地。理解这一定位后下面的内容将围绕如何在 RL 训练中启用 LoRA 并配置相关参数展开。后端支持矩阵AReaL 当前的 LoRA 支持矩阵如下摘自 docs/zh/reference/lora.mdEnginevLLMSGLangFSDP2✅✅Megatron✅❌Archon❌❌示例脚本EngineExample scriptFSDP2examples/math/gsm8k_grpo_lora.yamlMegatronexamples/math/gsm8k_grpo_megatron_lora.yamlMegatron MoEexamples/math/gsm8k_grpo_megatron_lora_moe.yaml对于Megatron vLLM组合AReaL 目前额外支持两类高级能力在 Qwen3 MoE 等 MoE 架构上进行 LoRA 微调并通过XCCL更新 LoRA 权重当 Megatron 训练组与 rollout 组横跨多个节点时进行跨节点 LoRA 训练。需要特别说明的是Megatron 后端的 LoRA 必须搭配megatron-bridge使用而不是mbridgedocs/zh/reference/lora.md 实践建议与 areal/engine/megatron_engine.py 中的断言一致MegatronEngine LoRA POC currently only supports bridge_typemegatron-bridge。此外从源码看 LoRA 模式下bridge_typemegatron-bridge也不支持 tree trainingareal/engine/megatron_engine.py。核心 LoRA 参数详解原文档给出了 LoRA 的五个核心参数docs/zh/reference/lora.md下表完整继承并补充了参数默认值与源码出处参数解析位于 areal/api/cli_args.py参数作用常见取值use_lora是否启用 LoRA 微调模式。true/falselora_rank(r)低秩适配器的秩。r越大表达能力越强但显存与计算开销更高。8,16,32,64lora_alphaLoRA 缩放系数。通常可理解为有效缩放与alpha / r成正比。16,32,64target_modules指定注入 LoRA 的目标子模块。这是最关键、且与模型结构强相关的配置。例如[all-linear]peft_typePEFT 方法类型。在 AReaL 配置中为 LoRA。lora结合 areal/api/cli_args.py 的实现可以补充以下实现事实lora_rank的默认值为32lora_alpha的默认值为16peft_type默认即为lora且 CLI 帮助信息明确标注Only LoRA is supported for now即当前 AReaL 仅支持 LoRA 这一种 PEFT 方法use_lora在 actor 配置、rollout 配置以及引擎后端vLLM/SGLang配置中都会出现需要保持联动。除了上述训练侧参数实际启用 LoRA 还需要联动以下配置项均在 areal/api/cli_args.py 中定义rollout 侧rollout.use_lora控制 rollout 是否按 LoRA 模式调度rollout.lora_name是 LoRA adapter 的名字且以gconfig.lora_name为单一事实来源——从 areal/trainer/rl_trainer.py 可以看到当rollout.use_lora为真而rollout.lora_name为空时会由gconfig.lora_name自动回填SGLang 侧sglang.enable_lora、sglang.max_lora_rank、sglang.max_loaded_loras默认 8、sglang.lora_paths由系统自动填充、sglang.lora_backend默认tritonvLLM 侧vllm.enable_lora、vllm.max_lora_rank、vllm.lora_modules由系统自动填充。其中lora_paths与lora_modules无需手工填写训练器会在 LoRA 模式下自动把初始 adapter 权重打包为{lora_name}-v0{lora_path}形式的模块并注入引擎配置见 areal/trainer/rl_trainer.py 与_save_initial_lora_weights实现。配置范例一FSDP2 SGLangDense 模型examples/math/gsm8k_grpo_lora.yaml 是 FSDP2 后端启用 LoRA 的完整参考模型为Qwen/Qwen2.5-1.5B-Instruct。与 LoRA 直接相关的配置块如下gconfig: lora_name: lora-gsm8k actor: backend: fsdp:d4 path: Qwen/Qwen2.5-1.5B-Instruct weight_update_mode: disk # must be disk use_lora: ${rollout.use_lora} peft_type: lora lora_rank: 16 lora_alpha: 16 target_modules: [all-linear] sglang: enable_lora: ${actor.use_lora} max_lora_rank: ${actor.lora_rank} vllm: enable_lora: ${rollout.use_lora} max_lora_rank: ${actor.lora_rank}要点解读rollout.use_lora: true与actor.use_lora: ${rollout.use_lora}联动保证训练与生成两侧使用同一 LoRA 开关gconfig.lora_name统一命名 adapterFSDP2 组合下weight_update_mode必须为disk配置中已用注释标明# must be disk即通过磁盘完成权重/适配器同步而 Megatron 组合则使用xccl见下文target_modules: [all-linear]表示对模型中所有线性层注入 LoRA是最省心的取值FSDP2 引擎在 areal/engine/fsdp_engine.py 的_apply_peft_wrapper中会将其解析为 PEFT 的all-linear关键字并基于LoraConfig构建r、lora_alpha、target_modules、bias: none等字段后调用get_peft_model包装模型autocast_adapter_dtypeFalse意味着在 FSDP2 fp32 优化器的组合下adapter 权重以 fp32 存储、随基座模型按dtype参与前反向areal/engine/fsdp_engine.py 注释中有明确说明。训练完成后FSDP2 引擎通过_save_lora_to_hfareal/engine/fsdp_engine.py导出 PEFT 兼容的 adapter 目录可直接用 HuggingFacepeft加载从而实现只分发 adapter的轻量部署。配置范例二Megatron vLLMDense 模型examples/math/gsm8k_grpo_megatron_lora.yaml 面向 Megatron 训练引擎 vLLM rollout模型为Qwen/Qwen3-0.6B。其关键差异点actor: backend: megatron:d4p1t1 megatron: bridge_type: megatron-bridge weight_update_mode: xccl use_lora: ${rollout.use_lora} peft_type: lora lora_rank: 16 lora_alpha: 16 target_modules: [linear_qkv, linear_proj, linear_fc1, linear_fc2]要点解读megatron.bridge_type: megatron-bridge是 Megatron 后端 LoRA 的硬性前提前文已述引擎侧在 areal/engine/megatron_engine.py 的_apply_megatron_bridge_lora中使用megatron.bridge.peft.lora.LoRA对模型注入 adapter并调用set_params_to_save登记待保存参数weight_update_mode: xccl意味着 LoRA 权重通过 XCCL 通信直接同步到 vLLM rollout 组这正是原文档所说通过 XCCL 更新 LoRA 权重的落地配置target_modules使用的是Megatron bridge 的层命名linear_qkv/linear_proj/linear_fc1/linear_fc2而不是 HuggingFace 命名。AReaL 在 areal/engine/megatron_utils/megatron_lora.py 的get_vllm_lora_target_modules中维护了映射表linear_qkv → q_proj/k_proj/v_proj、linear_proj → o_proj、linear_fc1 → gate_proj/up_proj、linear_fc2 → down_proj从而把 bridge 命名翻译成 vLLM 可识别的模块名若传入映射表之外的模块名会直接抛出NotImplementedError因此target_modules必须与模型层命名严格一致。配置范例三Megatron MoEQwen3-30B-A3Bexamples/math/gsm8k_grpo_megatron_lora_moe.yaml 演示了在 MoE 架构上做 LoRA 微调模型为Qwen/Qwen3-30B-A3B-Base这也是原文档强调的Megatron vLLM 支持 Qwen3 MoE 等 MoE 架构的直接样例rollout: backend: vllm:d1p1t2 actor: backend: megatron:(attn:d1p6t1c1|ffn:d1p6t1e1) path: Qwen/Qwen3-30B-A3B-Base lr: 3e-6 lr_scheduler_type: cosine megatron: bridge_type: megatron-bridge weight_update_mode: xccl lora_rank: 32 lora_alpha: 32 target_modules: [linear_qkv, linear_proj, linear_fc1, linear_fc2] train_dataset: batch_size: 16与 Dense 版相比MoE 配置的变化包括actor 使用(attn:...|ffn:...)的专家并行描述符以适配 MoE 布局由于模型规模变大lora_rank/lora_alpha提升到 32学习率降到3e-6并使用 cosine 调度训练 batch size 相应缩小到 16。在导出侧areal/engine/megatron_utils/megatron_lora.py 的convert_qwen3_moe_lora_to_hf专门处理 MoE 专家权重到 HuggingFace PEFT 格式的转换注意linear_fc1的linear_outB 矩阵需要把拼接在一起的 gate/up 两部分按专家逐个chunk拆开而 grouped expert 与独立 expert 两种命名模式都做了兼容。这意味着训练产出的 MoE LoRA adapter 可以按标准 PEFT 目录结构落地。源码级原理LoRA 在训练-推理链路中如何流转综合 areal/trainer/rl_trainer.py 与两个引擎实现可以勾勒出 AReaL 中 LoRA 的完整生命周期初始化 adapter训练器在启动时调用_save_initial_lora_weightsareal/trainer/rl_trainer.py为随机初始化的 adapter 生成初始权重快照注入 rollout 引擎该快照以{lora_name}-v0{lora_path}的形式分别注入 SGLang 的lora_paths或 vLLM 的lora_modulesareal/trainer/rl_trainer.py使生成阶段能按当前 adapter 版本做推理训练侧注入FSDP2 走 PEFT 的get_peft_model包装areal/engine/fsdp_engine.pyMegatron 走megatron-bridge的LoRA包装areal/engine/megatron_engine.py权重同步FSDP2 组合通过weight_update_mode: disk落盘同步Megatron 组合通过weight_update_mode: xccl直接通信同步并支持跨节点版本管理训练器为 LoRA 维护多版本lora_keep_versions与max_head_offpolicyness联动见 areal/trainer/rl_trainer.py配合 off-policy 采样控制导出FSDP2 通过_save_lora_to_hf导出Megatron 侧则在 areal/engine/megatron_utils/megatron_lora.py 中通过 monkey-patch 为megatron-bridge补上save_hf_adapter方法当前 megatron-bridge 0.3.0 尚无内置实现生成包含adapter_config.json与adapter_model.safetensors的标准 PEFT 目录可用peft.PeftModel.from_pretrained(base_model, path)直接加载。仓库中也有针对性的测试可以对照FSDP2 内存高效 LoRA 训练见 tests/torchrun/run_fsdp_memory_efficient_lora.py 与 tests/test_fsdp_memory_efficient_lora.pySGLang 侧 adapter 卸载见 tests/test_sglang_lora_unload.py。实践建议与注意事项原文档给出的三条实践建议docs/zh/reference/lora.md完整保留如下并结合上文展开从r16或r32起步这是大多数模型的推荐起点再按效果与资源逐步调参。r与alpha同时放大如 MoE 示例中的32/32通常能保持缩放比例稳定target_modules必须与具体模型的层命名保持一致FSDP2 组合下all-linear是最安全的选择Megatron 组合下必须使用 bridge 命名linear_qkv等且只能使用映射表内支持的模块否则引擎会直接报错Megatron 后端必须使用megatron-bridge而非mbridge这是 LoRA 模式能否启动的前提错误配置会在引擎初始化阶段被断言拦截。此外还有几条容易踩坑的联动要求weight_update_mode因后端而异FSDP2 组合必须为diskMegatron 组合使用xcclMoE 跨节点场景同样适用lora_name保持单一事实来源以gconfig.lora_name为准rollout 侧会自动继承不要在多处各写各的引擎侧参数自动填充sglang.lora_paths与vllm.lora_modules由系统根据lora_name和初始权重路径自动生成无需手工配置Megatron-bridge 的 checkpoint 限制从 areal/engine/megatron_engine.py 的注释可以看出LoRA 模式不适用于 Megatron 的分布式 optimizer checkpointMegatronCheckpointManager仅支持非 LoRA 路径规划保存策略时需注意。小结AReaL 把 LoRA 作为有限硬件上做大模型 RL的关键路径FSDP2 后端通过 PEFT 获得开箱即用的 Dense 模型支持vLLM/SGLang 双引擎可用Megatron 后端通过megatron-bridge XCCL 打通了 Dense 与 MoE 架构含 Qwen3 MoE、跨节点的 LoRA 训练与权重同步。围绕 docs/zh/reference/lora.md 给出的use_lora、lora_rank、lora_alpha、target_modules、peft_type五个核心参数结合 examples/math 下三份 YAML 与areal/engine、areal/trainer的源码实现即可在自己的 RL 任务中快速落地 LoRA 训练并将训练产物以标准 PEFT adapter 的形式分发部署。【免费下载链接】AReaLThe RL Bridge for LLM-based Agent Applications. Made Simple Flexible.项目地址: https://gitcode.com/GitHub_Trending/are/AReaL创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考