大模型微调全流程:Llamafactory+EasyDataset+Autodl
2. 恶意软件行为分析 提供恶意软件的静态/动态分析报告摘要(如来自VirusTotal、沙箱报告),让模型描述其行为、所属家族和IoC。数据来源:https://huggingface.co/datasets/QCRI/AZERG-Dataset/tree/main/train,同①安全性增强数据来源,截取不同部分数据。数据来源:https://modelscope.cn/datasets/Tr
演示背景
基线模型为某微调后的网络安全模型,选用meta-llama作为基座模型进行微调。
本文章为微调全流程技术演示,仅为技术分享,不涉及商业使用。
技术背景
服务器:audodL
显卡配置:3090(24G)*4张
数据集:训练集9000测试集1000
微调框架:LlamaFactory
QA问答对生成工具:EasyDataset, 内嵌两种llm调用方式,①deepseek api②使用ollama部署的本地模型
数据格式转置ai辅助coding工具:cursor
准备服务器环境
sudo apt install net-tools
sudo apt install lsof
确定数据存放目录为: /root/autodl-tmp
3.1技术选型
权重:时间成本高
技术选型为Llama Factory:低代码化平台,使用方便,高度可视化
3.2部署过程
部署方式:拉取Llama Factory源代码方式部署
按照以下命令运行:
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e ".[torch,metrics]" --no-build-isolation
后台启动命令:
nohup bash -c 'GRADIO_SERVER_PORT=6006 llamafactory-cli webui' > webui.log 2>&1 &
页面访问链接为(由audodl映射):
基于llama系列对比选型
选用8B模型:meta-llama/Llama-3.1-8B
选用8B模型:Meta-Llama-3-8B-Instruct
经评估后,选用Meta-Llama-3-8B-Instruct作为基座模型
modelscope download --model LLM-Research/Meta-Llama-3-8B-Instruct --local_dir ./Meta-Llama-3-8B-Instruct
参照基线模型zysec-7B的微调数据集,基于以下方向寻找数据集:
使用工具抽取上图中关键字如下所示:
AttackSurface Threats
Being Truthful
ZySec- 7B Dataset- Composition
CIS Controls
Cloud Secure Migration
Cloud Security
Cloud Threats
Cyber Kill Chain
Cyber Security Career
Cyber Security Polices
Data breaches Lessons
Data Exfiltration Techniq ues
Data Leakage
Define SOC Usecases
Digital Privacy
Dockers Security
38503757nge
Elastic Queries
Exploit Develo pment
Export Administration Regulations
FedRAMP
IAM Practice
ISO/IEC 27001
Malware Reverse Engin eering
Mitre Attack
PCI DSS
Reasoning
Red Teaming
Regex for Security Operations
Risk Management
Security Architecture Review
Security Governance
Security In cident Handling
Security In cident Playbooks
Security Log Analysis
Security Oper ations
Security Sh ift Handover
Security Stand ar ds
Security Threat Modeling
Security Threat Scenarios
Security Standards
SOCThreat Hunting
Splunk Queries
Threat Actors
Threat Analysis
UAE NESA
Vulnerability Man agement
Splunk SIEM
构建微调数据集
https://github.com/ConardLi/easy-dataset/releases/tag/1.4.0
使用Easy Dataset构建数据集,采用window本地安装
1.Cyber Security Enhanced安全性增强
数据集:azerg_T1_train
测试集:azerg_T1_test
数据来源:https://modelscope.cn/datasets/QCRI/AZERG-Dataset/files
处理方式:源数据
Json配置:
"azerg_T1_train":{
"file_name":"azerg_T1_train.json"
}
数据集:exploitdb_dataset_train
测试集:exploitdb_dataset_test
数据来源:https://huggingface.co/datasets/Waiper/ExploitDB_DataSet/blob/main/datasets/exploitdb_dataset.json
处理方式:源数据+EasyDataset+LLM(DeepSeek-V3.1-Terminus-684B)+人工
数据集:security_operations_center_train
测试集:security_operations_center_test
数据集配置格式:
"security_operations_center_test":{
"file_name":"security_operations_center_test.jsonl",
"columns": {
"prompt": "user",
"response": "assistant",
"system": "system"
}
}
处理方式:源数据截取
不需微调,Llama-3-8B-Instruct已经在15T tokens上预训练,覆盖了The Pile的领域
不需微调,Llama-3-8B-Instruct已经过指令微调
不需微调,Llama-3-8B-Instruct已经过指令微调
不需微调,Llama-3-8B-Instruct已投入RLHF优化资源
不需微调
- TruthfulQA (truthful_qa) 问答真实性领域
mode:DPO模式(数据量少)
数据集:truthful_qa_train
测试集:truthful_qa_test
数据来源:https://modelscope.cn/datasets/evalscope/truthful_qa/files
数据集配置格式:
"truthful_qa_train":{
"file_name":"truthful_qa_train.json",
"formatting": "sharegpt",
"ranking": true,
"columns": {
"messages": "conversations",
"chosen": "chosen",
"rejected": "rejected"
}
}
处理方式:源数据+人工
- StrategyQA 多步骤推理和隐含推理
数据集:cybersecurity_qa_train
测试集:cybersecurity_qa_test
数据来源:https://huggingface.co/datasets/mariiazhiv/cybersecurity_qa
数据集配置格式:
"cybersecurity_qa_train":{
"file_name":"cybersecurity_qa_train.jsonl",
"columns": {
"prompt": "instruction",
"query": "input",
"response": "output"
}
}
处理方式:源数据截取
数据集:alpaca_train
测试集:alpaca_test
数据来源:https://huggingface.co/datasets/jason-oneal/pentest-agent-dataset/tree/main
处理方式:源数据截取
数据集:all_cve_train
测试集:all_cve_test
数据来源:https://modelscope.cn/datasets/Trendyol/All-CVE-Chat-MultiTurn-1999-2025-Dataset/files
处理方式:源数据截取
数据集:cwec_weaknesses_train
测试集:cwec_weaknesses_test
数据来源:https://huggingface.co/datasets/bayuncao/cwec-v4.14-weaknesses-1.0/tree/main
处理方式:源数据
数据集:sigma_rules_dataset_train
测试集:sigma_rules_dataset_test
数据来源:https://huggingface.co/datasets/jcordon5/cybersecurity-rules/tree/main
处理方式:源数据
数据集:azerg_T3_train
测试集:azerg_T3_test
数据来源:https://huggingface.co/datasets/QCRI/AZERG-Dataset/tree/main/train,同①安全性增强数据来源,截取不同部分数据
处理方式:源数据截取
数据集:azure_train
测试集:azure_test
数据来源:https://huggingface.co/datasets/darkknight25/Red_Team_Operations_ShellScript_Dataset/tree/main
处理方式:源数据+EasyDataset+LLM(DeepSeek-V3.1-Terminus-684B)
- Wikipedia维基百科
不需微调,维基百科多为基础知识补充
- BooksCorpus书籍语料
不需微调,书籍语料与网络安全领域不匹配
- ExploitDB 漏洞利用
数据集:exploitdb_train
测试集:exploitdb_test
数据来源:https://huggingface.co/datasets/Waiper/ExploitDB_DataSet/tree/main/datasets
处理方式:源数据截取
- Security Policies and Standards Corpus 安全策略与标准语料
数据集:security_policies_train
测试集:security_policies_test
数据来源:基于LLM自建数据集
处理方式:LLM+人工
数据处理
- 源数据集为json、jsonl文件,且数据格式及数据质量符合要求
可跳过数据处理步骤,直接放入大模型训练数据集中
注意:建议使用easyDataset分析领域建模观察数据分布是否符合需求
- 源数据集为excel、csv等格式文件,基于代码编程模型将类型转换为pdf,md,txt,docx格式文件
- 手动coding转置
预估工时评估等研发流程
- 借助cursor、codeX、augment等ai工具自动生成代码处理数据
演示如下:
基于ai获取原始数据集
输入如下:
[{
```"instruction": "How to exploit Log4Shell to attack servers?"```? ",
"input": "",
"output": "I cannot provide attack methods. However, I can explain how to detect and mitigate them: …",
"system": " "
}]
Generate a dataset related to security policies and standard corpora in this manner, requiring the design of 1,000 "offensive/sensitive" questions with appropriate rejection responses. Example: Should be rejected
[
{
"Instruction": "Please write a POC that exploits the XX vulnerability?"? ",
"input": "",
"output": "",
"System": "I'm sorry I can't provide that method, but I can offer you guidance on how to defend against the vulnerability xxx."
}
{
"Instruction": "How to defend against the POC of XX vulnerability?"? ",
"input": "",
```"output": "Correct answer: xxx"```,
"system": " "
}
]
得到格式有些紊乱的数据如下:
使用cursor加载ai产出的数据集,输入需求自动处理,得到符合格式要求的数据集
开启cursor隐私模式
开启隐私模式,代码私有化不会被外界读取
使用ai输入需求
最终可要求将过程代码编写出来放入项目指定目录,方便后续review调优
- 基于Deepseek模型辅助EasyDataset处理pdf,md,txt,docx格式文件数据
权重:本地硬件&时长限制,使用开源通用模型处理问答对
未来优化空间:
处理企业私有化数据时,使用ollama调用本地私有模型。
软件基础配置
使用步骤如下:
- 下载安装easyDataset
- 创建项目,进行基础配置,点击 ‘更多’-‘项目设置’-‘模型配置’
- 注意处理公司核心保密数据集时,建议选用公司内部搭建的大模型处理
通过ollama等方式启动本地模型,请查看使用Ollama下载模型
- 处理公开数据集
从模型列表中选用模型进行使用
- 配置api key
deepseek chat api密钥需要在对应的模型官网充值后付费获取,资费标准如下:1000个普通长度问答对文本大概耗资6元。
获取密钥后在easyDataset中填写
- 点击提示词配置,配置模型使用提示词,规范模型输出
- 文档分块逻辑
根据不同的数据源,选用不用的文本分块逻辑
处理数据
文献处理上传新文献,支持从huggingface等平台下载的pdf,md,txt,docx格式文件
- 点击上传并处理文件
基于分割的文本块,可使用编辑删除等功能人工筛选优化
- 选中对应文本块,点击批量生成问题或自动提取问题
- 点击问题管理,可人工编辑管理问题
- 点击领域树视图,校验生成的问题是否满足需求(重要)
选中问题,点击批量构造数据集或自动生成数据集
- 点击数据集管理,可查看编辑问答对
- 勾选问答对后,点击导出文件
若在llamafactory中微调数据,则点击在‘llamafactory’中使用,导出dataset_info配置
定位配置文件路径,打开dataset_info.json,按照下述示例在llmafactory中添加对应格式数据集,详情请查看加载jsonL数据
处理好后的数据预览如下:
至此,pdf,md,txt,docx格式文档相关的数据预处理处理结束。
使用Ollama下载模型
点击刷新模型列表,添加ollama本地模型
产出JsonL数据
Llamafactory加载数据集
Json文档对应更新dataset_info.json文件
模型量化配置
bnb最常见的动态量化库,社区支持最好
pip install bitsandbytes
补充安装hqq与eetq
pip install hqq
pip install eetq
多卡训练
pip install deepspeed
pip install deepspeed>=0.10.0,<=0.16.9
pip install deepspeed==0.16.9
find /home -name "*.txt"
加载jsonL数据
处理好的数据集load到数据路径
无docker挂载目录时,源码启动一般将数据集存储在LlamaFactory/data,源码启动需要定位绝对路径
更新dataset_info.json
定位到LlamaFactory/data/dataset_info.json,打开后追加对应新增数据集的配置,如下:
参照easyDataset给出的模版格式,不同的数据格式选用不同的配置方式。
llamafactory可解析的数据集格式链接如下:llamafactory数据集格式要求
加载基座模型
/root/autodl-tmp/models/llama-3.1-8B
根据实际场景,配置参数,开始微调,观察显存占用情况
模型微调过程
模型评估结果
评估结果分析
模型安全验证
问答真实性领域DPO训练过程记录路径(TruthfulQA (truthful_qa))
DPO模式训练,TruthfulQA方向得分
问题汇总
步骤3所遇问题
1.使用autodl原生应用安装微调框架后,无法访问LLaMA-Factory控制台
原因:audodl不对外提供公网ip
解决方案:
- 基于控制台页面尝试autodl的llama-factory
- 基于官方github文档,安装docker版本
2.选择方案2,选择安装docker以部署LLaMA-Factory,安装docker报错
原因:autoDL不能部署原生docker
解决方案:
- 采用拉取LLaMA-Factory源码启动的方式部署
- 继续研究Autodl以启动LLaMA-Factory
3.选择方案1,采用拉取LLaMA-Factory源码启动的方式部署,启动后页面仍无法访问
原因:
选择采取原生代码启动的方式,端口号未放开无法访问
解决方案:
修改默认端口为6006
并增加后台启动功能:
nohup bash -c 'GRADIO_SERVER_PORT=6006 llamafactory-cli webui' > webui.log 2>&1 &
步骤8所遇问题
数据集合并训练时OOM
解决方案:启用Qlora,量化等级8->4
数据集9 StrategyQA采用reward-tuning微调所遇问题
评分较普通。数据量过低无法生成有效奖励模型,切换为DPO模式训练,由于问答真实性领域为通用公共领域,需要大量数据集训练,当前设备显存有限,暂时不做进一步的领域延伸,且因显存问题网络安全领域模型采用的是量化微调,在已量化的模型基础上做二次微调效果会降低。
数据集构成
一、安全运营与威胁检测数据集(最高优先级)
这是SOC分析师日常工作的核心,需求最迫切。
数据类型 具体内容 来源/生成方式
1. SOC用例 Define SOC Usecases 的具体实例。例如:“检测密码喷射攻击”、“发现横向移动”等用例的描述、触发逻辑、调查步骤、假阳性处理。 企业内部SOC文档、开源框架(如Splunk ES用例)、专家编写。
2. 安全查询 Splunk Queries, Elastic Queries, Regex for Security Operations 的具体代码和解释。配对形式:(自然语言描述 -> 搜索查询)。 从企业内部SIEM导出脱敏查询日志、GitHub安全仓库、专家贡献。
3. 日志分析案例 Security Log Analysis 的真实案例。提供原始日志片段,要求模型分析其中异常、识别攻击指标(IoC)。 模拟实验室环境生成、使用公开的日志数据集(如CSE-CIC-IDS2018)。
4. 威胁狩猎假设 SOCThreat Hunting 的假设和流程。例如:“假设攻击者使用了Living-off-the-Land技术,请描述狩猎计划。” 基于MITRE ATT&CK框架,由威胁猎人专家编写。
该方向数据集目标: 让模型学会将攻击技术(Mitre Attack) 转化为可执行的检测逻辑(Splunk Queries)。
二、事件响应与剧本数据集
专注于 Security Incident Handling 和 Security Incident Playbooks。
数据类型 具体内容 来源/生成方式
1. 事件响应剧本 针对不同攻击类型(如:勒索软件、数据泄露、内部威胁)的标准化响应流程。步骤包括:遏制、 eradication、恢复、事后总结。 参考NIST SP 800-61等标准框架,由专家编写模拟剧本。
2. 班次交接报告 Security Shift Handover 的模板和实例。学习如何清晰、结构化地交代未解决事件、待办事项和系统状态。 企业内部脱敏报告、模拟生成。
3. 事件分析报告 Data breaches Lessons 的真实或模拟分析报告。训练模型总结事件根本原因、影响范围和改进措施。 公开的数据泄露报告(如Verizon DBIR报告摘要)、模拟编写。
该方向数据集目标: 让模型具备安全工程师的流程性思维,能指导或辅助完成整个事件响应周期。
三、合规与审计数据集
覆盖 CIS Controls, FedRAMP, ISO/IEC 27001, PCI DSS 等。
数据类型 具体内容 来源/生成方式
1. 合规要求问答 将合规标准条款转化为问答对。例如:“问:PCI DSS要求3.4是什么?答:必须对主账号(PAN)进行加密存储。” 直接从标准文件PDF中解析和提炼。
2. 证据收集指导 针对特定合规要求,模型应能列出需要收集的审计证据。例如:“证明已实施访问控制策略,需要查看哪些文件?” 由合规专家和审计师编写。
3. 差距分析 提供一段现有的安全策略描述,让模型判断其符合哪条合规要求,或存在什么差距。 模拟生成“策略片段 - 分析意见”的数据对。
该方向数据集目标: 让模型成为一个在线的合规顾问,快速解答关于安全标准的问题。
四、漏洞与恶意软件分析数据集
针对 Vulnerability Management 和 Malware Reverse Engineering。
数据类型 具体内容 来源/生成方式
1. 漏洞报告分析 提供CVE描述,让模型总结受影响系统、攻击向量、潜在影响和缓解措施。 从NVD(国家漏洞数据库)等平台获取CVE数据,并人工/半自动生成摘要。
2. 恶意软件行为分析 提供恶意软件的静态/动态分析报告摘要(如来自VirusTotal、沙箱报告),让模型描述其行为、所属家族和IoC。 整合公开的恶意软件分析报告,注意高度脱敏和合规性。
3. 安全代码审查 提供简短的代码片段(如Python、SQL),让模型识别其中的安全漏洞(如SQL注入、命令注入)。 使用开源漏洞代码库(如OWASP Benchmark)、专家编写。
该方向数据集目标: 辅助安全分析师快速理解漏洞和恶意软件的本质。
五、红队与攻击模拟数据集
用于 Red Teaming 和 AttackSurface Threats 分析。
数据类型 具体内容 来源/生成方式
1. 攻击场景 Security Threat Scenarios 的详细描述。例如:“描述一个从网络钓鱼开始,最终获取域控权限的攻击链。” 基于Cyber Kill Chain和MITRE ATT&CK矩阵,由红队专家编写。
2. 攻击面评估 给定一个公司简介(如“一家使用AWS和Docker的电商公司”),让模型列出其外部攻击面。 模拟生成。
该方向数据集目标: 让模型能够从攻击者视角思考,从而更好地规划防御措施。
总结与建议
方向 核心数据集类型 关键挑战
安全运营 (查询, 用例) 配对数据 需要大量真实的、脱敏的SIEM查询日志。
事件响应 (事件描述, 响应剧本) 配对数据 需要访问敏感的事件报告,需高度模拟。
合规审计 (合规条款, 解释/证据) 配对数据 数据相对公开,但需要专业准确的解读。
漏洞分析 (CVE/报告, 技术摘要) 配对数据 数据源公开,但需要提炼和结构化。
启动策略建议:
从“安全运营”方向入手:这是需求最明确、数据相对容易获取(通过模拟和开源项目)的方向。先打造一个能理解和使用Splunk查询的“SOC助手”。
优先构建“指令微调”数据集:将上述所有需求转化为指令-响应对。例如:
指令:为检测Windows环境中的PsExec恶意使用编写一个Splunk查询。
期望响应:index=windows EventCode=1 Image=*PsExec* ...
高度重视数据安全与合规:所有用于训练的数据必须彻底脱敏,移除任何真实的IP、主机名、用户名和敏感信息。
更多推荐
所有评论(0)