网络安全大模型训练系统

SourceShare e6b25763b1 sync README hai 2 semanas
__pycache__ 7ae440bc3f gpp hai 10 meses
data 7ae440bc3f gpp hai 10 meses
examples 7ae440bc3f gpp hai 10 meses
logs 7ae440bc3f gpp hai 10 meses
scripts 7ae440bc3f gpp hai 10 meses
src 7ae440bc3f gpp hai 10 meses
tests 7ae440bc3f gpp hai 10 meses
=0.39.0 7ae440bc3f gpp hai 10 meses
=12.535.108 7ae440bc3f gpp hai 10 meses
=2.0.0 7ae440bc3f gpp hai 10 meses
INSTALL.md 7ae440bc3f gpp hai 10 meses
INTERACTIVE_MODEL_SELECTION.md 7ae440bc3f gpp hai 10 meses
LICENSE 7ae440bc3f gpp hai 10 meses
QUICKSTART.md 7ae440bc3f gpp hai 10 meses
README.md e6b25763b1 sync README hai 2 semanas
check_environment.py 7ae440bc3f gpp hai 10 meses
download_model.py 7ae440bc3f gpp hai 10 meses
main.py 7ae440bc3f gpp hai 10 meses
requirements.txt 7ae440bc3f gpp hai 10 meses
start_training.sh 7ae440bc3f gpp hai 10 meses
test_model_selection.py 7ae440bc3f gpp hai 10 meses

README.md

网络安全大模型训练系统

神机 - 网络安全大模型训练系统

神机是一个专门针对网络安全领域的AI大模型训练系统,默认基于Qwen2.5模型进行LoRA微调。兼容大部分大模型。由云霖网络安全实验室开发,采用模块化架构设计,具备完整的身份认知和专业的网络安全知识体系。本项目当中已经包含5万多条训练数据,默认即可开始训练自身的数据

🚀 功能特点

核心功能

  • 神机身份认知: 模型具备完整的"神机"身份认知,由云霖网络安全实验室训练
  • 动态身份设置: 支持在推理时动态设置模型身份,无需修改模型文件
  • 网络安全专精: 专门针对网络安全、渗透测试、代码审计等场景优化
  • 全自动化训练: 一键启动,自动完成数据下载、环境配置、模型训练全流程
  • 统一测试框架: 集成化测试系统,支持多种测试场景
  • 小显存优化: 针对6GB显存进行优化,支持LoRA微调
  • 中文理解: 增强中文网络安全术语和概念的理解能力
  • 实时监控: 提供训练进度监控和系统状态监控
  • 模块化架构: 采用分层架构,代码结构清晰,易于维护和扩展

技术特性

  • 默认基于Qwen2.5-1.5B模型
  • LoRA (Low-Rank Adaptation) 微调技术
  • Chat Template动态身份设置
  • 支持ModelScope和HuggingFace双源下载
  • 自动混合精度训练 (FP16)
  • 梯度累积和检查点保存
  • 多数据源融合训练
  • 统一测试框架
  • 模块化设计,易于扩展

📋 系统要求

最低硬件要求

  • GPU: NVIDIA P106-100 6GB 或更高
  • 内存: 16GB+ 推荐
  • 存储: 50GB+ 可用空间
  • 网络: 稳定的网络连接(用于下载模型和数据)

软件要求

  • 操作系统: Linux (Ubuntu 18.04+)
  • Python: 3.8+
  • CUDA: 11.0+
  • 其他: screen, git

🚀 快速开始

⚡ 5分钟快速上手

新用户推荐: 查看 5分钟快速开始指南 快速上手!

1. 环境准备

# 克隆或下载项目文件
cd /qwen

# 给启动脚本执行权限
chmod +x start_training.sh

# 安装系统依赖
sudo apt-get update
sudo apt-get install -y screen python3-venv python3-pip

2. 环境检查(推荐)

# 🔍 一键检查环境是否就绪
python check_environment.py

# 或使用启动脚本进行环境检查
./start_training.sh --mode check

如果环境检查失败,请按照提示安装缺失的依赖:

pip install -r requirements.txt

3. 一键启动训练

# 启动自动化训练(推荐)
bash start_training.sh

这个脚本会自动完成:

  • 创建Python虚拟环境
  • 安装所有依赖包
  • 下载和处理训练数据
  • 启动后台训练
  • 设置监控和日志

