2026年7月2日 周四晚上19:30,报名腾讯会议了解“如何构建自进化的动态知识库(Brain)”(限30人)
免费POC, 零成本试错
FDE知识库

FDE知识库

学习大模型的前沿技术与行业落地应用


收藏

从0到1微调安全大模型

发布日期:2025-06-13 20:23:23 浏览次数: 2668
作者:暴暴的皮卡丘

微信搜一搜,关注“暴暴的皮卡丘”

推荐语

从零开始学习安全大模型微调,手把手教你用开源框架打造专属AI助手。

核心内容:
1. 微调原理与优势:预训练模型+特定数据的高效迁移学习
2. 实战环境搭建:硬件配置、LLama-Factory框架与LoRA算法详解
3. 完整操作指南:从环境配置到模型蒸馏的step-by-step教程

杨芳贤
53AI创始人/腾讯云(TVP)最具价值专家

本文将详细介绍如何通过各种开源框架在本地完成安全大模型的微调,从底层模型层来优化模型,做出适合安全研究人员的大模型

微调简介

微调,指的是在一个已经经过大规模、通用数据集预训练好的基础模型上,使用相对较小规模的、特定领域或特定任务的数据集,对该模型进行进一步训练的过程。

 

  • 微调 = 预训练模型 + 特定任务数据 + 进一步训练

  • 本质:是一种高效的迁移学习方法,利用预训练模型强大的通用能力,通过少量领域/任务数据对其进行针对性优化,使其适应具体的应用需求。

  • 目的:以较低的成本(相比预训练)让“通才”模型转变为特定领域的“专家”或特定任务的“能手”。

 

 

基础环境

硬件基础

GPU: Inter GTX5060  (100%跑,勉强够用)

CPU: Inter I9-14900HX (实际上用不到)

内存:32GB

软件基础

操作系统:windows 11

框架: LLama-Factory (国产最热门的微调框架)

国内北航开源的低代码大模型训练框架,可以实现零代码微调,简单易学,功能强大,且目前热度很高,建议新手从这个开始入门,非常适合我这种小白

关于框架选择建议可以看https://www.zhihu.com/question/638803488/answer/84354509523

算法: LoRA (最著名的部分参数微调算法) 

2021 年 Microsoft Research 提出,首次提出了通过低秩矩阵分解的方式来进行部分参数微调,极大推动了 AI 技术在多行业的广泛落地应用:LoRA: Low-Rank Adaptation of Large Language Models

基座模型:DeepSeek-R1-Distill-Qwen-1.5B
蒸馏技术通常用于通过将大模型(教师模型)的知识转移到小模型(学生模型)中,使得小模型能够在尽量保持性能的同时,显著减少模型的参数量和计算需求。

 

 

 

 

实操过程

1. 搭建LLama-Factory环境

LLaMA-Factory 的 Github地址:https://github.com/hiyouga/LLaMA-Factory

克隆仓库

Plain Text                  
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git

切换到项目目录

Plain Text                  
cd LLaMA-Factory

创建 conda 虚拟环境(一定要 3.10 的 python 版本,不然和 LLaMA-Factory 不兼容)

Plain Text                  
conda create -n llama-factory python=3.10

激活虚拟环境

Plain Text                  
conda activate llama-factory

在虚拟环境中安装 LLaMA Factory 相关依赖

Plain Text                  
pip install -e ".[torch,metrics]"

注意:如报错 bash: pip: command not found ,先执行 conda install pip 即可

在虚拟环境安装 PyTorch(不安装微调的时候会报错滴)

查看自己的显卡支持的当前CUDA,windows命令为

Plain Text                  
nvidia-smi

然后去PyTorch官网上对应下载版本https://pytorch.org/get-started/locally/

Plain Text                  
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128

 

检验是否安装成功

Plain Text                  
llamafactory-cli version

启动 LLama-Factory 的可视化微调界面 (由 Gradio 驱动)

Plain Text                  
llamafactory-cli webui

成功启动后会返回一个前端链接

 

 

2. Hugging Face下载基准模型

HuggingFace 是一个集中管理和共享预训练模型的平台 https://huggingface.co;

HuggingFace数据huggingface-cli 下载:https://huggingface.co/docs/huggingface_hub/main/en/guides/cli          
从 HuggingFace 上下载模型有多种不同的方式,可以参考:
如何快速下载huggingface模型——全方法总结

创建文件夹统一存放所有基座模型

Plain Text                  
mkdir Hugging-Face

安装 HuggingFace 官方下载工具

Plain Text                  
pip install -U huggingface_hub

修改 HuggingFace 的镜像源

Plain Text                  
set HF_ENDPOINT=https://hf-mirror.com

修改模型下载的默认位置

Plain Text                  
set HF_HOME=C:\Users\H\Desktop\llm\Hugging-Face

注意:这种配置方式只在当前 shell 会话中有效,如果你希望这个环境变量在每次启动终端时都生效,可以将其添加到你的环境变量配置文件中

检查环境变量是否生效

Plain Text                  
huggingface-cli env

可以看到输入命令之后,其中的ENDPOINT已经修改为上述设置的

执行下载命令

Plain Text                  
huggingface-cli download --resume-download deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B

可以看到成功下载(PS:图中其实是之前已经下载了的)

 

 

 

3. 构造数据集

从hugging face中获取到数据集

访问https://huggingface.co/datasets?search=security 找些数据集

随便找一个web安全的数据集吧https://huggingface.co/datasets/Conard/web-security

优化数据格式为LLama-Factory的数据格式

修改 dataset_info.json 文件,添加如下配置:

