
人工智能大模型微调LoRA【免费下载链接】peft PEFT: State-of-the-art Parameter-Efficient Fine-Tuning.项目地址https://gitcode.com/gh_mirrors/pe/peft点击查看免费下载Super-Tuning论文 arXiv:2607.09287是 PEFT 中一种稀疏微调方法它冻结基础权重仅依据权重幅值magnitude选择每个目标权重矩阵中极小一部分标量条目作为可训练支持集全程数据无关、无需校准集。本文以 examples/supertuning_finetuning/README.md 为主干结合 PEFT 中SupertuningConfig/SupertuningLayer的源码实现config.py、layer.py、model.py与配套脚本 supertuning_finetuning.py完整讲解从零配置、训练、保存到加载推理的全流程并深入解释sparsity、select_top、r、lora_alpha等关键参数在源码中的实际作用。读完你将掌握如何用纯 Super 稀疏微调仅训练 1% 权重条目以及 Supra 混合模式稀疏支持 LoRA 低秩适配器微调 Llama 3.2 等因果语言模型并了解其 checkpoint 结构与合并merge语义。一、Super-Tuning 是什么动机与设计要点1.1 与 LoRA 的本质区别LoRA 将可训练参数约束在一个低秩子空间ΔW B·A秩为rSuper-Tuning 则不做这种子空间限制——它直接在冻结的基础权重上选取一小部分单个标量条目进行训练。具体做法基础权重保持requires_gradFalse完全冻结一个紧凑的(indices, values)对编码可训练支持集indices是选中条目在权重矩阵中的扁平位置values是对应的可训练标量前向时通过scatter_add将这些标量散布加回基础权重等效于在参与矩阵乘法前先组装出有效权重layer.py 的SupertuningLayer注释对此有明确说明。这带来两个直接好处一是可训练参数不再受低秩子空间限制理论上能覆盖基础权重中任意位置二是训练集选择完全数据无关data-free——只需读取权重的绝对值不需要任何校准集对比 Wanda 等基于激活的方法需要校准 pass。1.2 Supra 混合模式论文的 Supra 混合方案是在稀疏支持集之上再叠加一个 LoRA 风格的低秩适配器。在配置中设置r为任意正整数即可启用update_layer会额外分配 LoRA 的A[r, in_features]与B[out_features, r]参数前向时其贡献(alpha / r) * (B A)与稀疏组合输出相加layer.py。值得注意的初始化细节init_weightsTrue默认时稀疏values与 LoRAB均零初始化LoRAA使用 Kaiming-uniform——这与 PEFT LoRA 层约定一致即构造时刻适配器是恒等更新不会干扰初始输出config.py。1.3 支持范围与约束从SupertuningModel._create_new_module的源码看目前仅支持torch.nn.Linear目标层其余类型会抛出TypeErrormodel.py。这与 README 的 Additional Notes 一致。二、快速上手从 LoRA 到 Super-Tuning 的一行替换2.1 最小训练示例在标准 PEFT 训练流程中只需把LoraConfig换成SupertuningConfigimport torch from peft import SupertuningConfig, get_peft_model from transformers import AutoTokenizer, AutoModelForCausalLM from trl import SFTConfig, SFTTrainer from datasets import load_dataset model AutoModelForCausalLM.from_pretrained(meta-llama/Llama-3.2-1B, dtypetorch.bfloat16, device_mapauto) tokenizer AutoTokenizer.from_pretrained(meta-llama/Llama-3.2-1B) tokenizer.pad_token_id tokenizer.eos_token_id supertuning_config SupertuningConfig(sparsity0.99, target_modules[q_proj, v_proj]) peft_model get_peft_model(model, supertuning_config) peft_model.print_trainable_parameters() dataset load_dataset(imdb, splittrain[:1%]) training_args SFTConfig(dataset_text_fieldtext, max_length128) trainer SFTTrainer( modelpeft_model, argstraining_args, train_datasetdataset, processing_classtokenizer, ) trainer.train() peft_model.save_pretrained(supertuning-llama-3.2-1b)关键点sparsity0.99表示每个目标权重矩阵中约1% 的条目可训练其余冻结不传r保持None即为纯 Super 模式该示例将 Super-Tuning 应用于注意力的q_proj与v_proj两层。2.2 加载与推理微调产物可用标准的PeftModel.from_pretrained加载import torch from peft import PeftModel from transformers import AutoModelForCausalLM model AutoModelForCausalLM.from_pretrained( meta-llama/Llama-3.2-1B, dtypetorch.bfloat16, device_mapauto ) peft_model PeftModel.from_pretrained(model, supertuning-llama-3.2-1b)从源码看SupertuningConfig的peft_type被设置为PeftType.SUPERTUNINGconfig.py因此 PEFT 的自动加载机制能正确识别该适配器类型无需任何额外参数。2.3 支持集的自动选择target_modulestarget_modules支持三种写法config.pyNone使用模型架构默认的目标模块映射列表按后缀/精确名匹配例如[q_proj, v_proj]字符串作为正则表达式匹配例如.*self_attn.*(q_proj|v_proj)$。实现层面SupertuningModel.target_module_mapping直接复用 LoRA 的架构映射表TRANSFORMERS_MODELS_TO_SUPERTUNING_TARGET_MODULES_MAPPING TRANSFORMERS_MODELS_TO_LORA_TARGET_MODULES_MAPPING.copy()constants.py因此凡 LoRA 支持自动映射的架构Super-Tuning 默认也有对应的目标模块。三、进阶用法命令行脚本实操仓库提供了完整的可运行脚本 supertuning_finetuning.py基于 TransformersTrainerDataCollatorForLanguageModeling实现因果语言建模微调默认数据集为timdettmers/openassistant-guanaco。3.1 指定目标模块默认作用于 Q/V 层脚本默认把 Super-Tuning 应用到 query 与 value 层想换目标层传逗号分隔列表python examples/supertuning_finetuning/supertuning_finetuning.py --base_model meta-llama/Llama-3.2-1B --target_modules q_proj,k_proj,v_proj,o_proj注意脚本内部会把该字符串split(,)后传入配置supertuning_finetuning.py。3.2 训练 Supra 混合模式传--rank即启用稀疏支持 LoRA 的 Supra 混合--lora_alpha省略时自动取2 * rankpython examples/supertuning_finetuning/supertuning_finetuning.py --base_model meta-llama/Llama-3.2-1B --rank 8lora_alpha 2 * r这一默认逻辑在配置的__post_init__中实现config.pyr为非空整数时若未显式给lora_alpha自动补为2 * r反之若r is None却传了lora_alpha会直接报错——Supra 模式必须显式声明秩。3.3 完整训练参数示例python supertuning_finetuning.py \ --base_model PATH_TO_MODEL \ --data_path PATH_TO_DATASET \ --output_dir PATH_TO_OUTPUT_DIR \ --batch_size 1 \ --num_epochs 3 \ --learning_rate 1e-4 \ --cutoff_len 512 \ --eval_step 10 \ --save_step 100 \ --device auto \ --sparsity 0.99 \ --rank 8 \ --target_modules q_proj,v_proj \ --hub_model_id YOUR_HF_REPO \ --push_to_hub各参数含义与脚本默认值见脚本 argparse 定义参数默认值说明--base_modelmeta-llama/Llama-3.2-1B基础模型路径或名称--data_pathtimdettmers/openassistant-guanaco数据集路径或名称--output_dirpath/to/output微调模型输出目录--batch_size1批大小--num_epochs1训练轮数--learning_rate1e-4学习率--cutoff_len512分词截断长度--eval_step10日志记录步间隔--save_step100保存步间隔--deviceauto训练设备auto时自动解析为当前加速器类型CUDA 等--sparsity0.99目标稀疏率0.99 1% 条目可训练--select_topTrue保留幅值最大还是最小的条目作为支持集--rankNoneSupra 混合的 LoRA 秩留空为纯 Super--lora_alphaNoneSupra 模式的 LoRA 缩放省略时为2*rank--target_modulesNone逗号分隔的目标模块列表--hub_model_id/--push_to_hubpath/to/repo/ 关推送 Hugging Face Hub 的仓库名与开关脚本其他值得注意的工程细节自动选择 bf16/fp32取决于设备 bf16 支持supertuning_finetuning.py、warmup 取总步数的 10%、gradient_accumulation_steps16、save_total_limit2。四、核心参数深度解析源码级4.1sparsity控制可训练条目比例取值范围[0.0, 1.0)在__post_init__中强校验越界抛ValueErrorconfig.py可训练条目数由int(num_params * (1 - sparsity))计算layer.py若稀疏率过高导致一个条目都选不中直接抛错而不是静默不训练update_layer中num_trainable 1时会抛出 leaves no trainable entries 的ValueErrorlayer.py。该行为由测试 test_supertuning.py 显式验证。4.2select_top幅值选择方向True默认保留幅值最大的条目作为支持集——对应论文的 Super/SupraFalse保留幅值最小的条目——对应论文的-bottom变体论文报告最佳方向因模型与任务而异README 明确提醒需要实验确定测试 test_supertuning.py 验证了 top-k 与 bottom-k 选出的支持集互不相交。4.3r/lora_alpha/lora_dropoutSupra 混合参数rNone默认纯 Super只训练稀疏values不分配任何 LoRA 参数supertuning_rank记为 0r为正整数分配 LoRAA/B层lora_alpha默认2*rlora_dropout默认0.0即nn.Identity()layer.pyLoRA 层统一以无 bias 的nn.Linear且 fp32 精度存放匹配 PEFT LoRA 约定保证训练稳定性bf16 基础权重下前向会把输入提升到 fp32 参与 LoRA 矩阵乘再降回结果 dtypelayer.py该路径由回归测试 test_supertuning.py 覆盖。4.4init_weights恒等初始化 vs 非平凡初始化True默认稀疏values零初始化、LoRAB零初始化构造时适配器是恒等更新False两者改为 Kaiming-uniformLoRAA无论何种情况都是 Kaiming-uniform主要用于测试中构造非平凡适配器config.py。4.5save_precomputed_indicescheckpoint 体积优化开关True默认把稀疏支持集索引直接写入 state dictFalse裁剪 checkpoint 体积——索引在加载时根据基础权重幅值确定性重建。前提是基础模型权重与训练时完全一致否则数值漂移可能导致 topk 平局裁决不同config.py设置False时会触发警告且同一模型的所有适配器必须保持一致否则SupertuningModel._check_new_adapter_config抛错model.py。4.6 继承自PeftConfig的通用参数modules_to_save如随机初始化的分类头需一并训练并保存、inference_mode等与 PEFT 其他 tuner 语义一致详见 config.py。五、源码级原理前向、合并与 checkpoint5.1 前向稀疏组合 LoRA 叠加SupertuningLayer.forward的核心路径layer.py若适配器被禁用或已合并直接走基础层前向否则把基础权重flatten对每个活跃适配器用scatter_add把values写回indices位置得到稠密 稀疏的有效权重用F.linear一次性完成矩阵乘法Supra 模式下再对每个rank 0的适配器计算lora_B(lora_A(x))缩放alpha / r后加到结果上。由于基础权重冻结requires_gradFalseautograd 不会在其上累积梯度稀疏组合仅用scatter_add完成。一个值得注意的细节该路径绕过了基础层自身的 forward hooks因此如果用户在基础层上注册了 hook_warn_once_about_module_hooks会通过 LRU 缓存只警告一次提示改在 PEFT 适配层上注册layer.py。5.2 合并与解合并merge将每个活跃适配器的稀疏 LoRA贡献原位折入基础权重safe_mergeTrue时先组装合并结果并检查isfinite发现 NaN 即抛错False时直接scatter_add_原地修改unmerge逆向执行先减 LoRA delta再scatter_add负值layer.py。get_delta_weight则返回稠密的[out_features, in_features]更新量语义与 PEFT LoRA 的get_delta_weight一致layer.py。5.3 Checkpoint紧凑的 (indices, values) 对适配器 checkpoint 中存储的是一维的supertuning_values与supertuning_indices对而非稠密掩码sparse_mask这是 Super-Tuning 独有的存储设计。索引以int32保存以减半 checkpoint 体积位置不会超出 int32 范围前向/合并时再转回int64scatter_add索引内核要求 int64。测试 test_supertuning.py 验证了checkpoint 只含supertuning_values/supertuning_indices且二者形状一致索引绝不能是浮点类型——防止_move_adapter_to_device_of_base_layer把 int 索引缓冲误转 float 导致 GPU 上越界。5.4 多适配器语义SupertuningLayer的adapter_layer_names与other_param_names按适配器名ParameterDict/BufferDict/ModuleDict组织可通过set_adapter/add_adapter管理多个适配器。注意新增适配器默认不可训练_create_and_replace中requires_grad_(False)model.py。六、附加说明与注意事项稀疏率上限sparsity必须在[0.0, 1.0)极高稀疏率会留下极少数可训练条目若完全选不出条目则直接报错方向选择select_topTrue幅值最大与False幅值最小的优劣因模型、任务而异建议做消融实验层类型限制目前仅支持nn.Linearnn.Conv2d、nn.Embedding等目标会报TypeError混合兼容性该 tuner 注册时声明is_mixed_compatibleFalseinit.py即 Super-Tuning 不参与 PEFT 的混合 tuner 组合架构默认目标模块默认目标模块映射继承自 LoRA 的映射表constants.py因此主流 Transformers 架构都能开箱即用地获得合理的默认target_modules。七、引用若你的工作使用了 Super-Tuning可引用论文article{ilin2026supertuning, title{Super-Tuning: From Activation-Aware Pruning to Sparse Fine-Tuning}, author{Ivan Ilin and Philip Zmushko and Peter Richt\arik}, year{2026}, eprint{2607.09287}, archivePrefix{arXiv}, primaryClass{cs.LG}, }相关实现与测试可进一步参考SupertuningConfig、SupertuningLayer / Linear、SupertuningModel、Supertuning 官方文档 以及 test_supertuning.py。赞分享人工智能大模型微调LoRA【免费下载链接】peft PEFT: State-of-the-art Parameter-Efficient Fine-Tuning.项目地址https://gitcode.com/gh_mirrors/pe/peft点击查看免费下载相关推荐Rust 编译器方法查找机制全解析rustc_hir_typeck 中 probe 与 confirm 两阶段设计Rust 编译器方法查找机制全解析rustc_hir_typeck 中 probe 与 confirm 两阶段设计 方法查找method lookup是人工智能大模型微调LoRATRL 中的 PEFT 集成LoRA、QLoRA 与 Prompt Tuning 的低成本微调实战指南TRL 中的 PEFT 集成LoRA、QLoRA 与 Prompt Tuning 的低成本微调实战指南 本篇技术指南围绕 TRL 官方文档 docs/sour人工智能大模型强化学习RLHF预训练微调LoRAAxolotl 微调 DeepSeek-V4-FlashNVFP4 稀疏 MoE 专家 LoRA 实战指南Axolotl 微调 DeepSeek V4 FlashNVFP4 稀疏 MoE 专家 LoRA 实战指南 导读 DeepSeek V4 Flash 是一个稀人工智能大模型微调LoRA强化学习创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考