Factual L48: 三个事实错误分类头

这是面向预先提取的 token 特征的分类器。仓库提供同一结构、三个随机种子训练得到的 L48 分类头及其权重;每个头输出错误概率,三个概率的算术均值与固定阈值比较,得到整体二分类结果。它不包含原始文本到特征的骨干模型,不能直接输入文本,也不是十个错误类别的分类器。

输入与输出

每个输入是一个 numpy.ndarray,形状为 (token数, 5120),token 数为 1–256,包含提示词和原始陈述的全部 token。允许一批传入不同长度的数组;本模块按原流程右侧补零并生成 mask。

这些向量须由原 Qwen/Qwen3.8-27B-FP8 模型及其 tokenizer 按原方案从第 48 层提取,包含完整提示词。原运行版本的骨干配置/tokenizer 清单 SHA-256 为 20795b77e8256a914187634491e818f24a8b4ed67378a68346385375b047a34e,模型 revision 为 017b9c7af6b5689d5dd426a76e0bc077eb5ca20a。请参考项目原提取流程核实模型身份;本模块只检查数组的形状、长度和数值,无法验证数组的来源。256 token 限制包括提示词;超长样本在提取前应报错,不截断或分窗。

原提示模板为:

请判断以下陈述在事实和逻辑上是否正确。
陈述:{text}
Assessment:

每个向量会先转换为 float16 再转为 float32,以匹配历史缓存;每个头输出的 logit 分别经过 sigmoid,随后以 float32 计算三个概率的均值。score 越高表示风险越高;is_polluted = score >= 0.5519843697547913。阈值来自原有验证集选择结果,并不是对新领域适用性的保证。

安装与使用

Python 3.10 或更高版本;先安装 Git LFS,随后从 Hugging Face 克隆仓库并安装代码及依赖(PyTorch、NumPy):

git lfs install
git clone https://huggingface.co/DSA1/factual-guard-l48-classifier
cd factual-guard-l48-classifier
python -m pip install .

克隆会获取仓库内的三个权重;pip install . 安装代码和依赖,不会自动下载权重,使用示例中的 weights 相对于仓库根目录。

以下使用本地已有特征文件;示例不进行文本提取或模型下载:

import numpy as np
from factual_l48 import FactualL48Classifier

classifier = FactualL48Classifier("weights", device="cpu")
# 从可信且符合上述提取协议的文件读取,形状为 [tokens, 5120]
token_features = np.load("l48_features.npy", allow_pickle=False)
result = classifier.predict([token_features])[0]
print(result["score"], result["is_polluted"], result["per_head"])

也可使用 device="cuda" 执行分类头。模型加载检查三个文件的 SHA-256,使用 torch.load(..., weights_only=True) 和严格的 state_dict 加载;错误或缺少权重将直接报错。空批次返回空列表。

权重与源码

factual_l48.py                  特征输入、权重校验、预测结果
_original_score.py              从原项目提取的 score_hidden_sequences 函数
type_aware_head.py              原 TypeAwareHead 结构
standalone_token_head.py        原 token attention、池化和分类层
training/                       原训练入口和相关训练代码(参考)
weights/
  protocol.json                 模型协议(来源目录路径已脱敏)
  selection.json                冻结阈值与选择信息
  provenance.json               原始与发布文件的哈希和脱敏说明
  attention_seed20260719/best.pt
  attention_seed20260720/best.pt
  attention_seed20260721/best.pt

training/ 中保留原训练入口 train_standalone_head.py 及相关代码作为研究参考;训练数据、L48 特征缓存和初始化权重未包含,需另行准备,不能仅凭本仓库复现完整训练。训练流程还依赖原项目环境(包括 W&B,按原脚本使用离线模式)及其他与所选训练选项对应的输入。未在本次重新运行训练。

这些权重来自同一套结构的三次独立训练。训练辅助分支含十类标签信息;此仓库的推理 forward 输出的是整体二分类 logit,不提供每一类事实错误的检测结果。

证据与范围

模型主要面向项目的十类事实错误数据集中的独立陈述。历史 22 条样本的真实 GPU 运行只用于验证模型加载及接口链路;该记录不是正式测试成绩。此仓库的 CPU 检查使用合成特征,用于验证三头加载与计算,不证明文本提取、特定领域表现、医学可靠性或跨模型泛化。此前实际提取时的其他环境要求和 backbone 依赖请参阅原项目的 serve_factual_guard_l48.py;仓库未捆绑原模型、tokenizer 或测试数据。

本地检查

python -m unittest discover -s tests -v

项目中的 type_aware_head.py 和 standalone_token_head.py 按原文件保留,_original_score.py 的核心函数摘自项目 experiments/qwen38_attention_pooling/external_inference.py。factual_l48.py 负责设备、路径、权重身份和输入适配;它不触发训练、下载或后台服务。

许可

本仓库中的代码和分类头权重按 Apache-2.0 提供,见 LICENSE。骨干模型、tokenizer、PyTorch 和其他依赖分别遵循其各自的许可;它们不随本仓库发布。

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support