LLaMA Factory微调全攻略(四):从LOSS曲线观测到模型部署的完整指南

LLaMA Factory微调全攻略(四):从LOSS曲线观测到模型部署的完整指南

本文详解大模型微调过程中LOSS曲线的观测方法,介绍微调后模型的合并、导出与部署流程。通过SwanLab监控训练过程,并使用Ollama和VLLM两种方式实现本地部署,最后对比模型微调前后的效果,验证微调成效。从训练监控到模型部署,为大模型应用提供完整解决方案。

前排提示,文末有大模型AGI-ZEEKLOG独家资料包哦!

微调过程观察

微调过程中,我们可以通过右下角的 LOSS 曲线来简单观测整个微调过程。

LOSS(损失值)

在模型微调中,LOSS(损失函数)是一个可微的数学函数,它量化了模型预测结果与真实目标值之间的误差(输出为一个标量数值)。微调的核心目标就是通过优化算法(如梯度下降)持续最小化这个 LOSS 值:计算 LOSS 对模型参数的梯度,并据此调整参数,使预测误差不断减小。LOSS 值的高低直接反映了模型预测的准确性,其持续下降是学习过程有效的关键指标。

  • LOSS 是什么?
  • 简单说,LOSS 就是模型在微调过程中犯错误的“程度”的评分,它是一个数字。
  • 怎么算出来的?
  • 模型对一条数据做预测(比如判断图片是猫还是狗)。然后,我们把模型的预测结果和这条数据的正确答案拿出来对比。
  • 对比什么?
  • 对比模型“猜”得有多不准。猜得越离谱,这个错误评分(LOSS)就越大;猜得越接近正确答案,这个错误评分(LOSS)就越小。
  • 微调时用它干什么?
  • 微调的核心目标就是让模型少犯错。所以,微调过程就是想尽办法让这个 LOSS(错误评分)变得越来越小。
  • 怎么变小?
  • 模型内部有很多可以调整的小旋钮(参数)。微调算法会根据当前这个 LOSS 值,自动计算出应该拧哪些旋钮、往哪个方向拧(增大一点还是减小一点),才能让下次遇到类似数据时,错误评分(LOSS)降低一些。
  • 为什么关心它?
  • 在微调过程中,我们主要盯着 LOSS 的变化趋势。如果 LOSS 稳定地下降,说明模型的调整是有效的,它在学习,错误在减少。如果 LOSS 不降反升或者剧烈波动,就说明学习过程可能出了问题。
  • 常见误区
  • LOSS 曲线很好看(逐步下降趋于平缓),不代表模型最终的训练效果一定会好,它只能表示整个训练过程是没问题的。

SwanLab

在 LLaMA Board 中,我们只能看到简单的 LOSS ,如果想看到更多维度的指标,可以通过 SwanLab、TensorBoard、Wandb 等可视化工具,这里我是用的是 SwanLab。

SwanLab 是一个开源的训练跟踪与可视化工具,云端和离线均可使用,支持超参数记录、指标记录、多实验对比、硬件监控、实验环境记录等功能,可以有效地帮助开发者管理实验。

在 LLaMA Facroty 中国为 SwanLab 单独开了一个 Tab,可以选择启用,并填写一个项目名称:

注意使用前,我们先要在 https://swanlab.cn/ 注册好账号,然后在本地环境完成初始化动作:

swanlab login 

当你看到如下提示时:

swanlab: Logging into swanlab cloud. swanlab: You can find your API key at: https://swanlab.cn/settings swanlab: Paste an API key from your profile and hit enter, or press 'CTRL-C' to quit: 

在用户设置页面复制你的 API Key,粘贴后按下回车即可完成登录,之后无需再次登录。 如果配置成功,在启动微调任务后可以看到 SwanLab 的监控地址:

进入后,我们可以看到微调过程中的详细日志:

以及当前系统环境的硬件消耗情况:

几种常见的 LOSS 曲线

Train LOSS 与 Eval LOSS

当我们在微调参数中设定了一定的验证集比例,将会多生成一条 Eval LOSS 曲线,体现模型在验证集上的表现。

微调后模型使用及效果验证

加载模型(通过 Lora 适配器)

微调任务完成后,我们进入在启动微调时,设定的输出目录:

cd /root/autodl-tmp/models/security007 

可以看到输出的所有文件:

包括这几类:

  1. 模型权重文件
  • adapter_model.safetensors:LoRA 适配器的权重文件(核心增量参数)
  • checkpoint-100/200/…:不同步数的训练检查点(含模型参数,用于恢复训练)
  1. 配置文件
  • adapter_config.json:LoRA 训练配置(如秩、目标层等)
  • tokenizer_config.json / special_tokens_map.json:分词器配置
  • training_args.yaml / training_args.bin:训练超参数(学习率、批次等)
  1. 日志与结果
  • trainer_log.jsonl / running_log.txt:训练过程日志
  • all_results.json / train_results.json:训练指标(损失、精度等)
  • training_loss.png:损失曲线可视化图
  1. 分词器数据
  • merges.txt:BPE 分词合并规则
  • tokenizer.json / vocab.json:分词器词表与编码规则
  • added_tokens.json:训练中新增的自定义 Token
