🚀 Foundation-Sec-8B GGUF模型
Foundation-Sec-8B GGUF模型是一款专为网络安全应用场景打造的语言模型。它基于Llama-3.1架构,经过对大量网络安全相关文本数据的持续预训练,能够理解和处理多种网络安全领域的概念、术语和实践,可用于威胁检测、漏洞评估、安全自动化等多种网络安全任务。
🚀 快速开始
使用以下代码开始使用该模型:
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("fdtn-ai/Foundation-Sec-8B")
model = AutoModelForCausalLM.from_pretrained("fdtn-ai/Foundation-Sec-8B")
prompt="""CVE-2021-44228是Apache Log4j2中通过不安全的JNDI查找导致的远程代码执行漏洞(“Log4Shell”)。对应的CWE是CWE-502。
CVE-2017-0144是Microsoft的SMBv1服务器中的远程代码执行漏洞(“EternalBlue”),由缓冲区溢出引起。对应的CWE是CWE-119。
CVE-2014-0160是OpenSSL的心跳扩展中的信息泄露漏洞(“Heartbleed”),会导致越界读取。对应的CWE是CWE-125。
CVE-2017-5638是Apache Struts 2的Jakarta Multipart解析器中的远程代码执行问题,源于对Content-Type头的输入验证不当。对应的CWE是CWE-20。
CVE-2019-0708是Microsoft的远程桌面服务中的远程代码执行漏洞(“BlueKeep”),由使用后释放问题触发。对应的CWE是CWE-416。
CVE-2015-10011是关于OpenDNS OpenResolve日志输出中和不当的漏洞。对应的CWE是"""
inputs = tokenizer(prompt, return_tensors="pt")
outputs = model.generate(
inputs["input_ids"],
max_new_tokens=3,
do_sample=True,
temperature=0.1,
top_p=0.9,
)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
response = response.replace(prompt, "").strip()
print(response)
✨ 主要特性
模型生成细节
该模型使用 llama.cpp 在提交版本 19e899c
时生成。
超低比特量化(1 - 2比特)与IQ-DynamicGate
- 自适应精度量化:针对超低比特模型(1 - 2比特)引入了自适应精度量化方法,在Llama-3-8B上经过基准测试验证有显著提升。
- 分层策略:采用分层特定策略,在保持极高内存效率的同时保留准确性。
- 关键组件保护:嵌入层和输出层使用Q5_K,与标准的1 - 2比特量化相比,可减少38%的误差传播。
不同量化方式性能对比(Llama-3-8B)
量化方式 |
标准困惑度(PPL) |
DynamicGate困惑度(PPL) |
PPL变化率 |
标准大小 |
DG大小 |
大小变化 |
标准推理速度 |
DG推理速度 |
IQ2_XXS |
11.30 |
9.84 |
-12.9% |
2.5G |
2.6G |
+0.1G |
234s |
246s |
IQ2_XS |
11.72 |
11.63 |
-0.8% |
2.7G |
2.8G |
+0.1G |
242s |
246s |
IQ2_S |
14.31 |
9.02 |
-36.9% |
2.7G |
2.9G |
+0.2G |
238s |
244s |
IQ1_M |
27.46 |
15.41 |
-43.9% |
2.2G |
2.5G |
+0.3G |
206s |
212s |
IQ1_S |
53.07 |
32.00 |
-39.7% |
2.1G |
2.4G |
+0.3G |
184s |
209s |
模型格式选择
根据硬件能力和内存限制选择合适的模型格式:
模型格式 |
精度 |
内存使用 |
设备要求 |
最佳使用场景 |
BF16 |
最高 |
高 |
支持BF16的GPU/CPU |
高速推理且减少内存使用 |
F16 |
高 |
高 |
支持FP16的设备 |
当BF16不可用时的GPU推理 |
Q4_K |
中低 |
低 |
CPU或低显存设备 |
内存受限环境 |
Q6_K |
中 |
中等 |
内存较大的CPU |
量化模型中较好的精度 |
Q8_0 |
高 |
中等 |
有足够显存的CPU或GPU |
量化模型中最佳精度 |
IQ3_XS |
极低 |
极低 |
超低内存设备 |
极致内存效率但精度低 |
Q4_0 |
低 |
低 |
ARM或低内存设备 |
llama.cpp可针对ARM设备优化 |
📦 安装指南
文档未提及安装步骤,暂无法提供。
💻 使用示例
基础用法
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("fdtn-ai/Foundation-Sec-8B")
model = AutoModelForCausalLM.from_pretrained("fdtn-ai/Foundation-Sec-8B")
prompt="""CVE-2021-44228是Apache Log4j2中通过不安全的JNDI查找导致的远程代码执行漏洞(“Log4Shell”)。对应的CWE是CWE-502。
CVE-2017-0144是Microsoft的SMBv1服务器中的远程代码执行漏洞(“EternalBlue”),由缓冲区溢出引起。对应的CWE是CWE-119。
CVE-2014-0160是OpenSSL的心跳扩展中的信息泄露漏洞(“Heartbleed”),会导致越界读取。对应的CWE是CWE-125。
CVE-2017-5638是Apache Struts 2的Jakarta Multipart解析器中的远程代码执行问题,源于对Content-Type头的输入验证不当。对应的CWE是CWE-20。
CVE-2019-0708是Microsoft的远程桌面服务中的远程代码执行漏洞(“BlueKeep”),由使用后释放问题触发。对应的CWE是CWE-416。
CVE-2015-10011是关于OpenDNS OpenResolve日志输出中和不当的漏洞。对应的CWE是"""
inputs = tokenizer(prompt, return_tensors="pt")
outputs = model.generate(
inputs["input_ids"],
max_new_tokens=3,
do_sample=True,
temperature=0.1,
top_p=0.9,
)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
response = response.replace(prompt, "").strip()
print(response)
📚 详细文档
模型信息
Foundation-Sec-8B(Llama-3.1-FoundationAI-SecurityLLM-base-8B)是一个具有80亿参数的开源权重基础语言模型,专门用于网络安全应用。它基于Llama-3.1架构,通过在网络安全特定文本语料库上进行持续预训练得到。
预期用途
- 预期用例:适用于安全从业者、研究人员和开发人员构建AI驱动的安全工作流程和应用程序,可用于本地部署环境,优先考虑数据安全、法规合规性和操作控制。
- 下游应用:可直接用于与安全相关的语言任务,也可作为微调的起点,适用于多种网络安全工作流程,如总结、分类、命名实体识别、问答、推理和文本生成等。
- 非预期用途:包括生成有害内容、在没有人工监督的情况下做出关键安全决策、提供法律或医疗建议、非安全用例以及违反法律法规的使用。
训练和评估
- 训练数据:在约51亿个网络安全特定数据的标记上进行预训练,数据由Cisco的Foundation AI团队内部整理,截止日期为2025年4月10日。
- 训练设置:基于Llama 3.1 8B架构,在Cisco Foundation AI的内部计算集群上进行预训练,采用4096标记的序列长度和AdamW优化器。
- 评估:在网络安全和一般推理任务上进行基准测试,使用标准化的5次提示设置(温度 = 0.3)。
🔧 技术细节
超低比特量化(1 - 2比特)与IQ-DynamicGate
- 基准测试环境:所有测试在Llama-3-8B-Instruct上进行,使用标准困惑度评估管道、2048标记的上下文窗口和相同的提示集。
- 方法:
- 动态精度分配:前/后25%的层使用IQ4_XS(选定层),中间50%使用IQ2_XXS/IQ3_S(提高效率)。
- 关键组件保护:嵌入层和输出层使用Q5_K,与标准的1 - 2比特量化相比,可减少38%的误差传播。
模型格式选择
- BF16(Brain Float 16):适用于支持BF16加速的硬件,提供与FP32相似的动态范围,但内存使用更低。
- F16(Float 16):比BF16更广泛支持,适用于支持FP16加速的设备。
- 量化模型(Q4_K、Q6_K、Q8_0等):适用于CPU和低显存推理,不同的量化方式在精度和内存使用上有所不同。
- 超低比特量化(IQ3_XS、IQ3_S、IQ3_M、Q4_K、Q4_0):针对极端内存效率进行优化,适用于低功耗设备或大规模部署。
📄 许可证
本模型采用Apache 2.0许可证。