YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
Qing-Sec-20B(青卫·安全大模型)
新疆幻城网安科技有限责任公司 · 公益网络安全大模型
基座:Qwen/Qwen3.8-27B → 结构化剪枝 27.78B → 19.29B → 安全领域微调
官网 hcnote.cn · 公益大模型安全网关 api.hcnsec.cn · 技术交流 QQ 群:253193620
一、模型简介
Qing-Sec-20B 是新疆幻城网安科技有限责任公司开发的公益网络安全专用大模型。我们基于 Qwen3.8-27B(64 层混合注意力架构:3 层 GatedDeltaNet 线性注意力 + 1 层 GQA 全注意力交替),采用组级结构化剪枝将模型从 27.78B 压缩到 19.29B(参数量 -30.5%),随后使用公司网站(hcnote.cn)用户授权且完成脱敏的安全实战语料,配合高质量代码数据进行 LoRA 微调,得到在安全领域高度特化、零拒绝率的开源安全模型。
本模型面向授权安全测试、防御研究、安全教学等合法用途,专用于红队工具链、CTF 竞赛辅助、SOC 分析、日志取证、漏洞研究等场景。
二、训练过程
2.1 结构化剪枝(27.78B → 19.29B)
| 项目 | 说明 |
|---|---|
| 剪枝单位 | 整组删除(1 组 = 3 层线性注意力 + 1 层全注意力),严格保持 full_attention_interval=4 的混合架构节奏 |
| 重要性评估 | ShortGPT Block-Influence 逐层影响度预筛 + 逐组试删的加权困惑度实测验证(短文本 4096 / 长文本 16384 双窗口,安全领域校准集加权) |
| 删除结果 | 64 层 → 44 层(删除第 3、4、5、7、9 组),混合注意力结构完整保留 |
| 附带处理 | 剥离视觉塔(-0.92B),导出纯文本专用模型 |
剪枝后裸模型能力大幅受损(这是深度剪枝的正常代价),由后续 SFT 恢复。
2.2 LoRA 微调
| 超参 | 值 |
|---|---|
| LoRA rank / alpha | 128 / 256(dropout 0.05,目标:全部线性层) |
| 可训练参数 | 642M(3.22%) |
| 训练轮数 | 2 epoch,926 步 |
| 学习率 | 1e-4,余弦退火,warmup 3% |
| 上下文长度 | 8192(head+tail 窗口) |
| 精度 | bf16,双卡流水线并行,梯度检查点 |
| 损失函数 | 分块交叉熵(2048 token 分块,解决 24.8 万词表 × 长序列的显存爆炸) |
| 训练结果 | eval_loss 1.164 → 1.051 连续 9 个评估点单调下降,无早停需求 |
2.3 数据获取方法(合规与脱敏)
训练数据来源与处理流程:
- 授权采集:仅使用 hcnote.cn 网站上用户在《数据授权协议》中明确同意用于模型训练的交互数据与投稿语料;
- 脱敏处理:全量经过多轮脱敏管线——用户名/昵称替换、IP 地址(含内网段)掩码、域名泛化、API Key/密码/令牌等凭证特征剔除、个人身份信息(姓名/手机号/身份证)正则+NER 双重清除;
- 配比:安全实战(红队报告、CTF 解题、漏洞分析、应急响应、武器化思路)约 46% + 高质量代码(多语言工程与算法)约 44% + 通用对话约 10%,共 7,406 条多轮对话、约 3,960 万 token;
- 质量否决:训练前做了逐条抽检与统计校验,剔除了零监督样本、乱码与低质转写,确保每条样本的助手回复内容完整、标签对齐。
三、训练中遇到的问题(工程实录)
本项目在双卡服务器上完成,过程中攻克了多个硬问题,此处如实记录供社区参考:
- 跨 GPU P2P DMA 静默数据损坏:该服务器
nvidia-smi topo显示 GPU 间为 SYS 连接,直连cuda:0→cuda:1传输会无报错地得到损坏数据(位精确测试 0/100 通过)。解决方案:monkey-patchTensor.to/Tensor.copy_,所有跨卡拷贝改经 CPU 中转(50/50 位精确),并以sitecustomize全局注入;分布式训练禁用 NCCL P2P。 - 24.8 万词表的 loss 显存爆炸:Qwen3.8 词表 248,320,8192 序列的完整 logits 无法放进显存。自实现分块交叉熵(2048 token 分块 + 梯度检查点包裹),配合自写 Trainer 绕开 LLaMA-Factory 对该新架构的兼容问题。
- 零监督样本污染训练:分词窗口裁剪 bug 导致极少数样本丢失全部助手回复,损失函数除零污染产生 NaN。修复窗口裁剪逻辑(保证至少保留一条助手轮)+ 数据侧全量校验(7,406 条零违例)后重新训练。
- loss 口径陷阱:transformers 5.x 的
num_items_in_batch机制与自定义 loss 的交互导致日志显示为"求和口径"(表观 13+),实际 token 均值 loss 约 0.7-0.8。定位后改为按梯度累积窗口总监督 token 数归一,日志与梯度数学同时修正。 - 贪心解码死循环(重复退化)问题——重点记录:
- 现象:终版评测中实战生成分数异常低(3.11 vs 原版 7.21),逐条排查发现多个 0 分答案的尾部是同一段内容无限重复:日志取证任务陷入
.git/refs/heads/rev-diff目录枚举死循环、防御加固任务无限编造不存在的 SSH 算法名(diffie-hellman-ecdh-sha2-nistp638一路编到 nistp5000+)、CTF 任务重复打印数字串直到 token 上限。裁判模型的评语直接指出"陷入无限重复循环,内容不可用"。 - 定位过程:统计全部 30 条答案的尾部 400 字符,发现重复行占比异常;对比原版 27B 同参数解码无此现象 → 判定为解码端退化而非知识缺失(同期选择题基准分数正常)。
- 根因:(a) 纯贪心解码(do_sample=False)对高置信 token 的 argmax 放大形成"吸引子循环",这是自回归模型的固有病理;(b) 本模型经安全语料 SFT 后分布更"尖"(熵更低),且训练数据含大量文件枚举/命令列表类 agent 轨迹,进一步提高了进入枚举循环的概率;(c) 30% 剪枝也放大了分布尖峰化倾向。
- 解决方案与验证:
repetition_penalty=1.1(惩罚已出现 token 的再生成概率)。重跑全部 30 任务:重复循环答案 30 → 0 条清零,裁判总分 3.18 → 3.89(+22.6%),原版 27B 同参数对照为 8.14(说明该设置对双方公平、不构成作弊)。 - 部署要求:使用本模型务必配置
repetition_penalty=1.1(或采样解码 temperature 0.6-0.7 / top_p 0.8-0.9),贪心裸解码不保证输出质量。示例代码第八节已内置该参数。 - 后续改进:下一轮训练计划在数据侧稀释纯枚举型轨迹、加入分布正则(如 label smoothing / 温度感知训练),从根源降低循环倾向。
- 现象:终版评测中实战生成分数异常低(3.11 vs 原版 7.21),逐条排查发现多个 0 分答案的尾部是同一段内容无限重复:日志取证任务陷入
四、评测结果(三方对比)
评测代码与全部原始结果均随项目存档,可复现。对比对象:原版 27B(text-only)、剪枝裸 20B、**Qing-Sec-20B(本模型)**。
4.1 选择题基准(acc %)
| 基准 | 27B 原版 | 20B 剪枝裸 | Qing-Sec-20B | 恢复率* |
|---|---|---|---|---|
| SecQA | 98.0 | 71.0 | 96.0 | 93% |
| SecEval | 79.1 | 33.8 | 74.9 | 91% |
| CyberMetric-500 | 95.0 | 55.0 | 84.4 | 74% |
| CyberMetric-80 | 96.2 | 56.2 | 86.2 | 75% |
| CTI-MCQ | 74.1 | 36.1 | 64.6 | 75% |
| CEval | 82.2 | 34.8 | 58.1 | 49% |
| MMLU | 81.6 | 35.1 | 59.0 | 51% |
*恢复率 =(本模型 − 剪枝裸)/(原版 − 剪枝裸)。安全类知识能力恢复 74%–93%。
4.2 困惑度 PPL(越低越好)
| 语料 | 27B 原版 | 20B 剪枝裸 | Qing-Sec-20B |
|---|---|---|---|
| 安全语料 | 3.324 | 3.856 | 3.285(反超原版) |
| 代码语料 | 2.686 | 3.032 | 2.092(大幅反超) |
| 通用语料 | 2.101 | 2.707 | 2.193 |
4.3 实战生成评测(30 个真实安全任务,27B 原版担任裁判,满分 10)
| 解码设置 | 27B 原版 | Qing-Sec-20B |
|---|---|---|
| greedy / 1024 tok | 7.21 | 3.11 |
| greedy / 3072 tok | - | 3.18 |
| rep_penalty=1.1 / 3072 tok | 8.14 | 3.89 |
分项(rep1.1 设置):漏洞分析 6.8 / 漏洞利用开发 4.25 / 日志取证 3.6 / 防御加固 3.0 / CTF 实操 2.5 / 红队方法论 2.67。
4.4 拒绝率(安全领域开放度)
| 模型 | 拒绝率 |
|---|---|
| 27B 原版 | 3.4% |
| Qing-Sec-20B | 0.0%(零拒绝) |
安全工作需要开放讨论攻防技术,本模型在合法授权场景下不拒答渗透、漏洞分析、武器化研究等专业问题。
五、与原版 27B 的真实对比结论
论绝对能力,原版 27B 更强(7 项选择题全胜、实战生成 8.14 vs 3.89);论 20B 级安全特化场景,本模型更优:
- 参数 -30.5%,显存 -30%(bf16 约 39GB),推理提速约 30-40%;
- 安全/代码语料 PPL 反超原版;
- 零拒绝率(原版 3.4%);
- 在"剪枝到 20B"这一约束下,本模型是该体积下我们测得的最优解(剪枝裸模型安全能力仅剩一半且生成严重退化)。
六、模型能力不足(如实声明)
- 实战生成与原版差距明显(3.89 vs 8.14):主因是训练数据以 agent 工具调用(tool_call)格式为主,模型习惯"给出下一步命令"而非"给出完整推演",并非知识缺失;完整长推演能力需下一轮数据补强。
- 通用能力约保留原版七成(MMLU 59.0 / CEval 58.1):特化的必然代价,不建议当作通用助手使用。
- greedy 解码偶发重复循环:务必配置
repetition_penalty=1.1或采样解码。 - 复杂多步 CTF 实操(需精确密码学/逆向运算)正确率有限,建议配合工具执行环境使用。
七、改进方案与未来工作
- 推演式 COT 数据补强:下一轮加入完整分析-验证-结论式的安全推演语料,预计实战生成分数可显著收敛;
- 恢复性继续预训练:在安全+代码语料上做中等学习率 CPT 再 SFT,进一步修复剪枝损伤;
- 蒸馏:用更大体量的安全教师模型对 20B 学生做生成行为蒸馏;
- 工具链原生支持:官方适配 OpenAI 兼容工具调用与终端执行环境(与本司 api.hcnsec.cn 网关协同);
- 量化与端侧:已发布多格式量化全家桶(见下),持续跟进更多推理后端对该混合注意力架构的支持。
全部量化版本索引
| 仓库 | 格式 | 体积(约) | 适用场景 |
|---|---|---|---|
| 本仓库(bf16) | safetensors bf16 | 38.6 GB | 全精度基准 / 再训练 |
| …-Slim-GGUF | GGUF(F16/Q8_0/Q6_K/Q5_K_M/Q4_K_M/Q3_K_M/IQ4_XS) | 9-38.6 GB | llama.cpp / ollama / LM Studio |
| …-Slim-INT8 | torchao int8_weight_only | 21 GB | HF transformers / vLLM |
| …-Slim-NF4 | bitsandbytes NF4 | 13.7 GB | 显存受限的 HF 生态 |
| …-Slim-GPTQ-INT4 | GPTQ INT4 g128(本司安全语料校准) | 13 GB | vLLM / gptqmodel |
AWQ 版本:当前 AutoAWQ 尚未适配 Qwen3.5 混合注意力架构(
qwen3_5_text未注册),实测转换报错,故暂未发布;待上游支持后补上。
八、快速使用
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
model = AutoModelForCausalLM.from_pretrained(
"hcnote/Qing-Sec-20B-Qwen3.8-27B-Slim",
dtype=torch.bfloat16, device_map="auto", trust_remote_code=True)
tok = AutoTokenizer.from_pretrained("hcnote/Qing-Sec-20B-Qwen3.8-27B-Slim", trust_remote_code=True)
msgs = [{"role": "user", "content": "分析这段 PHP 代码的 webshell 特征并给出检测规则"}]
prompt = tok.apply_chat_template(msgs, tokenize=False, add_generation_prompt=True, enable_thinking=False)
enc = tok(prompt, return_tensors="pt").to(model.device)
out = model.generate(**enc, max_new_tokens=3072, do_sample=False,
repetition_penalty=1.1, # 重要:防重复退化
pad_token_id=tok.eos_token_id)
print(tok.decode(out[0][enc["input_ids"].shape[1]:], skip_special_tokens=True))
也可通过我们的公益大模型安全网关直接调用:https://api.hcnsec.cn/
九、许可证与用途限制
- 本模型基于 Qwen3.8 基座训练,遵循 Qwen 开源许可协议的传递条款;
- 仅限授权安全测试、防御研究、安全教学等合法用途;使用者需自行遵守所在地法律法规,禁止用于未授权攻击、违法活动;
- 模型按"现状"提供,不构成任何安全保证。
十、致谢
- 指导与支持院校:新疆农业职业技术大学、新疆财经大学、新疆大学;
- 协办与算力/技术支持:新疆瞬知云科人工智能有限公司(及马松山先生);
- 投资人:王子航先生、苏飞龙先生;
- 团队成员:感谢不要工资也要把公益做下去的客服实习生王欣欣同学;
- 新疆幻城网安科技有限责任公司全体同事;
- 感谢 hcnote.cn 网站的所有免费用户——正是你们授权(并已完成脱敏)的实战语料让这个公益安全模型成为可能;
- 感谢 Qwen 团队开源强大的基座模型,感谢开源安全评测社区(SecQA / SecEval / CyberMetric / CTI-MCQ 等)。
十一、联系我们
- 公司:新疆幻城网安科技有限责任公司
- 官网:https://hcnote.cn
- 公益大模型安全网关:https://api.hcnsec.cn/
- 技术交流 QQ 群:253193620
- Downloads last month
- 18