在 LoRA 微调中,只会训练插入的低秩矩阵(适配器),原模型参数被冻结不变,因此输出目录中仅包含 Lora 适配器,不包含模型原始权重。如果要得到微调后的完整模型,需后续手动合并适配器与原模型。

下面,我们可能想快速对微调后的模型效果进行简单的验证,可以在 Webui 中通过检查点路径,加载这个适配器,并且重新加载模型,注意检查点路径填写微调后的输出目录,模型路径还填写微调前基础模型的路径:

效果验证(注意调一下最大生成长度,默认的 1024 比较小,非常容易截断):

作为对比,可以直接去掉上面的检查点路径,重新加载(先卸载)模型,就可以得到原始模型的回答结果:

模型合并和导出

以上的使用方式只适用于临时测试,后续使用微调后的模型我们不可能每次都同时加载一个适配器和模型,所以为了后续方便使用,我们需要将原始模型和 Lora 适配器进行合并,然后导出。

我们重新把微调输出目录填入检查点路径,然后重新加载模型,并设定一个导出目录(这里可以设定模型输出后的量化等级、以及一键上传 Hugging Face 等等,大家可以选择设置):

导出成功后,我们进入导出目录,可以看到合并后的模型文件:

cd /root/autodl-tmp/save/Qwen2.5-7B-Instruct-Security 

然后我们清空检查点路径,将合并后的模型目录填入模型路径,重新加载模型:

重新测试,可以得到和之前一样的效果:

本地调用微调后的模型

下面我们要考虑在本地部署并通过 API 的方式调用微调后的模型,目前两个主流的本地部署模型的方案分别是 Ollama 和 VLLM:

Ollama 是一款专注于本地部署的轻量级大模型工具,以 “开箱即用” 为核心理念,支持全平台,一键安装后即可通过命令行快速启动模型。它内置 1700 + 主流模型库(如 Llama、Qwen、Mistral),自动下载优化后的量化版本(如 int4 量化),显存占用降低 50%,14B 模型仅需 11GB 显存即可运行。Ollama 提供类 ChatGPT 的交互界面,支持流式输出和 JSON 响应,适合个人开发者快速验证模型能力、本地测试或对隐私敏感的场景(如医疗数据处理),且兼容 CPU 推理(需 16GB + 内存)和 GPU 加速,硬件门槛极低。最新版本已支持视觉模型,可处理多模态任务。
VLLM 是专为高性能推理设计的企业级框架,基于PyTorch构建,创新性引入 PagedAttention 技术,将KV Cache分块存储,显存利用率提升30%,支持4K以上长文本推理。其动态批处理技术实现高吞吐量(如Llama-8B在H100上可达5000+ tokens/s),是 Ollama 的5倍,并原生支持多 GPU 张量并行,可在 8 台H100 服务器上部署 70B 模型,支撑日均1亿次请求,响应延迟<500ms。VLLM 兼容 HuggingFace 模型,提供 Prometheus 监控和自动故障恢复机制,适合电商搜索、智能客服等高并发场景,以及多模态任务。
  • 选 Ollama:需求为快速部署、低硬件门槛、交互式对话,例如个人开发者测试模型、小型团队搭建内部工具。
  • 选 VLLM:需求为高性能推理、高并发处理、多GPU扩展,例如电商平台支撑亿级请求、科研机构处理大规模数据,或需定制化模型参数的场景。

通过 vLLM调用

在 LLaMA Factory 中,提供了 llamafactory-cli api 命令来帮助我们快速将模型部署为 API 调用,通过指定 --infer_backend vllm 参数可以启用 VLLM 推理(如果不指定,默认使用的是 Huggingface 推理引擎):

API_PORT=6006 API_MODEL_NAME=security llamafactory-cli api \ --model_name_or_path /root/autodl-tmp/models/security1011 --template qwen \ --infer_backend vllm \ --vllm_enforce_eager 

环境变量:

  • API_PORT=6006:设定 API 服务要监听的端口号为6006。
  • API_MODEL_NAME=security:给 API 服务所使用的模型设定一个自定义名称,如果不指定默认会使用 gpt-3.5-turbo。

命令行参数

  • –model_name_or_path /root/autodl-tmp/save/Qwen2.5-7B-Instruct-Security:指定模型的路径。
  • –template qwen:指定对话模板为 Qwen 这样能确保输入输出的格式和 Qwen 模型相适配。
  • –infer_backend vllm:把推理后端设置为 vLLM。
  • –vllm_enforce_eager:强制 vLLM 用动态图模式,这种模式在调试或者需要确定性执行顺序时非常有用。

