MiCA 现已加入 Hugging Face PEFT

Reddit r/LocalLLaMA 工具

摘要

MiCA(Minor Component Adaptation,微成分适配)是一种全新的微调方法,它在次要奇异子空间中初始化适配器,从而更好地吸收知识并减少遗忘。该方法现已合并到 Hugging Face PEFT 库中,可通过 PEFT 主分支获取,并通过现有的 LoRA 接口集成,使用 init_lora_weights='mica'。

很高兴分享 MiCA(Minor Component Adaptation,微成分适配)现已合并到 HuggingFace PEFT 库中。它尚未包含在最新的 PyPI 版本中,但您可以直接从 PEFT 主分支安装:pip install --upgrade git+https://github.com/huggingface/peft.git@main 然后使用 MiCA 只需很少的代码:from peft import LoraConfig, get_peft_model config = LoraConfig( init_lora_weights="mica", r=16, lora_alpha=32, target_modules=["q_proj", "v_proj"], task_type="CAUSAL_LM", ) model = get_peft_model(base_model, config) model.print_trainable_parameters() 就是这样。MiCA 通过现有的 LoRA 接口暴露出来,只需设置:init_lora_weights="mica" MiCA 的思路很简单:不是在预训练权重矩阵的主奇异方向上进行适配,而是使用次要奇异子空间。对于权重矩阵:W = U Σ Vᵀ MiCA 初始化为:B = U[:, -r:] A = 0 因此适配器开始时是一个空操作,因为 B A = 0 基模型的输出在初始化时被完全保留。在训练过程中,MiCA 保持 B 冻结,仅训练 A。这有什么用处?直观上,主奇异方向已经编码了预训练模型的大部分现有行为。次要方向被原始模型使用较少,可能为注入新知识提供了更具可塑性的子空间。在我们的实验中,MiCA 在两次实验和三个模型上平均显示:与 LoRA 相比,在测试设置下知识吸收平均提升约 90%,灾难性遗忘减少约 20%,可训练参数减少约 80%。完整的实验细节请参阅论文。实用的经验法则:如果您有一个效果不错的 LoRA 配置,可以尝试 MiCA 配合:r_mica ≈ r_lora / 2 learning_rate_mica ≈ 2 × learning_rate_lora 由于 MiCA 仅训练两个 LoRA 矩阵中的一个,通常需要更少的参数,并且可以使用稍高的学习率。最佳实践:MiCA 主要用于继续预训练/领域自适应预训练。推荐的工作流程是:从基模型开始,而不是 instruct/chat 模型。在领域文本上训练 MiCA 适配器。将适配器合并到模型中。将合并后的模型作为后续指令/聊天调优的适配基。在许多情况下,将适配器合并或转移到相应的 instruct/chat 模型效果更好;详情请参阅 MiCA 论文。我们主要针对继续预训练和监督微调测试了 MiCA。早期的 RL 结果看起来很有希望。在我们的实验中,仅进行指令微调并不是最有用的场景。特别感谢 Sebastian Raschka 的合作,以及 Hugging Face 团队(Lewis Tunstal 和 Benjamin Bossan)的审查和集成。预印本:https://arxiv.org/abs/2604.01694 https://preview.redd.it/rbqi05lrb6ah1.png?width=1672&format=png&auto=webp&s=0f62e0f43b3926eb6ef0079fcd1fe4af38f1b831
查看原文

相似文章

MTP PR 已合并!!!

Reddit r/LocalLLaMA

与 LLaMA 模型相关的 MTP(可能指模型训练管道或类似内容)拉取请求已合并,标志着一个里程碑。