前言
上篇文章我们采用了Vicuna-7B模型进行微调,使其具备了网络安全领域的能力。但是Vicuna-7B模型的问题也很明显,中文能力较差,中文吐字很慢,目前看还不能很好的满足需求。
这次我选用了baichuan-7B/13B进行微调,至于为什么不用GLM系列我在上篇文章也提到过,llama2单从论文上看7b并没有太大能力上的提升,并且中文能力很弱,也不在考虑范围内。
baichuan-13B我采用了Qlora的方式在单卡24G显存上进行了微调,可能因为数据集太少,微调出来效果并不是太好。这里着重写一下7B模型的微调过程。
环境准备
内存:55G
显卡:Tesla P40 24G
软件依赖:CUDA:11.4 Python 3.8+ PyTorch 1.13.1+
模型准备
首先安装git lfs,直接使用git是无法完整下载模型的
git lfs https://huggingface.co/baichuan-inc/baichuan-7B/tree/main
下载LLaMA Efficient Tuning
git clone https://github.com/hiyouga/LLaMA-Efficient-Tuning
conda create -n llama_etuning python=3.10
conda activate llama_etuning
cd LLaMA-Efficient-Tuning
pip install -r requirements.txt
训练数据准备
还是使用我们之前用GPT生成的数据以及部分HTTP请求数据,我们的目标是让它辅助我们判断恶意请求。
数据格式如下:
{
"instruction": "什么是访问控制绕过漏洞?",
"input": "",
"output": "访问控制绕过漏洞允许攻击者通过非法途径绕过应用程序或系统的访问控制机制。这通常由访问控制机制在设计或实现过程的失误所致。攻击者可以利用这些漏洞来获取非授权的访问权限,读取敏感数据或控制关键操作。这需要对应用程序和系统的完整访问控制模型进行全面安全设计与审计,避免直接信任输入的权限声明,进行定期检测等措施来修复访问控制绕过漏洞。"
}
二次预训练效果很差,baichuan本身就已经有了大量的预训练数据,我们直接进行监督微调即可
CUDA_VISIBLE_DEVICES=0 python src/train_bash.py
--stage sft
--model_name_or_path /data/Baichuan-7B
--do_train
--lora_target W_pack
--dataset sec_all
--finetuning_type lora
--output_dir /data/Baichuan-7B-checkpoin
--overwrite_cache
--per_device_train_batch_size 8
--gradient_accumulation_steps 8
--lr_scheduler_type cosine
--logging_steps 10
--save_steps 1000
--learning_rate 5e-4
--num_train_epochs 8.0
--plot_loss
--fp16
--prompt_template baichuan
训练结果
启动Web页面
python src/web_demo.py
--model_name_or_path /data/Baichuan-7B
--finetuning_type lora
--checkpoint_dir /data/Baichuan-7B-checkpoin
--prompt_template baichuan
测试下来,baichuan-7B的微调效果还不错,速度也很快,并没有丢失原有能力。
长
按
关
注
网络安全社团公众号
微信号 : qlnu_ctf
新浪微博:齐鲁师范学院网络安全社团
原文始发于微信公众号(齐鲁师院网络安全社团):大语言模型工程实践-网络安全大模型
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论