闲社服务运行正常AI智能体自动化平台
中文
语言 / Language简体中文SelectedEnglish

选择显示语言

xiaoyu-chinese-ai-detect

fuyi163/xiaoyu-chinese-ai-detect

发布机构fuyi163

下载访问条件魔搭来源

一个中文「AI 生成 / 人写」判别模型。输入一段文本,输出一个整篇AI概率,以及每句话的AI概率(仅供参考)。 底座为中文 RoBERTa(BERT-base 结构,12 层 / 768 hidden / 词表 21128),单 logit 输出, sigmoid 后得到「这段文本像 AI 写的」概率。

文本处理
模型详情

模型介绍

中文整理

晓语 · 中文 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翻译整理。重要参数、许可证和商用范围请以原文为准。

你将获得什么

完整仓库方式包含该固定版本中的权重、配置、分词器及说明文件;指定版本方式只下载所选文件或整组分片。多模态模型的投影文件、配置等依赖,请按作者说明配齐。

完整仓库可能包含多个权重格式,因此需要的磁盘空间可能大于单一格式的模型大小。下载文件不等于完成模型部署。

使用前须知

运行环境

运行模型需要的设备、工具与依赖,以原作者说明为准。

授权范围

是否允许商用、修改和分发,请查看模型许可证。

闲社提供资料与镜像下载方法,不代表已运行模型或完成安全审计。下载的代码应先检查,再执行。

返回顶部