MelihCan1115/cyber_threat_text_classification

GitHub: MelihCan1115/cyber_threat_text_classification

基于QLoRA微调的小型语言模型,用于网络安全威胁情报文本分类。

Stars: 0 | Forks: 0

# SLM 细粒度调整用于网络威胁情报分类 main

图1. 网络威胁文本分类系统概述。 (该图用于说明目的,使用 Google Gemini 生成。) [EN]

图1. 网络威胁文本分类系统概述。 (该图用于说明目的,使用 Google Gemini 生成。) [TR]

## 摘要 本项目对使用 4 位量化低秩适应(QLoRA)进行微调的四种小型语言模型(SLM)在网络安全威胁情报(CTI)文本分类任务中的比较研究进行了探讨。`mrmoor/cyber-threat-intelligence` 数据集(9,732 个样本,17 个标签类别)被用作主要训练语料库。每个模型在 **3 个随机种子(42,123,456)** 上进行训练,以提高统计稳健性。结果表明,**Gemma-2-2b** 实现了最高的准确率(70.12% ± 0.44%),而 **Qwen2.5-1.5B** 提供了最佳的准确率与尺寸权衡。所有模型在零样本基线方面都取得了显著提升,证实了 QLoRA 微调方法在特定网络安全文本领域的有效性。 ## 目标 本项目旨在评估通过 QLoRA 进行的参数高效微调(PEFT)是否能够有效地将小型开源语言模型适应于专门的网络安全分类任务。具体而言,该研究调查了以下内容: - 模型参数数量与分类准确率之间的关系 - 模型大小、训练时间和推理速度之间的权衡 - 微调模型对分类各种 CTI 实体类型(STIX 本体 + NER 标签)的能力 - 使用标准化测试用例进行跨模型错误模式比较 ## 方法 ### 模型 选择了四种 SLM 以涵盖不同参数大小: | 模型 | 参数 | 基础 | |---|---|---| | SmolLM2-360M | 205M | HuggingFaceTB/SmolLM2-360M | | TinyLlama-1.1B | 551M | TinyLlama/TinyLlama-1.1B-Chat-v1.0 | | Qwen2.5-1.5B | 889M | Qwen/Qwen2.5-1.5B | | Gemma-2-2b | 1603M | google/gemma-2-2b-it | ### 微调方法 所有模型都使用 **4 位 NF4 QLoRA**(Dettmers 等人,2023)进行微调: - LoRA 等级:**r = 8**,alpha = 16,dropout = 0.1 - 目标模块:所有线性层 - 保存的模块:`score`(分类头) - 量化:BitsAndBytes 4 位 NF4,计算数据类型 bfloat16 ### 训练配置 | 超参数 | 值 | |---|---| | Epochs | 3 | | 学习率 | 2e-4 | | 训练批量大小 | 16 | | 评估批量大小 | 32 | | 预热比例 | 0.1 | | 权重衰减 | 0.01 | | 最佳模型标准 | macro_f1 | | 混合精度 | fp16 | | 最大令牌长度 | 128 | | 硬件 | NVIDIA Tesla T4(15.6 GB VRAM) | ### 使用的种子 ``` SEEDS = [42, 123, 456] ``` ### 数据集 ``` from datasets import load_dataset dataset = load_dataset('mrmoor/cyber-threat-intelligence') # 总计:9,732个样本 | 训练:6,556 | 验证:819 | 测试:820 # 类别:17(过滤出具有≥20个样本的类别) ``` **标签类别(共 17 个):** STIX 2.1 本体(8):`attack-pattern`,`campaign`,`identity`,`location`,`malware`,`threat-actor`,`tools`,`vulnerability` NER 实体类型(9):`DOMAIN`,`FILEPATH`,`IPV4`,`O`,`SHA1`,`SHA2`,`SOFTWARE`,`TIME`,`URL` ## 主要发现 ### 1. 分类性能 与零样本基线相比,微调显著提高了所有模型的准确率: | 模型 | 零样本准确率 | 微调准确率 | 增量 | |---|---|---|---| | SmolLM2-360M | 3.5% | 45.45% ± 2.95% | +41.9 pp | | TinyLlama-1.1B | 0.0% | 67.52% ± 0.79% | +67.5 pp | | Qwen2.5-1.5B | 31.0% | 68.66% ± 1.85% | +37.7 pp | | Gemma-2-2b | 35.5% | **70.12% ± 0.44%** | +34.6 pp | ### 2. 模型大小与性能权衡 | 模型 | 大小 | 准确率 | 推理 | |---|---|---|---| | SmolLM2-360M | 350 MB | 45.45% | 11.7 ms/样本 | | TinyLlama-1.1B | 752 MB | 67.52% | 22.6 ms/样本 | | Qwen2.5-1.5B | 1,594 MB | 68.66% | 28.5 ms/样本 | | Gemma-2-2b | 3,379 MB | 70.12% | 41.0 ms/样本 | 每 MB 的最大准确率提升发生在 SmolLM2(350 MB)和 TinyLlama(752 MB)之间:**仅增加 402 MB 的模型大小,就提高了 22.1 个百分点**。 ### 3. 训练效率 | 模型 | 训练时间(每个种子) | GPU 内存 | |---|---|---| | SmolLM2-360M | 14.1 min | 平均 3,198 MB | | TinyLlama-1.1B | 25.9 min | 平均 3,262 MB | | Qwen2.5-1.5B | 33.2 min | 平均 4,910 MB | | Gemma-2-2b | 48.4 min | 平均 8,430 MB | ### 4. 错误分析(标准化测试 — 5 个案例) 五个标准化文本被用于测试所有微调模型(种子=42): | 测试 | 预期 | SmolLM2 | TinyLlama | Qwen2.5 | Gemma-2 | |---|---|---|---|---|---| | 勒索软件文本 | `malware` | `O` ✗ | `malware` ✓ | `O` ✗ (85.9%) | `SOFTWARE` ✗ | | 钓鱼文本 | `attack-pattern` | `O` ✗ | ✓ | ✓ | ✓ | | CVE 文本 | `vulnerability` | `O` ✗ | ✓ | ✓ | ✓ (98%) | | 威胁行为者 | `threat-actor` | `location` ✗ | `location` ✗ | ✓ (94.1%) | ✓ | | C2 URL 文本 | `URL` | `O` ✗ | `O` ✗ | `O` ✗ | ✓ (79.3%) | | **得分** | | **0/5** | **3/5** | **3/5** | **4/5** | ## 交互式仪表板(Web UI) 此存储库包含一个功能齐全的静态 Web 仪表板(`/dashboard` 目录),旨在展示项目的功能。 ### 功能: - **无需后端:** 使用纯 HTML、CSS 和 Vanilla JavaScript 构建。可以直接托管在 GitHub Pages 上。 - **双语言界面:** 内置动态本地化(i18n),支持英语和土耳其语,无需页面刷新。 - **分类模拟:** 一个交互式测试区域,用户可以输入文本并查看模拟分类结果,这些结果基于 `Gemma-2-2b` 微调模型的实际输出。 - **API 准备架构:** 前端逻辑以模块化方式构建,易于连接到通过端点提供微调模型的实际 Python 后端(例如 FastAPI 或 Flask)。 要使用仪表板,只需在任何现代 Web 浏览器中打开 `dashboard/index.html` 即可。 ## 结果摘要 | 模型 | 参数 | 微调 | 准确率 | Macro-F1 | 训练时间 | 推理 | 大小 | |---|---|---|---|---|---|---|---| | SmolLM2-360M | 205M | QLoRA | 0.4545 ± 0.0295 | 0.0601 ± 0.0180 | 14.1 min | 11.7 ms | 350 MB | | TinyLlama-1.1B | 551M | QLoRA | 0.6752 ± 0.0079 | 0.4381 ± 0.0343 | 25.9 min | 22.6 ms | 752 MB | | Qwen2.5-1.5B | 889M | QLoRA | 0.6866 ± 0.0185 | 0.4724 ± 0.0195 | 33.2 min | 28.5 ms | 1,594 MB | | **Gemma-2-2b** | **1,603M** | **QLoRA** | **0.7012 ± 0.0044** | **0.4798 ± 0.0637** | **48.4 min** | **41.0 ms** | **3,379 MB** | 所有指标均取自 3 个种子(42,123,456)。硬件:NVIDIA Tesla T4,Google Colab。 ## 结论 Gemma-2-2b 是整体性能最好的模型,以 70.12% 的准确率和最低的种子方差(±0.44%)实现了最佳性能,使其成为生产部署中最可靠的选择。Qwen2.5-1.5B 提供了最佳的准确率与尺寸比。SmolLM2-360M 由于其倾向于塌陷到多数类(`O`),因此不适合此 17 类任务。错误分析的关键发现是,大型模型可以产生高置信度的错误预测(Qwen:对错误标签的 85.9% 置信度),这在实际的 CTI 管道中可能比低置信度错误更危险。 ## 存储库结构 ``` slm-cti-classification/ ├── notebooks/ │ └── LLM_Last_Result.ipynb # Full training + evaluation pipeline ├── results/ │ ├── all_seed_results.json # Raw per-seed metrics │ ├── final_results_table.csv # Aggregated results table │ ├── zero_shot_baseline.csv # Zero-shot baseline metrics │ └── figures/ │ └── model_comparison.png # Performance comparison chart ├── README.md └── requirements.txt ``` ## 设置和执行 **1. 克隆存储库:** ``` git clone https://github.com/MelihCan1115/slm-cti-classification.git cd slm-cti-classification ``` **2. 安装依赖项:** ``` pip install -r requirements.txt ``` **3. 在 Google Colab 上运行(推荐):** 直接在 Google Colab 上打开笔记本:[cyber_threat_text_classification.jpynb on Colab](https://colab.research.google.com/drive/1SysgLq06HzCUf6xke7KXyBYGOHAlW58t?usp=sharing) **4. Hugging Face 令牌(仅用于模型上传):** 在 Colab 中打开 **秘密**(左侧侧边栏)并添加: - 密钥:`HF_TOKEN_WRITE` - 值:从 huggingface.co/settings/tokens 获取您的 Hugging Face 写入令牌 ## 访问链接 - **Google Colab 笔记本:** [Open in Colab](https://colab.research.google.com/drive/1SysgLq06HzCUf6xke7KXyBYGOHAlW58t?usp=sharing) - **数据集:** [mrmoor/cyber-threat-intelligence on Hugging Face](https://huggingface.co/datasets/mrmoor/cyber-threat-intelligence) - **最佳微调模型:** [MelihCan1115/cti-gemma-2-2b_seed123 on Hugging Face](https://huggingface.co/MelihCan1115/cti-gemma-2-2b-seed123) ## 道德和学术披露 本项目作为 **Büyük Dil Modelleri (BDM)** 课程期末项目的学术目的而开发。所有实验都在公开可用的数据集和开源模型上完成。未使用任何私人或敏感数据。结果被透明地报告,包括失败和局限性。 ## 联系信息 - **GitHub:** [github.com/MelihCan1115](https://github.com/MelihCan1115) - **Hugging Face:** [huggingface.co/MelihCan1115](https://huggingface.co/MelihCan1115) ## 关键词 小型语言模型,SLM,QLoRA,参数高效微调,PEFT,网络安全威胁情报,CTI,文本分类,STIX 2.1,NER,Gemma,Qwen,TinyLlama,SmolLM2,自然语言处理,NLP,网络安全,Büyük Dil Modelleri
标签:Apex, IaC 扫描, STIX, 人工智能, 参数效率, 命名实体识别, 威胁情报, 学术研究, 开发者工具, 推理速度, 文本分类, 机器学习, 模型大小, 模型微调, 模型评估, 用户模式Hook绕过, 网络安全, 计算机科学, 训练时间, 语言模型, 跨模型比较, 逆向工具, 量化低秩适应, 错误模式分析, 隐私保护