当服务输出以下内容时表示成功启动:

我们通过 http://localhost:6006/docs 可以访问部署后的 API 接口文档(可以看到是符合 OPEN AI 格式的):

我们尝试获取模型列表,可以看到返回了我们指定好的 security 模型:

我们可以尝试在一些聊天客户端添加自定义提供商:

测试调用:

通过 Ollama 调用

Ollama 是建立在 llama.cpp 开源推理引擎基础上的大模型推理工具框架,其主要支持运行 GGUF 格式的模型。

GGUF(GGML Universal File)是专为大型语言模型(LLM)设计的文件格式,其优化了数据的存储方式,减少了存储空间的占用,这对于包含大量参数的大型模型尤为重要。

相比于默认的 BF16 精度(每个参数占用 16 位(2 字节)),4BIT 量化(每个参数仅占用 4 位(0.5 字节))可以将模型推理的显存占用降低 75%。所以使用 Ollama 运行 7B 的模型大概仅需要 4G 显存(考虑到其他开销实际可能更大一点)。但是量化后的模型也就意味着会损失一定精度,这也是为什么大家在使用 Ollama 运行模型总觉得会比和其他方式运行模型变得 “更傻” 的原因。

LLaMA Factory 默认并没有将模型转换为 GGUF 的方法,我们需要自己 llama.cpp 的仓库,使用其中的转换脚本:

git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp/gguf-py pip install --editable . 

下载并安装好依赖后,我们执行其中的脚本,将模型目录指定为我们刚刚导出的合并好的目录:

python convert_hf_to_gguf.py /root/autodl-tmp/save/Qwen2.5-7B-Instruct-Security --outtype q8_0 

开始转换:

转换成功后,将在微调后合并的模型目录下生产一个 GGUF 文件(/root/autodl-tmp/save/Qwen2.5-7B-Instruct-Security/Qwen2.5-7B-Instruct-Security-F16.gguf):

然后我们在本地安装 Ollama:

curl -fsSL https://ollama.com/install.sh | sh 

安装完成后,启动 Ollama:

OLLAMA_MODELS=/root/autodl-tmp/ollama ollama serve 

然后我们将刚刚导出好的 GGUF 文件给定Ollama进行注册(注意这里指定的是Modelfile文件,而不是GGUF文件):

OLLAMA_MODELS=/root/autodl-tmp/ollama ollama create security -f /root/autodl-tmp/save/Qwen2.5-7B-Instruct-Security/Modelfile 

然后我们就可以使用 Ollama 运行模型了:

ollama run security 

对比模型微调的效果

为了方便验证和对比模型微调后的效果,我们在 Easy Dataset 提供的 Playground 进行测试,这里我们使用 VLLM 部署的服务(不损失精度、推理速度更快),我们在模型配置中添加这个模型。这里只有接口地址、模型名称是要准确填写的,提供商、API 密钥可以随意填写:

然后这里我们使用硅基流动提供的 Qwn2.5-7B-Instruct 作为基础模型,和微调后的模型(Security)进行对比:

以下是从多个角度的详细对比:

从对比可以得出结论,相比微调前的基础模型(Qwen2.5-7B-Instruct),模型微调后:

  • 在数据集内部的特定问题上,具备推理能力,并且回答结果更丰富,说明学习到了数据集内部的知识;
  • 在 Web 安全领域的特定问题上(不在数据集内),具备推理能力,并且回答结果更丰富,说明模型的泛化能力较好,没有过拟合;
  • 在 Web 安全整体的知识体系上,具备推理能力,并且回答结果更丰富,说明模型能够系统性整合 Web 安全领域的知识框架,形成结构化的知识输出体系,同时具备跨知识点的关联推理能力,可基于底层逻辑对复杂知识体系进行演绎构建;
  • 在非 Web 安全的某些其他领域上,具备推理能力,说明模型在聚焦 Web 安全领域专业能力强化的同时,未丧失基础模型的跨领域知识迁移能力,能够基于微调形成的推理框架对非专业领域问题进行逻辑拆解,保持了基础模型的知识泛化性与多领域适应性。

今天这一期,我们就讲到这里,下一期,我会带大家一起学习如何有效评估微调后的模型的效果。
读者福利:倘若大家对大模型感兴趣,那么这套大模型学习资料一定对你有用。

针对0基础小白:

如果你是零基础小白,快速入门大模型是可行的。
大模型学习流程较短,学习内容全面,需要理论与实践结合
学习计划和方向能根据资料进行归纳总结

包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

请添加图片描述

👉AI大模型学习路线汇总👈

大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)


第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

👉大模型实战案例👈