4. 自定义训练数据(可选)

放置数据文件

将你的训练数据文件放在:

  • 自动加载模式/qwen/data/processed/ 目录下的任意 .json .jsonl 文件
  • 指定文件模式/qwen/data/processed/your_custom_name.json

程序自动加载

  • 默认行为:程序会自动扫描并加载 /qwen/data/processed/ 目录下的所有 .json .jsonl 文件
  • 多文件支持:可以同时放置多个训练文件,程序会自动合并所有数据
  • 指定文件:如需加载特定文件,可在训练时指定文件名

数据文件格式

训练数据应为JSON、.jsonl格式,支持以下两种结构:

方式1:对话格式(推荐)

[
  {
    "text": "<|im_start|>system\n你是一个网络安全专家...<|im_end|>\n<|im_start|>user\n如何进行SQL注入测试?<|im_end|>\n<|im_start|>assistant\nSQL注入测试的步骤包括...<|im_end|>"
  },
  {
    "text": "<|im_start|>system\n你是一个编程专家...<|im_end|>\n<|im_start|>user\n编写一个端口扫描器<|im_end|>\n<|im_start|>assistant\n以下是端口扫描器的代码...<|im_end|>"
  }
]

方式2:指令格式

[
  {
    "instruction": "如何进行SQL注入测试?",
    "input": "",
    "output": "SQL注入测试的步骤包括...",
    "category": "security"
  }
]

使用示例:

# 创建数据目录
mkdir -p /qwen/data/processed

# 放置多个训练文件
cp my_security_data.json /qwen/data/processed/
cp my_code_data.json /qwen/data/processed/
cp my_custom_data.json /qwen/data/processed/

# 启动训练(自动加载所有文件)
./start_training.sh --mode train

3. 详细使用方法

启动脚本选项

# 显示帮助
./start_training.sh --help

# 完整训练流程 (默认)
./start_training.sh
./start_training.sh --mode full

# 仅数据下载和处理
./start_training.sh --mode data

# 强制重新下载数据
./start_training.sh --mode data --force-download

# 仅模型训练
./start_training.sh --mode train

# 仅模型测试
./start_training.sh --mode test

# 交互式对话
./start_training.sh --mode interactive

# 环境检查
./start_training.sh --mode check

# 详细的依赖检查
python check_dependencies.py

直接使用Python

# 设置Python路径
export PYTHONPATH="$PWD/src:$PYTHONPATH"

# 运行主程序
python main.py --mode full
python main.py --mode data
python main.py --mode train
python main.py --mode test
python main.py --mode interactive

监控训练

# 查看screen会话
screen -r security_model_training

# 查看日志
tail -f logs/training_*.log

# 监控系统状态
python -c "from src.utils.monitor import TrainingMonitor; m=TrainingMonitor(); print(m.get_current_status())"

📁 项目结构

qwen/
├── requirements.txt          # Python依赖包
├── requirements-basic.txt    # 基础依赖包
├── main.py                  # 主程序入口
├── start_training.sh        # 启动脚本
├── download_model.py        # 模型下载脚本
├── check_environment.py     # 环境检查脚本
├── README.md               # 项目说明文档
├── QUICKSTART.md           # 5分钟快速开始指南
├── INSTALL.md              # 详细安装指南
├── identity_solution_guide.md # 身份解决方案说明
├── src/                    # 源代码目录
│   ├── __init__.py         # 包初始化
│   ├── app.py              # 主应用程序
│   ├── config/             # 配置模块
│   │   ├── __init__.py
│   │   ├── settings.py     # 基础配置
│   │   ├── training_config.py  # 训练配置
│   │   └── data_config.py  # 数据配置(含神机身份模板)
│   ├── data/               # 数据处理模块
│   │   ├── __init__.py
│   │   ├── downloader.py   # 数据下载器
│   │   ├── processor.py    # 数据处理器
│   │   └── loader.py       # 数据加载器
│   ├── model/              # 模型管理模块
│   │   ├── __init__.py
│   │   ├── downloader.py   # 模型下载器
│   │   ├── trainer.py      # 模型训练器
│   │   └── inference.py    # 模型推理器(支持动态身份)
│   └── utils/              # 工具模块
│       ├── __init__.py
│       ├── logger.py       # 日志工具
│       ├── environment.py  # 环境检查
│       └── monitor.py      # 训练监控
├── tests/                  # 统一测试框架
│   ├── __init__.py         # 测试模块初始化
│   ├── test_runner.py      # 统一测试运行器
│   └── README.md          # 测试框架说明
├── examples/               # 示例数据和使用案例
│   ├── sample_data.json    # 示例训练数据
│   └── README.md          # 示例使用说明
├── data/                   # 数据目录
│   └── processed/         # 处理后数据
│       ├── final_security_training_dataset.jsonl
│       ├── security_only_training_dataset.jsonl
│       ├── enhanced_test.jsonl
│       └── ...            # 其他训练数据
├── models/                # 模型目录
│   └── Qwen_Qwen2.5-1.5B-Instruct/  # 基础模型
│       ├── config.json
│       ├── tokenizer_config.json  # 包含神机身份模板
│       └── ...            # 其他模型文件
├── checkpoints/           # 训练检查点
│   └── checkpoint-6/      # LoRA适配器
│       ├── adapter_model.safetensors
│       ├── chat_template.jinja  # 神机身份模板
│       └── ...            # 其他检查点文件
├── logs/                  # 日志目录
├── cache/                 # 缓存目录
├── output/                # 输出目录
└── venv/                  # Python虚拟环境