Plain Text                  
"web-security": {                  
"file_name": "web-security.json"                  
},

将数据集 web-security.json 放到 LLama-Factory 的 data 目录 下

 

4. Llama Factory 微调

 

加载基准模型

语言先选择中文之后,在模型里边直接输入之前下载的会自动筛选,最重要的是下载下来的模型文件路径,注意:这里的路径是模型文件夹内部的模型特定快照的唯一哈希值,而不是整个模型文件夹

然后就可以选择chat 加载模型,之后随便输入,当看到模型返回信息时证明模型已经成功加载并跑起来了

 

微调配置

按照下图选一下,这里除了微调算法、数据集之外,剩下的超参数其实是按照默认的(具体参数可根据情况改动哈)

选择微调算法 Lora

添加数据集 web-security

修改其他训练相关参数,如学习率、训练轮数、截断长度、验证集比例等

  • 学习率(Learning Rate):决定了模型每次更新时权重改变的幅度。过大可能会错过最优解;过小会学得很慢或陷入局部最优解

  • 训练轮数(Epochs):太少模型会欠拟合(没学好),太大会过拟合(学过头了)

  • 最大梯度范数(Max Gradient Norm):当梯度的值超过这个范围时会被截断,防止梯度爆炸现象

  • 最大样本数(Max Samples):每轮训练中最多使用的样本数

  • 计算类型(Computation Type):在训练时使用的数据类型,常见的有 float32 和 float16。在性能和精度之间找平衡

  • 截断长度(Truncation Length):处理长文本时如果太长超过这个阈值的部分会被截断掉,避免内存溢出

  • 批处理大小(Batch Size):由于内存限制,每轮训练我们要将训练集数据分批次送进去,这个批次大小就是 Batch Size

  • 梯度累积(Gradient Accumulation):默认情况下模型会在每个 batch 处理完后进行一次更新一个参数,但你可以通过设置这个梯度累计,让他直到处理完多个小批次的数据后才进行一次更新

  • 验证集比例(Validation Set Proportion):数据集分为训练集和验证集两个部分,训练集用来学习训练,验证集用来验证学习效果如何

  • 学习率调节器(Learning Rate Scheduler):在训练的过程中帮你自动调整优化学习率

 

开启微调

点击开始,此时就会调用电脑的GPU、CPU开始进行微调工作了,只需要等上那么八八四十九天

可以看到在漫长的一段时间(最起码2h),终于得到了微调后的模型

当微调完毕后可以通过观察损失曲线的变化观察最终损失来了解本次的微调效果,这里由于随便给的参数,所以数据结果也不重要了,实际上还凑合吧

检查点:保存的是模型在训练过程中的一个中间状态,包含了模型权重、训练过程中使用的配置(如学习率、批次大小)等信息,对LoRA来说,检查点包含了训练得到的 B 和 A 这两个低秩矩阵的权重

若微调效果不理想,你可以:

  • 使用更强的预训练模型

  • 增加数据量

  • 优化数据质量(数据清洗、数据增强等,可学习相关论文如何实现)

  • 调整训练参数,如学习率、训练轮数、优化器、批次大小等等

 

直接看结果吧,我们将刚才的微调后的数据加载到检查点路径,然后重新卸载、加载下模型,问他一个安全问题,可以看到结果还是挺不错滴!!!

 

5. 玩上微调后的模型

导出微调后的模型

等待一会,基本上一两分钟吧,就可以导出成功

 

 

FastAPI框架构造应用

使用Python FastAPI框架快速搭建一个服务端应用

Python                  
from fastapi import FastAPI                  
from transformers import AutoModelForCausalLM, AutoTokenizer                  
import torch                  

app = FastAPI()                  

# 模型路径                  
model_path = ""                  

# 加载 tokenizer (分词器)                  
tokenizer = AutoTokenizer.from_pretrained(model_path)                  

# 加载模型并移动到可用设备(GPU/CPU)                  
device = "cuda" if torch.cuda.is_available() else "cpu"                  
print("使用设备:", device)                  
model = AutoModelForCausalLM.from_pretrained(model_path).to(device)                  

@app.get("/generate")                  
async def generate_text(prompt: str):                  
    # 使用 tokenizer 编码输入的 prompt                  
    inputs = tokenizer(prompt, return_tensors="pt").to(device)                  
    
    # 使用模型生成文本                  
    outputs = model.generate(inputs["input_ids"], max_length=150)                  
    
    # 解码生成的输出                  
    generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)                  
    
    return {"generated_text": generated_text}

小提示在windows下transformers本身有点编码不兼容的问题,需要修改下这个包中的源代码

修改完后加载起来,可以看到成功run起来啦

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询

扫码登录
登录即表示您同意《53AI网站服务协议》
服务协议

欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。

在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。

一、 定义

本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。

会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。

知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。

二、 账号注册与登录

登录方式:本网站支持以下登录方式,您可根据实际情况选择:

微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。

手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。

账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。

实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。

未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。

三、 服务内容与规范

知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。

服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。

禁止行为:您在使用服务时不得实施以下行为:

利用技术手段批量爬取、下载、转存知识库内容;

将知识库内容用于商业目的或未经授权地向第三方传播;

干扰本网站正常运行或侵犯其他用户合法权益;

发布违法违规信息或从事违反公序良俗的活动。

四、 知识产权声明

权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。

有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。

侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。

五、 个人信息保护

我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。

您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。

您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。

六、 免责声明

内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。

不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。

第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。

七、 违约责任

如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。

如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。

八、 法律适用与争议解决

本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。

因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。

九、 其他

本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。

本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。

我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。


已查阅