ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

swift LoRA 合并:3 条命令

swift LoRA 合并:3 条命令 swift LoRA 合并3 条命令【免费下载链接】swiftUse PEFT or Full-parameter to CPT/SFT/DPO/GRPO 600 LLMs (Qwen3.6, DeepSeek-V4, GLM-5.1, InternLM3, Llama4, ...) and 300 MLLMs (Qwen3-VL, Qwen3-Omni, InternVL3.5, Ovis2.5, GLM4.5v, Gemma4, Llava, Phi4, ...) (AAAI 2025).项目地址: https://gitcode.com/GitHub_Trending/swift1/swiftLoRA 训完checkpoint 里只有一张几百 MB 的适配器权重vLLM 加载不了这种增量。用 swift 模型合并把 LoRA 权重合回基础模型产出一个能独立上线的完整模型整个过程三条命令以内。先跑通swift export \ --adapters output/v0-xxx/checkpoint-1000 \ # swift 训练产出的 checkpoint 目录 --merge_lora true # 开启 LoRA 权重合并这条命令做了三件事从 checkpoint 目录里的 args.json 还原基础模型信息所以不用手写--model把 LoRA 增量写回对应权重最后把完整模型存盘。产物默认落在output/v0-xxx/checkpoint-1000-merged想换位置就加--output_dir。产物默认按 safetensors 分片保存单片上限 5GB--max_shard_size可调大模型会自动切成多片和 Hugging Face 的加载方式完全兼容。FP16 全量合并时显存要装得下整个基础模型大致参考7B约 16GB 起13B约 24GB 起70B约 80GB 起建议 A100/H100或直接在 CPU 上合并补充--merge_lora不只支持普通 LoRAllamapro、longlora 同样适用它只处理适配器权重不碰基础模型的其余部分。官方示例脚本见 examples/export/merge_lora.sh。多个 checkpoint 只合并最终要上线的那个中间的留在原地备查即可。一分钟看懂原理把基础模型想成一份完整底稿LoRA 权重只是页边批注——它只记录了一小部分参数的修正量本身不是完整模型。vLLM、SGLang 这类推理引擎只认定稿不认批注所以上线前必须把批注合成回底稿。这就是 LoRA 合并要解决的问题。一句话LoRA 是增量不是模型部署认的是完整权重。合成完之后每个挂了适配器的线性层和从没挂过 LoRA在推理上完全等价除了你训练的那部分能力。以 7B 模型为例合并后不再走适配器分支单条延迟约降 20-30%吞吐约升 15-25%。产物里有什么config.json、tokenizer 全套文件、generation_config.json以及切好片的权重文件ls一下目录就能确认。进阶场景合并时顺手量化到 4-bit合并产物还要再压显存把量化并进同一步省掉中间产物。swift export \ --adapters output/v0-xxx/checkpoint-1000 \ --merge_lora true \ --quant_method awq \ # 量化方式可选 awq / gptq / bnb / fp8 --quant_bits 4 \ # 量化到 4 位 --dataset AI-ModelScope/alpaca-gpt4-data-zh#256 # awq/gptq 需要的校准数据awq、gptq 必须给校准数据集fp8、bnb 不需要量化批大小默认 1校准样本数默认 256--quant_n_samples可调。AWQ、GPTQ 精度损失通常更小但校准耗时较长适合对质量敏感的服务FP8、BNB 出结果快。量化后的产物同样支持 vLLM 加载7B 模型显存占用能从约 16GB 压到 4-5GB 量级。多个 LoRA 适配器权重融合同一基础模型上训了客服、代码两个 LoRA想压成一个模型上线。把多个路径传给--adapters用空格隔开例如--adapters output/客服/checkpoint-500 output/代码/checkpoint-800swift 会按给定顺序把每个适配器的增量依次合入基础模型两份增量都会计入最终权重相当于叠加而不是二选一。注意swift 不提供各适配器之间的权重比例参数。想控制融合配比要么训练时就调好 rank 和缩放系数要么手动缩放各自权重后再合并。最终产物只有一个完整模型线上不再维护多套适配器。合并后的 LoRA 部署到 vLLM 或 SGLang合并完要上线服务侧直接用 vLLM 或 SGLang 承接。swift infer \ --model output/v0-xxx/checkpoint-1000-merged \ # 合并产物目录 --infer_backend vllm \ # 换成 sglang 就走 SGLang 加速 --stream true部署链路里不再需要加载适配器这个环节引擎直接读合并后的权重启动更干净。排错自查合并卡住或结果不对先按症状对号入座再动手改参数。症状大概率原因处理动作合并时显存 OOM基础模型在 GPU 上装不下加--device_map cpu放到内存里合并或换更大显存的卡拉取基础模型时报错本地没有 args.json 里记录的那个模型按 checkpoint 中记录的模型 ID 重新下载基础模型再跑合并合并后效果反而变差LoRA 秩或缩放系数偏大增量盖过了原有能力降低 rank 重新微调顺带核对训练时挂载的目标模块是否合理命令跑完但没合并checkpoint 不是 swift 产出的缺 args.json手动加--model指定基础模型提示输出目录已存在目录里已有旧产物加--exist_ok true覆盖或换一个--output_dir上线前核对清单用同一组 prompt 分别跑合并前带适配器和合并后的模型回答一致检查产物目录config.json、tokenizer 文件、safetensors 分片齐全原始适配器和基础模型都保留不删方便回退重合并给合并产物打版本标记如 merged-v1别只留一个 checkpoint 路径把这条 export 命令写进发布流程下次能原样重放合并、验证、打标记都完成这个模型就可以进你的部署流水线了。遇到问题先看官方文档的 Export-and-push 章节仍复现不了就去仓库提 issue附上完整命令和报错日志。【免费下载链接】swiftUse PEFT or Full-parameter to CPT/SFT/DPO/GRPO 600 LLMs (Qwen3.6, DeepSeek-V4, GLM-5.1, InternLM3, Llama4, ...) and 300 MLLMs (Qwen3-VL, Qwen3-Omni, InternVL3.5, Ovis2.5, GLM4.5v, Gemma4, Llava, Phi4, ...) (AAAI 2025).项目地址: https://gitcode.com/GitHub_Trending/swift1/swift创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表