🔧 配置说明

配置文件结构

配置采用模块化设计,分为三个主要部分:

1. 基础配置 (src/config/settings.py)

class Config:
    # 项目路径配置
    PROJECT_ROOT = "/path/to/project"
    DATA_DIR = "data"
    MODEL_DIR = "models"
    
    # 模型配置
    BASE_MODEL_NAME = "Qwen/Qwen2-1.5B"
    USE_MODELSCOPE = True
    DEVICE = "cuda" if torch.cuda.is_available() else "cpu"

2. 训练配置 (src/config/training_config.py)

class TrainingConfig:
    # 训练参数
    batch_size = 2
    learning_rate = 2e-4
    num_epochs = 3
    max_length = 2048
    
class LoRAConfig:
    # LoRA参数
    r = 16
    alpha = 32
    dropout = 0.1

3. 数据配置 (src/config/data_config.py)

class DataConfig:
    # 数据处理参数
    max_samples_per_source = 1000
    train_test_split = 0.8
    min_length = 10
    max_length = 2048

数据源配置

系统会自动从以下来源获取训练数据:

  • 网络安全知识库
  • 代码数据集
  • 中文对话数据
  • WebShell示例代码
  • 渗透测试脚本

🔧 高级用法

自定义配置

  1. 修改训练参数

    # 编辑 src/config/training_config.py
    class TrainingConfig:
    batch_size = 4          # 增加批次大小
    learning_rate = 1e-4    # 降低学习率
    num_epochs = 5          # 增加训练轮数
    
  2. 添加自定义数据源

    # 在 src/data/downloader.py 中添加数据源
    class DataDownloader:
    def download_custom_data(self):
        custom_data = [
            {
                "instruction": "你的指令",
                "input": "输入内容",
                "output": "期望输出"
            }
        ]
        return custom_data
    
  3. 自定义提示模板

    # 在 src/config/data_config.py 中修改模板
    class PromptTemplates:
    SECURITY_ANALYSIS = "分析以下安全问题:{question}\n\n分析:{answer}"
    

模块化使用

  1. 单独使用数据处理模块

    from src.data import DataDownloader, DataProcessor
    
    downloader = DataDownloader()
    processor = DataProcessor()
    
    # 下载和处理数据
    data = downloader.download_all_data()
    processed_data = processor.process_data(data)
    
  2. 单独使用模型训练模块

    from src.model import SecurityModelTrainer
    from src.config import TrainingConfig, LoRAConfig
    
    trainer = SecurityModelTrainer()
    trainer.setup_model_and_tokenizer()
    trainer.train()
    

3.### 单独使用推理模块**

from src.model import SecurityModelInference
from src.config.settings import Config

# 使用默认模型
config = Config()
inference = SecurityModelInference(config)
inference.load_model()

# 使用指定模型
inference = SecurityModelInference(config, model_key="qwen2.5-7b")
inference.load_model(model_key="qwen2.5-7b")

response = inference.generate_response("如何进行SQL注入测试?")

模型管理

