模型介绍
中文整理晓语 · 中文 AI 检测
当前模型版本:V3.3**
一个中文「AI 生成 / 人写」判别模型。输入一段文本,输出**一个整篇AI概率**,以及**每句话的AI概率**(仅供参考)。
底座为中文 RoBERTa(BERT-base 结构,12 层 / 768 hidden / 词表 21128),单 logit 输出,
sigmoid 后得到「这段文本像 AI 写的」概率。
同一份权重打包成 **三档体积**,从 390 MiB 到 60 MiB。**int8 与 fp32 判别力基本一致;int4 概率排序仍然保持,但边界样本的概率会明显漂移**——具体读数见 quant/bench readout.json (那份在仓库内可复现)。
档 文件 体积 你怎么加载它 sha256
- --- ---------------------- --------- ---------------------- ------------------------------------------------------------------
fp32 model.safetensors 390.1 MiB ✅ from pretrained 一行 75e56acd525cc7452f70741c898d4ad42dd9304d5ad6df8f45a4726f237d6ea7
int8 quant/int8 packed.pt 101.0 MiB ⚠️ 先跑 10 行解包代码 bf6456105bbdd92c38a41671cf53882d90731129c24a4fbb6a79197a0a8b9687
int4 quant/int4 packed.pt 60.2 MiB ⚠️ 先跑 10 行解包代码 80a2505fbc922ab33cc4e9875dd87b626225daba83bf980316c1ad07b045f2d9
- *三档都已经打包好、直接放在仓库里了,你不需要自己打包。** 差别只在**加载方式**:fp32 一行
from pretrained 就完事;int8 / int4 要先跑几行代码把打包件还原成 state dict,再灌进模型。
- *它们不是 GGUF / GPTQ / AWQ**,是本仓库自带的打包格式,只认仓库里的 pack quant.py 。
图省事就用 fp32 那件;要小体积就照「量化档」那节的示例解包,代码可以直接复制。
- *int8 是平衡档,int4 是轻量档**:更高的档位(如 int16)没有随仓库发布,**这是唯一需要你自己跑一次打包的情况**:
python pack quant.py --src . --bits 16 --out /tmp/q16
(输出目录别设为仓库自己,脚本会在输出目录写一份 manifest.json ,混进仓库容易误提交)
输出怎么读
三档判决,只此一套线:
AI生成概率 判决
- -------- -----------
≥ 90% **AI特征明显**
50% – 90% **疑似AI参与**
概率会饱和,logit 不会。区分两篇「都很像 AI」的稿子,看 logit 差值比看 4 位小数的概率可靠得多。
长文本:整篇概率怎么算
模型硬上限 512 token(中文约 600 汉字),超过这个长度必须切窗再合并。本仓库提供两种合并方式:
500 字 / 窗,步长 400(重叠 100 字,避免跨窗切断语义)
窗级 sigmoid 再聚合,**两种口径可选**:
方式 算法 说明
- ------- ----------------- --------------
eq 等权 Σp / n 每窗一票,**默认**
len 加权 Σ(len · p) / Σlen 按窗口字数加权,末窗短就少说
不满 500 字符**的文本切不出第二个窗,自动退化为单窗——此时整段一次前向(超 512 token 会被截断),两种口径给出同一个数。到 500 字符以上才开始切第二个窗,所以「单窗 / 多窗」的分界是 **500 字符**,不是 512 token。
参考实现(与下方精度读数同一套口径,可直接抄):
python
import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification
from modelscope import snapshot download
d = snapshot download('fuyi163/xiaoyu-chinese-ai-detect') # 或直接传本地目录
tok = AutoTokenizer.from pretrained(d)
model = AutoModelForSequenceClassification.from pretrained(d).eval()
text = '把要检测的中文文本放这里。'
with torch.no grad():
enc = tok(text, return tensors='pt', truncation=True, max length=512)
logit = model(**enc).logits.float().item()
p = torch.sigmoid(torch.tensor(logit)).item()
print('AI生成概率 %.2f%%' % (100 * p))
python
import os, sys, torch
from modelscope import snapshot download
from transformers import AutoConfig, AutoModelForSequenceClassification
d = snapshot download('fuyi163/xiaoyu-chinese-ai-detect') # 与上一段同一份
sys.path.insert(0, d) # 让 pack quant 可被 import
from pack quant import unpack blob
bits = 4 # 4 / 8
blob = torch.load(os.path.join(d, 'quant', 'int%d packed.pt' % bits),
map location='cpu', weights only=False)
sd = unpack blob(blob)
只读 config.json 建空壳再灌权,避免为了跑 int4 先把 390 MiB 的 fp32 读进来
cfg = AutoConfig.from pretrained(d)
model = AutoModelForSequenceClassification.from config(cfg).eval()
missing, unexpected = model.load state dict(sd, strict=False)
assert not missing and not unexpected, (missing, unexpected)
config.json 模型结构配置
model.safetensors fp32 权重(标准 safetensors,可直读)
vocab.txt 词表
tokenizer config.json 分词器配置
special tokens map.json 特殊 token 映射
pack quant.py 打包/解包工具(用 int8/int4 时要 import 它的 unpack blob)
quant/int4 packed.pt int4 打包件(60 MiB,轻量档,非标准格式)
quant/int8 packed.pt int8 打包件(101 MiB,平衡档,非标准格式)
quant/bench readout.json 量化一致性评估读数
LICENSE Apache License 2.0 全文
NOTICE 底座出处与署名
SHA256SUMS.txt 全文件校验和
MANIFEST.json 构建信息(量化参数、逐文件哈希)
bash
sha256sum -c SHA256SUMS.txt
Windows 上若没有 sha256sum ,可用 Git Bash 执行同一条命令,或对单个文件用
certutil -hashfile SHA256 比对 SHA256SUMS.txt 里记的值。
环境
Python ≥ 3.9, torch ≥ 2.0, transformers ≥ 4.40
- * modelscope ≥ 1.9**——上面两段示例用 snapshot download 拉权重,缺了它第一行就 ModuleNotFoundError 。
若权重已经在本地目录,可以不装 modelscope:把 d 直接设成那个路径即可
纯 CPU 可跑;有 GPU 更好,批量打分尤其建议上 GPU
- *速度随机器差异很大**,下面是 8 线程 CPU、batch=1 的实测参考值(不是承诺值,同机连续测的抖动约 ±15%):
场景 参考耗时
- --- ----
加载权重(一次性) 约 1 秒
512 token 一次前向 约 0.6 秒
1200 字(3 窗) 约 2 秒
1 万字(约 25 窗) 约 16 秒
核数少、降频、或与其他任务抢 CPU 时,可能慢 3–10 倍;请以自己的实测为准。
内存:加载后约 1.5 GB。**下载 int4 只省磁盘和流量,运行内存与 fp32 相同**——
反量化后仍是 fp32 张量
许可与出处
权重基于开源的 chinese-roberta-wwm-ext (Apache-2.0)微调而来,本模型同样以 Apache-2.0 发布。
详见同目录 NOTICE 。
使用时请保留出处,并**不要把这个概率当作「作者身份」的判定依据**——它只是一个统计倾向,
误判代价由使用方承担。
优先采用原作者提供的中文模型卡片;仅有英文说明时由闲社AI翻译整理。重要参数、许可证和商用范围请以原文为准。
你将获得什么
完整仓库方式包含该固定版本中的权重、配置、分词器及说明文件;指定版本方式只下载所选文件或整组分片。多模态模型的投影文件、配置等依赖,请按作者说明配齐。
完整仓库可能包含多个权重格式,因此需要的磁盘空间可能大于单一格式的模型大小。下载文件不等于完成模型部署。
使用前须知
运行模型需要的设备、工具与依赖,以原作者说明为准。
是否允许商用、修改和分发,请查看模型许可证。
闲社提供资料与镜像下载方法,不代表已运行模型或完成安全审计。下载的代码应先检查,再执行。
资料或下载有问题?
登录后可提交反馈。