光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述
👉大模型视频和PDF合集👈

这里我们能提供零基础学习书籍和视频。作为最快捷也是最有效的方式之一,跟着老师的思路,由浅入深,从理论到实操,其实大模型并不难

在这里插入图片描述
👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

👉获取方式:

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

Read more

Flutter 三方库 flutter_connectivity 的鸿蒙化适配指南 - 实现具备网络类型感知与连通性自愈的状态管理、支持端侧多网融合环境下的业务自适应实战

Flutter 三方库 flutter_connectivity 的鸿蒙化适配指南 - 实现具备网络类型感知与连通性自愈的状态管理、支持端侧多网融合环境下的业务自适应实战

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 flutter_connectivity 的鸿蒙化适配指南 - 实现具备网络类型感知与连通性自愈的状态管理、支持端侧多网融合环境下的业务自适应实战 前言 在进行 Flutter for OpenHarmony 的全场景应用开发时,网络状态的剧烈波动(如从 WiFi 切换到 4G/5G,或进入无信号的电梯)是影响用户体验的关键因素。如何实现毫秒级的网络类型探测并据此优化 UI 策略?flutter_connectivity(或其增强分支)是处理此类需求的经典库。本文将探讨如何在鸿蒙端构建极致灵敏的网络状态感知体系。 一、原直观解析 / 概念介绍 1.1 基础原理 该库通过监听鸿蒙系统的网络状态变更广播(Broadcast)或利用端侧轮询机制,实时捕获当前活跃网络接口(Interface)的变化。它将复杂的系统底层网络状态抽象为 wifi, mobile,

By Ne0inhk
HarmonyOS 5.0 PC应用开发实战:构建跨设备协同的桌面生产力工具

HarmonyOS 5.0 PC应用开发实战:构建跨设备协同的桌面生产力工具

文章目录 * 每日一句正能量 * 前言 * 一、HarmonyOS PC应用开发背景与机遇 * 1.1 生态发展现状 * 1.2 技术架构特点 * 二、实战项目:跨设备Markdown编辑器 * 2.1 项目需求分析 * 2.2 技术选型 * 三、核心代码实现 * 3.1 工程架构搭建 * 3.2 PC端响应式布局 * 3.3 分布式数据同步实现 * 3.4 PC端多窗口管理 * 3.5 键盘快捷键系统 * 四、跨设备协同场景实战 * 4.1 手机拍照插入PC文档 * 4.2 平板手绘同步到PC * 五、性能优化与最佳实践 * 5.1

By Ne0inhk
鸿蒙金融理财全栈项目——生态合作、用户运营、数据变现优化

鸿蒙金融理财全栈项目——生态合作、用户运营、数据变现优化

《鸿蒙APP开发从入门到精通》第24篇:鸿蒙金融理财全栈项目——生态合作、用户运营、数据变现优化 🚀🤝📈 内容承接与核心价值 这是《鸿蒙APP开发从入门到精通》的第24篇——生态合作、用户运营、数据变现优化篇,100%承接第23篇的性能优化、安全加固优化、合规审计优化架构,并基于金融场景的生态合作、用户运营、数据变现优化要求,设计并实现鸿蒙金融理财全栈项目的生态合作、用户运营、数据变现优化功能。 学习目标: * 掌握鸿蒙金融理财项目的生态合作设计与实现; * 实现生态合作协议、生态合作接口、生态合作数据; * 理解用户运营优化在金融场景的核心设计与实现; * 实现用户分群优化、用户画像优化、用户留存优化; * 掌握数据变现优化在金融场景的设计与实现; * 实现广告变现优化、付费变现优化、数据产品变现优化; * 优化金融理财项目的用户体验(生态合作、用户运营、数据变现优化)。 学习重点: * 鸿蒙金融理财项目的生态合作设计原则; * 用户运营优化在金融场景的应用; * 数据变现优化在金融场景的设计要点。 一、 生态合作基础 🎯 1.1 生态

By Ne0inhk
AIGC时代的必备技能:提示词工程(Prompt Engineering)全面指南

AIGC时代的必备技能:提示词工程(Prompt Engineering)全面指南

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为ZEEKLOG博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的知识进行总结与归纳,不仅形成深入且独到的理解,而且能够帮助新手快速入门。 本文主要介绍了AIGC时代的必备技能:提示词工程(Prompt Engineering)全面指南,可点击学习完整版视频课程,希望对学习大语言模型的同学们有所帮助。 文章目录 * 一、提示词的基本概念 * 1.1 什么是提示词? * 1.2 提示词的功能特性 * 1.3 提示工程的重要性 * 二、提示词的基本构成要素 * 2.1 提示词是一门学习引导AI思考的艺术 * 2.2 四大核心组成部分 * 2.2.1 指令(Instruction) * 2.2.2 上下文(

By Ne0inhk