使用模型管理CLI工具来管理多个模型:

# 列出所有可用模型
python scripts/model_manager.py list

# 下载指定模型
python scripts/model_manager.py download qwen2.5-1.5b
python scripts/model_manager.py download chatglm3-6b

# 切换当前模型
python scripts/model_manager.py switch qwen2.5-7b

# 显示当前模型信息
python scripts/model_manager.py current

# 测试模型推理
python scripts/model_manager.py test qwen2.5-1.5b

# 与模型进行交互式对话
python scripts/model_manager.py chat qwen2.5-1.5b

# 显示模型详细信息
python scripts/model_manager.py info chatglm3-6b

训练管理

# 查看所有screen会话
screen -list

# 进入训练会话
screen -r security_training

# 在会话内分离(不终止训练)
# 按 Ctrl+A, 然后按 D

# 终止训练
screen -S security_training -X quit

# 查看GPU使用情况
watch -n 1 nvidia-smi

📊 训练监控

监控界面

运行 python3 monitor.py 可以看到:

  • 训练会话状态
  • 当前训练进度
  • GPU使用情况
  • 系统资源状态
  • 最新训练日志

日志文件

  • logs/training_YYYYMMDD_HHMMSS.log: 训练日志
  • training.log: 主程序日志
  • training_report.txt: 训练完成报告

🤖 神机身份解决方案

身份认知特性

神机具备完整的身份认知系统,确保模型始终以"神机"身份回答问题:

  • 默认身份: "你是神机,由云霖网络安全实验室训练的网络安全大模型"
  • 动态设置: 支持在推理时动态调整身份,无需修改模型文件
  • Chat Template: 使用标准化的对话模板确保身份一致性
  • 多轮对话: 在整个对话过程中保持身份认知

技术实现

# 使用默认神机身份
from src.model.inference import SecurityModelInference
inference = SecurityModelInference()
response, history = inference.chat("你是谁?")

# 使用自定义身份
custom_system = "你是一个专业的网络安全专家。"
response, history = inference.chat("你是谁?", system_message=custom_system)

详细说明请参考:身份解决方案指南

🧪 统一测试框架

测试功能

项目集成了统一的测试框架,支持以下测试项目:

  • identity: 身份解决方案测试
  • data_loader: 数据加载器测试
  • download: 模型下载功能测试
  • git_download: Git下载功能测试
  • inference: 模型推理功能测试
  • all: 运行所有测试

使用方法

# 查看所有可用测试
python tests/test_runner.py --list

# 运行单项测试
python tests/test_runner.py --test identity

# 运行所有测试
python tests/test_runner.py --test all

详细说明请参考:测试框架说明

🎯 模型能力

神机支持多种大语言模型,每个模型都具备以下核心能力:

网络安全专业能力

  • WebShell代码生成和分析
  • 渗透测试脚本编写
  • 漏洞分析和利用技术
  • 安全工具开发
  • 网络攻防技术指导
  • CVE漏洞分析
  • 安全加固建议

编程开发能力

  • Python/PHP/Java等多语言编程
  • 网络编程和系统编程
  • 安全工具和脚本开发
  • 代码审计和漏洞挖掘
  • 自动化工具开发

中文理解能力

  • 中文技术文档理解
  • 中文安全知识问答
  • 中文代码注释生成
  • 中文安全术语解释

身份认知能力

  • 明确的"神机"身份认知
  • 云霖网络安全实验室背景
  • 专业的网络安全知识体系
  • 一致的身份表达

🤖 支持的模型

神机支持多种主流大语言模型,用户可以根据需求选择合适的模型:

Qwen系列

  • Qwen2.5-1.5B-Instruct: 轻量级模型,适合资源受限环境
  • Qwen2.5-7B-Instruct: 平衡性能和资源消耗的中等规模模型
  • Qwen2.5-14B-Instruct: 高性能模型,适合专业应用
  • Qwen2.5-32B-Instruct: 大规模模型,提供最佳性能
  • Qwen2.5-72B-Instruct: 超大规模模型,适合高端应用

ChatGLM系列

  • ChatGLM3-6B: 支持多轮对话的中文优化模型

Baichuan系列

  • Baichuan2-7B-Chat: 中文能力强的对话模型
  • Baichuan2-13B-Chat: 更大规模的中文对话模型

