演示背景

基线模型为某微调后的网络安全模型,选用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

  1. 确定数据&模型存放目录

确定数据存放目录为: /root/autodl-tmp

  1. 准备模型微调工具

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映射):

  1. 准备模型

基于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

  1. 准备微调数据

参照基线模型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"

  }

  1. Unified Cyber Security Dataset 网络安全

数据集: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)+人工

详见Easytext:基于deepseek模型辅助处理数据

  1. SOCly AI Project(security-operations-Center)安全运营 

数据集: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"

    }

  }

数据来源:https://huggingface.co/datasets/Trendyol/Trendyol-Cybersecurity-Instruction-Tuning-Dataset/blob/main/CyberSec-Dataset_escaped.jsonl

处理方式:源数据截取

  1. The Pile基础知识

不需微调,Llama-3-8B-Instruct已经在15T tokens上预训练,覆盖了The Pile的领域

  1. Alpaca Data 指令遵循

不需微调,Llama-3-8B-Instruct已经过指令微调

  1. Dolly 15k指令集

不需微调,Llama-3-8B-Instruct已经过指令微调

  1. OpenAssistant Conversations Dataset 多轮对话和聊天助手专项数据集

不需微调,Llama-3-8B-Instruct已投入RLHF优化资源

  1. GSM8K 数学应用题

不需微调

  1. 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"

    }

  }

处理方式:源数据+人工

  1. 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"

    }

  }

处理方式:源数据截取

  1. MITRE ATT&CK® STIX Data攻击战术和技术知识库:

数据集:alpaca_train

测试集:alpaca_test

数据来源:https://huggingface.co/datasets/jason-oneal/pentest-agent-dataset/tree/main

处理方式:源数据截取

  1. NVD (National Vulnerability Database) CVE Data 标准化漏洞信息、严重性、影响范围

数据集:all_cve_train

测试集:all_cve_test

数据来源:https://modelscope.cn/datasets/Trendyol/All-CVE-Chat-MultiTurn-1999-2025-Dataset/files

处理方式:源数据截取

  1. CWE (Common Weakness Enumeration) 软件弱点和漏洞根本原因分类

数据集:cwec_weaknesses_train

测试集:cwec_weaknesses_test

数据来源:https://huggingface.co/datasets/bayuncao/cwec-v4.14-weaknesses-1.0/tree/main

处理方式:源数据

  1. Sigma Rules Repository 标准化威胁检测规则

数据集:sigma_rules_dataset_train

测试集:sigma_rules_dataset_test

数据来源:https://huggingface.co/datasets/jcordon5/cybersecurity-rules/tree/main

处理方式:源数据

  1. Threat Intelligence Reports Corpus威胁情报

数据集:azerg_T3_train

测试集:azerg_T3_test

数据来源:https://huggingface.co/datasets/QCRI/AZERG-Dataset/tree/main/train,同①安全性增强数据来源,截取不同部分数据

处理方式:源数据截取

  1. AzureSRE/red_team_rules红队安全

数据集:azure_train

测试集:azure_test

数据来源:https://huggingface.co/datasets/darkknight25/Red_Team_Operations_ShellScript_Dataset/tree/main

处理方式:源数据+EasyDataset+LLM(DeepSeek-V3.1-Terminus-684B)

  1. Wikipedia维基百科

不需微调,维基百科多为基础知识补充

  1. BooksCorpus书籍语料

不需微调,书籍语料与网络安全领域不匹配

  1. ExploitDB 漏洞利用

数据集:exploitdb_train

测试集:exploitdb_test

数据来源:https://huggingface.co/datasets/Waiper/ExploitDB_DataSet/tree/main/datasets

处理方式:源数据截取

  1. Security Policies and Standards Corpus 安全策略与标准语料

数据集:security_policies_train

测试集:security_policies_test

数据来源:基于LLM自建数据集

处理方式:LLM+人工

数据处理

  1. 源数据集为json、jsonl文件,且数据格式及数据质量符合要求

可跳过数据处理步骤,直接放入大模型训练数据集中

注意:建议使用easyDataset分析领域建模观察数据分布是否符合需求

  1. 源数据集为excel、csv等格式文件,基于代码编程模型将类型转换为pdf,md,txt,docx格式文件
  1. 手动coding转置

预估工时评估等研发流程

  1. 借助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调优

  1. 基于Deepseek模型辅助EasyDataset处理pdf,md,txt,docx格式文件数据

权重:本地硬件&时长限制,使用开源通用模型处理问答对

未来优化空间:

处理企业私有化数据时,使用ollama调用本地私有模型。

软件基础配置

使用步骤如下:

  1. 下载安装easyDataset
  2. 创建项目,进行基础配置,点击 ‘更多’-‘项目设置’-‘模型配置’

  1. 注意处理公司核心保密数据集时,建议选用公司内部搭建的大模型处理

通过ollama等方式启动本地模型,请查看使用Ollama下载模型

  1. 处理公开数据集

从模型列表中选用模型进行使用

  1. 配置api key

deepseek chat api密钥需要在对应的模型官网充值后付费获取,资费标准如下:1000个普通长度问答对文本大概耗资6元。

获取密钥后在easyDataset中填写

  1. 点击提示词配置,配置模型使用提示词,规范模型输出

  1. 文档分块逻辑

根据不同的数据源,选用不用的文本分块逻辑

处理数据

文献处理上传新文献,支持从huggingface等平台下载的pdf,md,txt,docx格式文件

  1. 点击上传并处理文件

基于分割的文本块,可使用编辑删除等功能人工筛选优化

  1. 选中对应文本块,点击批量生成问题或自动提取问题

  1. 点击问题管理,可人工编辑管理问题

  1. 点击领域树视图,校验生成的问题是否满足需求(重要)

选中问题,点击批量构造数据集或自动生成数据集

  1. 点击数据集管理,可查看编辑问答对

  1. 勾选问答对后,点击导出文件

若在llamafactory中微调数据,则点击在‘llamafactory’中使用,导出dataset_info配置

定位配置文件路径,打开dataset_info.json,按照下述示例在llmafactory中添加对应格式数据集,详情请查看加载jsonL数据

处理好后的数据预览如下:

至此,pdf,md,txt,docx格式文档相关的数据预处理处理结束。

使用Ollama下载模型

点击刷新模型列表,添加ollama本地模型

产出JsonL数据

Llamafactory加载数据集

Json文档对应更新dataset_info.json文件

  1. 开始微调

模型量化配置

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

解决方案:

  1. 基于控制台页面尝试autodl的llama-factory
  2. 基于官方github文档,安装docker版本

2.选择方案2,选择安装docker以部署LLaMA-Factory,安装docker报错

原因:autoDL不能部署原生docker

解决方案:

  1. 采用拉取LLaMA-Factory源码启动的方式部署
  2. 继续研究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、主机名、用户名和敏感信息。

Logo

更多推荐