大模型训练全流程实战指南工具篇(十)—— 小白也能懂的大模型训练参数万字详解

张开发
2026/6/1 4:03:13 15 分钟阅读
大模型训练全流程实战指南工具篇(十)—— 小白也能懂的大模型训练参数万字详解
前言上篇文章《大模型训练全流程实战指南工具篇九——LLamaFactory大模型训练工具使用指南》 笔者详细介绍了 LLaMA Factory 的环境部署、数据集注册并带大家跑通了一个完整的大模型微调流程。但相信不少读者在实操过程中都会遇到这样的困惑流程是跑通了可面对配置文件中那些密密麻麻的参数心里却完全没有底——它们到底在控制什么调大调小会带来什么影响为什么别人用的配置我照搬过来效果却差很多这正是笔者撰写大模型训练合集的初衷。笔者始终认为学习大模型训练不能只停留在“能跑通”的层面更要知道“为什么这么设”。知其然更要知其所以然才能真正掌握这项技术遇到问题时才能从容定位、灵活调优。因此本期文章笔者将系统讲解 LLaMA Factory 的训练方法与参数配置通过万字长文、直观易懂的比喻帮助大家理解每个参数的作用建立起从“流程可运行”到“训练稳定、效果可控”的完整认知。希望这篇文章能帮大家真正跨过大模型训练的门槛一步步成长为能够独立把控训练全流程的高手还等什么接着往下看吧~一、大模型训练方法如果大家跟着上一篇文章《大模型训练全流程实战指南工具篇九——LLamaFactory大模型训练工具使用指南》完整操作下来应该已经跑通了一个微调流程。但大家可能也注意到笔者当时选用的是 LoRA 训练方法。为什么是 LoRA它和其他方法有什么不同LLaMA Factory 支持多种训练方法其中最具代表性的三种分别是全量训练、LoRA 训练和QLoRA 训练。为了帮大家直观理解它们的区别笔者这里把大模型比作一套房子把大模型训练比作一次翻新改造。1.1 全参数训练给房子“全部翻新”但小心拆了承重墙全参数训练最直接——加载预训练模型后对所有层的所有参数进行梯度更新。相当于把房子从地基到墙面全部翻新一遍理论上改造效果最好但代价也最大。首先是显存成本高。以 LLaMA-7B 模型为例FP16 精度下模型本身占约 14GB 显存加上 Adam 优化器需要维护动量和方差状态额外约 28GB再算上数据通信等开销总显存轻松突破百 G通常需要好几张 A100/H100 这样的高端显卡才能支撑。其次是对数据质量要求极高。全参数训练就像一个激进的装修队会改动房子的每一处结构。如果你的图纸训练数据不够详细数据量少或画错了质量差装修队就可能把原本牢固的承重墙拆掉把好的水电结构改坏。对应到模型上这就是灾难性遗忘为了强行拟合少量或低质数据模型原有的通用知识语言能力、推理能力被大幅覆盖或破坏。结果往往是你的特定任务还没学好模型原本会的能力如写代码、做数学题已经严重退化了。因此全参数训练是一把双刃剑。它需要充足且高质量的标注数据通常建议上百万条甚至更多和强大的算力做支撑。对资源有限、数据不多的初学者和中小企业来说这条路往往风险大于收益。1.2 LoRA 训练给房子“局部改造”不拆承重墙也能焕然一新与全参数训练的“大拆大建”不同LoRA 选择了一条更克制的路径不改动原始模型的任何参数只在一旁加一个轻量级的“适配器”。这就像装修时不动承重墙、不改水电结构只是换了新家具、重新刷了墙面、调整了软装。房子的主体框架完好无损但整体功能性和风格却精准地满足了你当下的需求。从数学上看LoRA 把权重的变化量ΔW分解为两个低秩矩阵的乘积A和B通过这种方式“侧面”修改原参数而原始参数始终保持不变作为工程人员大家了解基本思想即可可以不深究数学细节。比显存节省更重要的是它对“图纸”——训练数据的宽容度。全参数训练需要海量、高质量的“精准图纸”否则装修队会乱拆乱改。而 LoRA 因为原始模型的“骨架”完全冻结不动只在表面做文章。即便你的图纸只有几百条、质量也未必完美它也不会破坏模型原有的语言能力和推理能力。最多是“新家具没摆好”训练效果不佳不会出现“房子塌了”能力崩塌的情况。这种“低风险、低成本”的特性让 LoRA 成为中小企业、个人开发者和学术研究者入门大模型训练的最佳选择。你不需要成千上万条标注数据也不需要昂贵的 A100 集群一块普通消费级显卡加上几千几万条精心整理的数据就能让模型学会你想要的技能。1.3 QLoRA 训练更省成本的“局部改造”用“经济型材料”也能出精品如果说 LoRA 是在不动主体结构的前提下换家具、刷墙面那 QLoRA 则更进一步——它连家具都换成了“高性价比的环保材料”。QLoRA 的核心创新在于将原始模型压缩到 4 位精度NF4 量化。打个比方全参数训练用的是实木梁柱LoRA 用的是普通钢筋而 QLoRA 用的是“高强度空心钢”——在保证结构强度的前提下大幅降低材料重量和成本。量化技术进一步减少了训练时的显存占用对量化技术有遗忘的读者可回顾我前期的文章大模型训练全流程实战指南基础篇三——大模型本地部署实战Vllm与Ollama但省钱不能以“房子塌了”为代价。和 LoRA 一样QLoRA 同样冻结了原始模型的“骨架”基座模型参数只训练旁边那小小的适配器。因此它对数据的宽容度依然极高即便只有几百条数据、质量参差不齐它也不会破坏模型原有的通用能力。最多是“新家具的款式没选对”效果稍差绝不会出现“承重墙被拆”的灾难性遗忘。实测表明QLoRA 在多数 NLP 任务上的表现能达到LORA训练的 95% 以上。这意味着你只需要一张普通显卡、几百条数据就能以极低的成本安全、稳定地让大模型学会你想要的技能。如果说 LoRA 是个人和小团队的“最优解”那 QLoRA 就是“极限性价比之选”——它把大模型训练的门槛拉到了普通人触手可及的高度。4 如何选择大模型训练方法了解了这三种典型方法后如何选择其实已经比较清晰了。综合笔者的实战经验来看我依然推荐LoRA。有粉丝可能会问既然 QLoRA 更省资源为什么不直接用它综合实测经验QLoRA 确实更省显存但在某些对数值精度敏感的任务中可能出现轻微的性能退化。对绝大多数训练场景来说LoRA 已经足够好用且配置简单、调试方便。结合中小企业、个人科研者的核心痛点LoRA 的优势一目了然算力友好无需多块高端 GPU一块 8–12GB 显存的消费级显卡如 RTX 3060/4060/3090即可完成 7B 模型的训练。成本可控可训练参数极少训练周期短云 GPU 成本大幅降低。灵活切换可以为不同任务训练不同的 LoRA 权重如客服、写作、编程运行时按需加载实现“一基座多专家”的灵活部署。易于分享与版本管理LoRA 权重文件通常只有几十 MB方便保存、分享和版本迭代。推理无额外开销训练完成后可将 LoRA 权重合并回原模型部署时完全无性能损耗。简单来说LoRA 训练用最少的资源解决了“能不能训”的问题同时保留了足够的灵活性和效果是绝大多数个人和小团队入局大模型训练的最佳选择。二、LLaMA Factory LoRA 配置文件详解下面进入本章的核心内容LLaMA Factory LoRA 配置文件详解。通过上一章的介绍大家应该已经发现用 LLaMA Factory 训练大模型其实非常简单——写好配置文件test_qwen_sft.yaml然后执行一条命令llamafactory-cli train /workspace/test_sft/test_qwen_sft.yaml整体操作并不复杂但真正考验功力的地方在于如何写好这份配置文件。本节笔者就用通俗易懂的语言对上篇文章中使用过的训练参数进行逐一拆解确保大家都能真正理解大模型训练的核心知识。在深入参数之前笔者先明确一个核心概念大模型训练的本质就是让模型学习用户提供的数据分布使模型生成的内容与用户提供的数据越来越像。那么模型生成的内容和用户数据之间的差异就需要一个量化指标来衡量——这个指标就是loss。训练的目标就是让 loss 尽可能降到最低。用一张图来形象表示就是从起始点不断下降靠近目标值。如果大家跟着上篇文章实操过应该会在模型保存目录/workspace/test_sft/Qwen2_5_sft/下看到一个trainer_log.jsonl文件里面就记录了每个步骤的 loss 值用来判断模型的拟合情况。有了这个概念笔者就可以开始逐一解析配置文件中的参数了。上篇文章使用的配置文件路径为/workspace/test_sft/test_qwen_sft.yaml。2.1 模型参数### modelmodel_name_or_path:/workspace/Qwen2_5_0_5trust_remote_code:truemodel_name_or_path模型文件的本地存储路径指定要训练的基础大模型位置。LLaMA Factory 会从这个路径读取原始模型参数。trust_remote_code是否信任模型的自定义代码。部分模型如通义千问需要加载自定义代码才能正常读取模型结构因此需要设为true。2.2 训练方法相关参数### methodstage:sftdo_train:truefinetuning_type:loralora_rank:8lora_target:allstage表示训练阶段。pt表示预训练pre-trainingsft表示指令微调supervised fine-tuning。这里指定为sft。do_train是否开启训练。设为true启动训练流程设为false则只验证配置不执行训练。finetuning_type微调类型。指定为lora表示采用 LoRA 微调模式而非全参数微调或 QLoRA。以上三个参数比较好理解接下来三个参数与 LoRA 机制密切相关笔者结合 LoRA 的原理来重点讲解。先回顾一下 LoRA 的核心思想通过引入一个轻量级的“适配器”来间接影响原模型参数而原始参数本身保持不变。公式可以简化为h W 0 x α r × B A x h W_0x \frac{\alpha}{r} \times BAxhW0​xrα​×BAx其中W 0 W_0W0​为基座模型冻结权重原模型参数不参与训练B A BABA为低秩矩阵的乘积可训练的新参数r rr为低秩矩阵的秩lora_rankα \alphaα为缩放因子lora_alpha这个结构可以用下图直观表示对应到配置文件中就是以下三个参数lora_rank即公式中的r rr低秩矩阵的秩数。数值越大适配器的表达能力越强能处理更复杂的任务但可训练参数增多显存占用也相应增加数值越小资源消耗越低适配能力稍弱。默认值为 8推荐范围 4~64。lora_alpha即公式中的α \alphaα可以理解为 LoRA 的“音量调节旋钮”控制低秩矩阵学到的特征对基座模型的影响强度。数值越大适配器的影响越“激进”数值越小模型越贴近基座模型的原生能力。一般设为lora_rank的 1~2 倍例如 rank8 时 alpha16以保持缩放因子平衡。LLaMA Factory 默认将lora_alpha设为lora_rank的 2 倍。lora_target指定在模型的哪些层和结构上附加 LoRA 参数。笔者在之前的文章《大模型训练全流程实战指南基础篇二——大模型文件结构解读与原理解析》中讲过大模型由不同层构成不同层又通过注意力机制具备不同结构。通常情况下直接设为all匹配所有层是最简单的选择如果需要精细控制推荐优先在q_proj和v_proj上添加查询投影层和值投影层因为这两个位置对任务迁移最敏感。通过公式和图示LoRA 相关参数的配置逻辑是不是就清晰多了2.3 数据集配置dataset:alpaca_zh_demotemplate:qwencutoff_len:2048max_samples:1000preprocessing_num_workers:16dataloader_num_workers:4dataset指定训练所用的数据集。需要注意自定义数据集需要在dataset_info.json中预先注册具体方法可参考上一篇文章。template大模型的对话模板也就是文章《大模型训练全流程实战指南基础篇二——大模型文件结构解读与原理解析》中介绍过的chat_template。LLaMA Factory 在后台处理时会自动将数据按照该模板组织成模型可接受的格式。cutoff_len最大截断长度。数据集中不同文本的长度不一但模型的输入需要统一长度。该参数指定一个最大长度超出部分被截断不足部分用pad填充。注意单条数据不宜过长否则会显著增加显存占用。对于 7B 模型通用场景设为 2048 即可长文本场景可设为 4096。max_samples训练使用的最大样本数。有时候并不需要把全部数据都用于训练该参数可以限制实际使用的样本数量。preprocessing_num_workers数据预处理时的线程数。数据集需要与模板结合才能生成模型可用的输入这个过程可以并行加速该参数用来控制预处理线程数。dataloader_num_workers数据加载时的线程数。数据要先加载到内存才能快速喂给模型训练该参数控制加载数据的线程数可根据显存大小适当调整。2.4 输出配置output_dir:/workspace/test_sft/Qwen2_5_sftlogging_steps:10save_steps:500plot_loss:trueoverwrite_output_dir:truesave_only_model:falsereport_to:noneoutput_dir训练好的 LoRA 适配器保存路径。logging_steps日志打印的步数间隔。比如如果一次传入 100 条数据每一步梯度更新处理 10 条数据具体与后面的gradient_accumulation_steps相关那么总共会有 10 步。每 10 步会在日志文件中记录一次 loss。save_steps模型保存的步数间隔。训练过程中不仅只在最后保存一次模型为了防止意外中断或需要对比中间结果建议定期保存检查点。该参数控制每多少步保存一次适配器。overwrite_output_dir如果输出目录不为空是否覆盖目录内容。设为true表示覆盖。save_only_model控制保存内容。false表示保存完整断点支持断点续训true表示仅保存权重用于推理。report_to为了更直观地监控训练过程可以将训练日志上传到一些公开平台如 wandb、swanlab实现远程实时查看。该参数用于配置这些平台的接入方式。2.5 核心训练超参数重要大家常说大模型训练工程师调参的过程就像太上老君炼仙丹需要在不同参数的组合中反复尝试才能炼出“最好的丹”。这些“不同参数的组合”指的就是核心训练超参数。可以说超参数的设置是大模型训练工程师的看家本领。为了让大家更直观地理解这些超参数笔者依然用前面那张loss 下降图来类比大模型的训练本质上就是从起始点不断下降、寻找最优 loss 的过程。虽然实际模型是一个极其高维的函数远不止二维这么简单但背后的思想是一致的——都是在寻找一个尽可能低的 loss 点。首先来看看大模型训练相关的超参数配置### trainper_device_train_batch_size:1gradient_accumulation_steps:8num_train_epochs:1.0learning_rate:1.0e-4lr_scheduler_type:cosinewarmup_ratio:0.1bf16:trueddp_timeout:180000000resume_from_checkpoint:null参数一 per_device_train_batch_size假设模型当前在起点位置它该朝哪个方向走才能到达最优解是方向一、方向二还是方向三、方向四显然方向四才是正确的。那么这个“方向四”是如何计算出来的简单来说就是计算训练数据与当前模型 loss 之间的“斜率”即梯度从而确定下降方向。但训练数据量通常巨大无法一次性全部计算。于是采用一个直观的方法每次只拿一小部分数据来计算方向和步长用局部趋势近似整体方向。这个小批量的数据量就是per_device_train_batch_size。参数二 gradient_accumulation_steps如果单批次数据量太小每算一小批就更新一次权重可能过于“草率”。这时候可以累积多个批次的梯度然后再统一更新一次用小批次模拟大批次的效果。这就是gradient_accumulation_steps的作用。有效批次大小 单卡批次大小 × 梯度累积步数。以上面配置为例1 × 8 8相当于每处理 8 条数据才更新一次梯度。参数三 num_train_epochs这个参数很好理解——将全部训练数据完整训练多少遍。num_train_epochs设为 1表示所有数据只训练一轮。结合前面几个参数大家来算一下训练的总步数。配置中max_samples 1000取 1000 条数据num_train_epochs 1有效批次大小为1 × 8 8因此总步数为(10001)/(18) 125步而logging_steps设为 10表示每 10 步记录一次 loss。看看训练日志是不是一目了然参数四 learning_rate梯度下降不仅需要方向还需要步幅。就像走路方向对了迈多大的步子决定了最终到达的位置。这时候有人可能会想既然要快速下降那把学习率设大一点不就好了其实不然。看下面这张图如果当前在“中间值 1”的位置学习率设置过大一步就可能跨过最优解直接跳到“中间值 2”反而错过了最低点。所以学习率需要谨慎设置。参数五 warmup_ratio 与 lr_scheduler_type由于一开始不确定设置的学习率是否合适通常会让学习率从一个很小的值逐渐上升到设定值这个过程叫warmup相当于慢慢升温的过程和谈恋爱一样。warmup_ratio表示 warmup 阶段占总训练步数的比例。例如总步数为 100warmup_ratio 0.1那么前 10 步学习率从 0 线性增加到设定值。而随着训练接近尾声为了防止在最优解附近震荡比如下图中就从中间值n直接跳到了中间值n1, 然后反复横跳。要解决这个问题往往还需要让学习率逐渐衰减。lr_scheduler_type就是用来指定衰减策略的LoRA 微调推荐使用cosine余弦退火学习率会按照余弦曲线平滑下降。参数六 其他参数其它的参数就比较好理解了bf16混合精度训练开关。部分计算使用 BF1616 位浮点数仅在优化器更新时使用 FP3232 位浮点数对于每个参数都是32位浮点数表示的大模型可以有效降低显存占用。ddp_timeout分布式训练的超时时间。大模型训练耗时较长设置一个较长的超时时间可以防止因网络波动等原因提前中断训练。resume_from_checkpoint断点续训的起点。如果训练意外中断可以指定之前保存的检查点目录通过save_steps保存的中间结果来恢复训练。设为null表示从头开始训练。2.6 验证集配置虽然在上一篇文章的配置文件中验证集相关参数被笔者注释掉了。但在实际训练中这部分配置非常必要。试想一下如果把所有数据都用来训练然后计算 loss就像让学生做的考试题全是平时练过的——考试时测不出真实水平。相反如果用大部分数据训练题海战术留出一小部分数据作为验证集模拟考试用这部分数据来评估模型的 loss才能更客观地反映模型的泛化能力。# eval_dataset: alpaca_en_demo# val_size: 0.1# per_device_eval_batch_size: 1# eval_strategy: steps# eval_steps: 500eval_dataset指定一个独立的验证集。该数据集同样需要在dataset_info.json中预先注册。val_size如果不想单独准备验证集也可以设置这个参数从训练集中划出一部分数据作为验证集0.1 表示划出 10%。per_device_eval_batch_size评估时的批处理大小用于加速评估过程。eval_strategy与eval_steps评估策略eval_strategy: steps表示按步数定期评估eval_steps: 500表示每 500 步进行一次验证。通过验证集配置大家可以实时观察模型在“考试”中的表现避免模型只会“背题”而不会“做题”。三、LoRA 参数调优初步指南经过前面两节的详细讲解大家应该已经对每个参数的含义有了比较清晰的认识。但理论归理论真正动手配置时可能还是会纠结这个值设多少合适为什么别人用的配置我照搬却效果不好本节笔者先给出一个相对稳妥的参数设置建议帮助大家快速上手。至于在什么场景下应该调整哪些参数、如何根据训练曲线进行针对性优化笔者会在下期文章中结合实际工作案例详细展开欢迎关注我的同名微信公众号大模型真好玩更多智能体开发和大模型训练教程会第一时间在公众号上发布。3.1 lora_rank 调优规则lora_rank决定了适配器的表达能力。数值越大可训练参数越多模型适配复杂任务的能力越强但显存占用也相应增加。可以参考以下经验值7B 及以下模型推荐 4–8基线设为 8 即可覆盖大部分场景13B 模型推荐 8–16可根据显存情况适当调整显存紧张时可降至 2–4优先保证训练能够跑起来任务复杂度高可升至 16–32提升模型对复杂模式的拟合能力核心原则先保证显存够用再根据任务复杂度逐步提升 rank。3.2 lora_alpha 调优规则lora_alpha控制适配器对基座模型的影响强度。它与lora_rank共同决定了公式中的缩放因子α r \frac{\alpha}{r}rα​建议联动调整通用基线α r \alpha rαr如r8时alpha8可以适配 90% 以上的常规微调场景欠拟合时训练 loss 下降缓慢、验证效果不佳可将α \alphaα设为2 × r 2 \times r2×r如r8时alpha16增强微调力度过拟合时训练 loss 持续走低但验证 loss 不降反升可适当降低α \alphaα削弱微调强度保留基座模型的泛化能力核心原则保持α r \frac{\alpha}{r}rα​在 1~2 之间既能保证训练稳定又留出足够的调节空间。3.3 learning_rate 调优规则学习率是影响训练收敛速度和稳定性的关键参数。LoRA 微调通常比全参数微调可以使用稍高的学习率推荐范围1 × 10 − 4 1\times10^{-4}1×10−4~2 × 10 − 4 2\times10^{-4}2×10−4loss 震荡或发散说明学习率偏高建议适当降低如降至5 × 10 − 5 5\times10^{-5}5×10−5loss 下降极其缓慢说明学习率偏低可尝试小幅提升如升至3 × 10 − 4 3\times10^{-4}3×10−4核心原则从小值开始试探观察 loss 曲线再逐步调整。3.4 批次组合调优显存优先有效批次大小 per_device_train_batch_size×gradient_accumulation_steps建议目标有效批次不低于 8以保证梯度估计的稳定性。常见组合示例单卡批次 1梯度累积 8 → 有效批次 8单卡批次 1梯度累积 16 → 有效批次 16单卡批次 2梯度累积 4 → 有效批次 8如果显存不足优先降低单卡批次大小然后用梯度累积来补偿有效批次。核心原则在显存允许的范围内优先保证有效批次足够再考虑提升单卡批次以加快训练速度。以上就是 LoRA 训练方法的核心参数配置指南。内容虽多但每个参数的背后都有其设计逻辑。如果一次消化不完可以收藏下来在实际训练中对照着看。也欢迎大家在实际操作中遇到问题时在评论区留言交流。四、LLaMA Factory LoRA 合并参数详解在上篇文章《大模型训练全流程实战指南工具篇九——LLaMAFactory大模型训练工具使用指南》中笔者曾提到LoRA 训练出来的只是一个轻量级的“适配器”它本身并不能直接用于推理。需要将这个适配器与原始模型融合才能得到一个完整的、可独立部署的模型。这个融合过程就需要用到合并配置文件。下面就是合并配置文件的示例通常命名为test_qwen_merge_sft.yaml### Note: DO NOT use quantized model or quantization_bit when merging lora adapters### modelmodel_name_or_path:/workspace/Qwen2_5_0_5adapter_name_or_path:/workspace/test_sft/Qwen2_5_sfttemplate:qwentrust_remote_code:true### exportexport_dir:/workspace/test_sft/Qwen2_5_sft_allexport_size:5export_device:cpu# choices: [cpu, auto]export_legacy_format:false相比于训练配置文件合并配置文件的参数要简洁得多理解起来也相对容易。笔者逐项拆解。4.1 模型定义部分这部分用于指定“基础模型”和“要合并的适配器”。model_name_or_path: /workspace/Qwen2_5_0_5这是基础模型的本地路径。合并操作会把 LoRA 适配器中学到的权重变化注入到这个基础模型的对应层中。这里使用的是 Qwen2.5 0.5B 版本。adapter_name_or_path: /workspace/test_sft/Qwen2_5_sft这是LoRA 适配器的路径。使用 LLaMA Factory 进行微调后保存的并不是一个完整的全量模型而是一个很小的“补丁”文件包通常包含adapter_model.bin和adapter_config.json等文件。这个参数就是告诉工具请把这个“补丁”合并到基础模型上。template: qwen指定对话模板。不同模型家族如 Qwen、Llama、Baichuan使用的对话格式各不相同包括 system、user、assistant 的角色标记和结束符都有差异。由于基础模型是 Qwen2.5这里必须设置为qwen确保合并后的模型在调用聊天接口时格式正确。trust_remote_code: true是否信任模型仓库中的自定义代码。对于一些非标准架构的模型Qwen 系列就经常包含自定义的建模文件加载时可能需要执行这些自定义代码才能正确读取模型结构。设置为true可以避免因代码执行权限问题导致的加载失败。4.2 导出部分这部分定义了合并后模型的输出方式。export_dir: /workspace/test_sft/Qwen2_5_sft_all合并后模型的输出目录。执行合并命令后LoRA 适配器的权重会被计算并融合进基础模型最终在这个目录下生成一个完整的、可独立部署的模型文件如model.safetensors或pytorch_model.bin。你可以把这个目录当作一个全新的、可以直接用于推理的模型来使用。export_size: 5单个模型文件的大小限制单位GB。如果合并后的模型总大小超过这个值导出程序会自动将模型权重拆分成多个分片文件。例如模型总大小为 10GB设置export_size: 5后会生成两个约 5GB 的文件如model-00001-of-00002.safetensors。这种分片机制可以绕过一些文件系统对大文件的限制也是 Hugging Face 和 ModelScope 上常见的大模型分发方式。export_device: cpu指定合并运算时使用的设备。cpu在 CPU 上进行合并。虽然速度较慢但不会占用显存。如果你的显存不足以同时加载基础模型和 LoRA 适配器进行合并建议使用 CPU。auto自动选择可用设备通常是 GPU。合并速度更快但需要确保显存足够容纳基础模型和计算过程中的临时数据。需要提醒的是某些环境下使用auto可能会遇到兼容性问题如果遇到奇怪的报错可以尝试切回cpu。export_legacy_format: false决定输出文件的格式。false推荐使用safetensors格式。这是一种更安全、加载速度更快的模型存储格式能有效避免因 pickle 反序列化带来的安全风险。目前主流的大模型仓库大多采用这种格式。true使用传统的bin格式pytorch_model.bin适用于需要兼容旧代码的场景。合并完成后大家得到的就不再是一个“补丁”了而是一个完整的、可以直接本地加载步数的独立模型。这个模型既保留了基础模型的通用能力又融入了微调时学到的特定技能可以随时用于推理或进一步部署。五、总结本文系统讲解了 LLaMA Factory 的核心训练参数从全量训练、LoRA 到 QLoRA 的方法对比到LORA配置文件中每一个参数的含义与调优建议再到适配器的合并导出通过形象的比喻和详尽的内容确保大家都能掌握大模型训练的参数帮助大家真正理解大模型训练的“内功心法”从“能跑通”走向“效果好、可控”。下篇文章笔者将结合真实业务场景深入讲解如何根据训练日志动态调整参数手把手带大家学会炼出“最好的仙丹”的过程。欢迎持续关注除大模型训练外笔者也在同步更新《深入浅出LangChainLangGraph AI Agent 智能体开发》专栏要说明该专栏适合所有对 LangChain 感兴趣的学习者无论之前是否接触过 LangChain。该专栏基于笔者在实际项目中的深度使用经验系统讲解了使用LangChain/LangGraph如何开发智能体目前已更新 42 讲并持续补充实战与拓展内容。欢迎感兴趣的同学关注笔者的CSDN账号与专栏也可关注笔者的同名微信公众号大模型真好玩每期分享涉及的代码均可在公众号私信:LangChain智能体开发免费获取。

更多文章