Llama系列

  • Llama2-7B-Chat: Meta开源的对话模型
  • Llama2-13B-Chat: 更大规模的Llama对话模型

每个模型都经过专门的适配和优化,确保在网络安全领域的专业表现。

⚠️ 注意事项

训练时间

  • 预计训练时间:6-12小时
  • 具体时间取决于数据量和硬件性能
  • 建议在夜间或空闲时间进行训练

显存优化

  • 如果显存不足,可以减小 batch_sizemax_length
  • 增加 gradient_accumulation_steps 来保持有效批次大小
  • 确保启用 fp16 混合精度训练

数据安全

  • 训练数据包含网络安全相关内容
  • 生成的模型可能输出敏感代码
  • 请确保在安全环境中使用
  • 遵守相关法律法规

模型使用

  • 神机模型专为教育和研究目的设计
  • 请负责任地使用生成的安全工具代码
  • 不要用于非法攻击活动
  • 模型具备明确的身份认知,请尊重其专业性

🔍 故障排除

常见错误

  1. CUDA out of memory

    # 解决方案:降低批次大小
    # 编辑 src/config/training_config.py
    class TrainingConfig:
    batch_size = 1
    gradient_accumulation_steps = 16
    
  2. 模型下载失败

    # 解决方案:切换数据源
    # 编辑 src/config/settings.py
    class Config:
    USE_MODELSCOPE = False  # 切换到HuggingFace
    
  3. 模块导入错误

    # 解决方案:设置Python路径
    export PYTHONPATH="$PWD/src:$PYTHONPATH"
    
    # 或使用启动脚本(自动设置)
    ./start_training.sh
    
  4. 权限错误

    # 解决方案:修改权限
    chmod +x start_training.sh
    sudo chown -R $USER:$USER ./
    

日志分析

查看详细错误信息:

# 查看最新日志
tail -f logs/training_$(ls logs/ | grep training | tail -1)

# 搜索错误
grep -i error logs/training_*.log

# 查看GPU使用情况
watch -n 1 nvidia-smi

# 查看训练状态
python -c "from src.utils.monitor import TrainingMonitor; m=TrainingMonitor(); print(m.get_current_status())"

开发调试

# 使用统一测试框架进行调试
python tests/test_runner.py --test all

# 测试特定功能
python tests/test_runner.py --test identity      # 测试身份解决方案
python tests/test_runner.py --test data_loader   # 测试数据加载
python tests/test_runner.py --test inference     # 测试推理功能

# 测试单个模块
python -c "from src.config import Config; print(Config.PROJECT_ROOT)"
python -c "from src.data import DataDownloader; d=DataDownloader(); print('DataDownloader OK')"
python -c "from src.model import SecurityModelTrainer; print('Trainer OK')"

# 环境检查
python main.py --mode check

代码结构说明

  • src/config/: 配置管理,包含所有配置类
  • src/data/: 数据处理,包含下载、处理、加载功能
  • src/model/: 模型管理,包含下载、训练、推理功能
  • src/utils/: 工具模块,包含日志、监控、环境检查
  • src/app.py: 主应用程序,整合所有功能

性能优化

  1. 提高训练速度

    • 使用SSD存储
    • 增加系统内存
    • 优化数据加载
  2. 减少显存使用

    • 启用梯度检查点
    • 使用更小的模型
    • 减少序列长度

📞 技术支持

如果遇到问题,请按以下步骤排查:

基础检查

  1. 系统要求是否满足
  2. 依赖是否正确安装
  3. 日志文件中的错误信息
  4. GPU驱动和CUDA版本

使用测试框架诊断

# 运行完整测试诊断
python tests/test_runner.py --test all

# 针对性测试
python tests/test_runner.py --test identity      # 身份问题
python tests/test_runner.py --test download      # 下载问题
python tests/test_runner.py --test inference     # 推理问题

常见问题

📄 许可证

本项目由云霖网络安全实验室开发,仅供学习和研究使用,请遵守相关法律法规。相关软件著作权已经申请

🔗 相关文档

🏷️ 版本信息

  • 当前版本: v2.0.0
  • 当前模型版本: 基于Qwen2.5-1.5B
  • 身份系统: 神机身份认知v1.0
  • 测试框架: 统一测试系统v1.0

开始你的网络安全模型训练之旅! 🚀🤖