|
|
2 주 전 | |
|---|---|---|
| __pycache__ | 10 달 전 | |
| data | 10 달 전 | |
| examples | 10 달 전 | |
| logs | 10 달 전 | |
| scripts | 10 달 전 | |
| src | 10 달 전 | |
| tests | 10 달 전 | |
| =0.39.0 | 10 달 전 | |
| =12.535.108 | 10 달 전 | |
| =2.0.0 | 10 달 전 | |
| INSTALL.md | 10 달 전 | |
| INTERACTIVE_MODEL_SELECTION.md | 10 달 전 | |
| LICENSE | 10 달 전 | |
| QUICKSTART.md | 10 달 전 | |
| README.md | 2 주 전 | |
| check_environment.py | 10 달 전 | |
| download_model.py | 10 달 전 | |
| main.py | 10 달 전 | |
| requirements.txt | 10 달 전 | |
| start_training.sh | 10 달 전 | |
| test_model_selection.py | 10 달 전 |
神机是一个专门针对网络安全领域的AI大模型训练系统,默认基于Qwen2.5模型进行LoRA微调。兼容大部分大模型。由云霖网络安全实验室开发,采用模块化架构设计,具备完整的身份认知和专业的网络安全知识体系。本项目当中已经包含5万多条训练数据,默认即可开始训练自身的数据
新用户推荐: 查看 5分钟快速开始指南 快速上手!
# 克隆或下载项目文件
cd /qwen
# 给启动脚本执行权限
chmod +x start_training.sh
# 安装系统依赖
sudo apt-get update
sudo apt-get install -y screen python3-venv python3-pip
# 🔍 一键检查环境是否就绪
python check_environment.py
# 或使用启动脚本进行环境检查
./start_training.sh --mode check
如果环境检查失败,请按照提示安装缺失的依赖:
pip install -r requirements.txt
# 启动自动化训练(推荐)
bash start_training.sh
这个脚本会自动完成:
将你的训练数据文件放在:
/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
# 显示帮助
./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路径
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虚拟环境
配置采用模块化设计,分为三个主要部分:
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"
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
class DataConfig:
# 数据处理参数
max_samples_per_source = 1000
train_test_split = 0.8
min_length = 10
max_length = 2048
系统会自动从以下来源获取训练数据:
修改训练参数
# 编辑 src/config/training_config.py
class TrainingConfig:
batch_size = 4 # 增加批次大小
learning_rate = 1e-4 # 降低学习率
num_epochs = 5 # 增加训练轮数
添加自定义数据源
# 在 src/data/downloader.py 中添加数据源
class DataDownloader:
def download_custom_data(self):
custom_data = [
{
"instruction": "你的指令",
"input": "输入内容",
"output": "期望输出"
}
]
return custom_data
自定义提示模板
# 在 src/config/data_config.py 中修改模板
class PromptTemplates:
SECURITY_ANALYSIS = "分析以下安全问题:{question}\n\n分析:{answer}"
单独使用数据处理模块
from src.data import DataDownloader, DataProcessor
downloader = DataDownloader()
processor = DataProcessor()
# 下载和处理数据
data = downloader.download_all_data()
processed_data = processor.process_data(data)
单独使用模型训练模块
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 可以看到:
logs/training_YYYYMMDD_HHMMSS.log: 训练日志training.log: 主程序日志training_report.txt: 训练完成报告神机具备完整的身份认知系统,确保模型始终以"神机"身份回答问题:
# 使用默认神机身份
from src.model.inference import SecurityModelInference
inference = SecurityModelInference()
response, history = inference.chat("你是谁?")
# 使用自定义身份
custom_system = "你是一个专业的网络安全专家。"
response, history = inference.chat("你是谁?", system_message=custom_system)
详细说明请参考:身份解决方案指南
项目集成了统一的测试框架,支持以下测试项目:
# 查看所有可用测试
python tests/test_runner.py --list
# 运行单项测试
python tests/test_runner.py --test identity
# 运行所有测试
python tests/test_runner.py --test all
详细说明请参考:测试框架说明
神机支持多种大语言模型,每个模型都具备以下核心能力:
神机支持多种主流大语言模型,用户可以根据需求选择合适的模型:
每个模型都经过专门的适配和优化,确保在网络安全领域的专业表现。
batch_size 或 max_lengthgradient_accumulation_steps 来保持有效批次大小fp16 混合精度训练CUDA out of memory
# 解决方案:降低批次大小
# 编辑 src/config/training_config.py
class TrainingConfig:
batch_size = 1
gradient_accumulation_steps = 16
模型下载失败
# 解决方案:切换数据源
# 编辑 src/config/settings.py
class Config:
USE_MODELSCOPE = False # 切换到HuggingFace
模块导入错误
# 解决方案:设置Python路径
export PYTHONPATH="$PWD/src:$PYTHONPATH"
# 或使用启动脚本(自动设置)
./start_training.sh
权限错误
# 解决方案:修改权限
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
提高训练速度
减少显存使用
如果遇到问题,请按以下步骤排查:
# 运行完整测试诊断
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 # 推理问题
本项目由云霖网络安全实验室开发,仅供学习和研究使用,请遵守相关法律法规。相关软件著作权已经申请
开始你的网络安全模型训练之旅! 🚀🤖