---
title: jev-novel-3-27b-bf16
canonical_url: "https://www.modelscope.cn/models/alkaid55555/jev-novel-3-27b-bf16"
md_url: "https://www.modelscope.cn/models/alkaid55555/jev-novel-3-27b-bf16.md"
repository: alkaid55555/jev-novel-3-27b-bf16
last_updated: 2026-10-10
license: apache-2.0
pipeline_tag: text-classification
tasks:
  - text-classification
model_type:
  - qwen3_5
architectures:
  - Qwen3_5ForConditionalGeneration
base_model:
  - Qwen/Qwen3.8-27B
base_model_relation: finetune
parameters: 27.4B
tensor_type:
  - BF16
library_name:
  - safetensors
language:
  - zh
downloads: 8
stars: 0
tags:
  - safetensors
  - sentence-quality
  - jev
  - jevnovel-3
---

# jev-novel-3-27b-bf16

> jev-novel-3-27b-bf16 - alkaid55555 在 ModelScope 开源的模型。JEVnovel 3 · 27B 教师模型（BF16）

alkaid55555/jev-novel-3-27b-bf16 是 ModelScope 魔搭社区上的 27.4B 参数text-classification模型，采用 apache-2.0 许可，基于 Qwen/Qwen3.8-27B 构建。

- **Repository**: alkaid55555/jev-novel-3-27b-bf16
- **License**: apache-2.0
- **Tasks**: text-classification
- **Parameters**: 27.4B
- **Base model**: Qwen/Qwen3.8-27B
- **Tags**: safetensors, sentence-quality, jev, jevnovel-3
- **Downloads**: 8
- **Stars**: 0
- **Last updated**: 2026-10-10

Source: https://www.modelscope.cn/models/alkaid55555/jev-novel-3-27b-bf16

---

# JEVnovel 3 · 27B 教师模型（BF16）

> JEVnovel 3 是面向 AIGC 小说改稿的句子检查模型系列：不只回答「这句行不行」，还指出「**哪一小片写得差、这片该删还是该改**」。
> 本仓库是系列中的 **27B 教师模型**（BF16 原始精度）。它对整句打分，学生模型（0.8B / 4B，另行发布）从它的打分中蒸馏出逐片定位能力。显存有限时可用同系列 [FP8 量化版](https://modelscope.cn/models/alkaid55555/jev-novel-3-27b-fp8)。

## 为什么需要它

AI 写小说容易写成「八股文」：高频形容词、套路化修辞、机械的分句节奏……这些写法原本是人类的正常表达，被 AI 高频滥用之后成了套路。它们是**概率上的最优**，不是**可读性上的最优**。

八股很难用规则抓：它形式多样，不同 AI 各有各的八股；直接封杀词句又会误伤——「湖中投入石子」是八股，但封杀「石子」会伤及大量正常描写。

JEVnovel 的做法是：用人类偏好数据训练判别模型，并把输出做成分类头——**一次前向传播直接给出判断和置信度**，不做自回归生成。

**系列的演进：**

- **JEVnovel 2** 解决「识别」：判断一句话需不需要修改；
- **JEVnovel 2.5** 尝试把粒度细化到逗号级小片，加了「短句头」做三分类（拖后腿 / 中性 / 有价值）。实测效果不好：它分不清「可以删掉的纯装饰」和「必须保留的信息」，给不出改稿动作，3 代将其取消；
- **JEVnovel 3** 换成两个能直接指导改稿的头：
  - **观感曲线头**：逐片输出「读到这里为止写得有多差」——曲线从哪一片抬升，问题就出在哪一片；
  - **信息密度头**：给每片一个 0~1 的密度分——回答「这片该删还是该改」。

两个头合起来，把「哪里有问题」变成可执行的改稿动作：**判烂 + 密度低 → 删；判烂 + 密度高 → 改**。

## 这个模型做什么

教师由 Qwen3.8-27B 微调而来，对**整句**打分，一次前向输出两组结果：

- **二分类**：`可以保留` / `需要修改`（平庸及以下算需要修改；章节号、结构化标记等不需要文学润色的内容算可以保留）；
- **五档评分**：`烂完了 / 小改 / 平庸 / 还可以 / 优秀`。

注意：教师本身**不带**观感曲线头和信息密度头——那两个头装在学生模型上，教师只负责提供蒸馏用的打分信号。它也可以单独当作通用的文学质量 / 八股打分器使用（见下方用法）。

## 学生是怎么蒸馏出来的

3 代学生模型的能力来自两条独立的标注链路：

1. **观感曲线 ← 本教师逐前缀打分**。把句子按标点切成逗号级小片，对「前 1 片」「前 2 片」……每个前缀都让教师按整句打一次五档分。这样得到的不再是一个「整句结论」，而是**一条曲线的形状**。学生学这条曲线，所以不止知道「这句烂」，还知道「从哪一片开始烂」。
2. **信息密度 ← StartLux-Decision-27B 裁判**。质量和信息是两回事：有的片段「写得烂但没有信息量」（纯装饰，该删），有的「写得烂但承载着情节」（该改）。教师只管质量；信息维度交给裁判模型——它对每一小片回答一个问题：「*编辑要把这句话改简洁时，这个片段能不能删掉？*」答案直接作为片级密度标签。
3. 学生（0.8B / 4B，LoRA，双头）用这两套标注训练。

完整的方法、数据规模与评测细节见仓库内的《JEVnovel3技术报告.md》。

## 评测

协议与系列一致：主指标取人类标注人数最多、共识最高的 538 句（main-bench），统计 Macro-F1、bad 召回、bad 精确和正常句误报；判定阈值先在验证集上确定并冻结，再应用到测试集。

| 模型 | 主集 Macro-F1 | bad 召回 | bad 精确 | 正常句误报 |
|---|---:|---:|---:|---:|
| `jev-novel-2-27b-bf16`（上一代） | 0.7661 | 0.6162 | **0.8978** | **0.0712** |
| **本模型（最优工作点）** | **0.8223** | **0.7417** | 0.8894 | 0.0936 |

- 相比上一代 27B：主指标提升 **5.6 个点**，bad 召回提升约 12.6 个点，抓得更全；代价是正常句误报从 7.1% 升到 9.4%，精确率基本持平。
- 出厂冻结阈值（0.31）下 Macro-F1 为 0.8185；表中 0.8223 是最优工作点（阈值 ≈0.30）下的数字。
- **FP8 版与本版同阈值对照**：Macro-F1 0.8185 → 0.8151（Δ −0.003），逐句 `p_bad` 平均偏差 0.011、p95 偏差 0.046，判定翻转 10/538（1.9%）——量化损失可以忽略，显存有限时优先用 FP8 版。

## 模型规格

| 项 | 值 |
|---|---|
| 参数量 | 27.48B（含 0.13B 打分头） |
| 文本骨干 | qwen3_5，hidden 5120，64 层 |
| 打分头 | JointSchemaHead（width 1024 / 4 层 / 16 头，fp32） |
| 判定阈值 | `p_bad >= 0.31`（可用 `--threshold` 调整） |
| 最长输入 | 4096 token（含固定提示） |
| 本版权重 | **BF16**，12 个分片 + `adapter_head.safetensors`（适配器与打分头，未合并；`infer.py` 自动加载），约 59 GiB |
| FP8 权重 | 8 个分片 + `head.safetensors`（适配器已合并），约 29 GiB；见同系列 [FP8 仓库](https://modelscope.cn/models/alkaid55555/jev-novel-3-27b-fp8) |
| 显存建议 | BF16 建议 80 GB 级别；FP8 版显著更低 |

## 用法

> ⚠️ 自定义架构，**不能直接用 `AutoModel` 加载**，请使用本仓库的 `infer.py`。

### 安装

需要 Linux、Python 3.12、支持 BF16 的 NVIDIA GPU（建议 80 GB 显存）、至少 32 GB 内存。CUDA 13.2 工具链与驱动需与所装的 PyTorch 版本兼容。

```bash
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip setuptools wheel packaging ninja
python -m pip install torch==2.13.0 --index-url https://download.pytorch.org/whl/cu132
python -m pip install --no-build-isolation -r requirements.txt
```

### 推理

在本目录运行即可，模型文件已包含，推理无需联网：

```bash
# 单句
python infer.py --text "雨停了，他推开窗，看见树梢还在滴水。"

# 批量（JSONL）
python infer.py --input input.jsonl --output output.jsonl --batch-size 1
```

**输入**：JSONL 每行形如 `{"sentence":"待判断的句子"}`，可附带 `id`。

**输出**：

- `p_bad`：「需要修改」的概率；`label`：判定结果。`p_bad >= 0.31` 判为 `bad`（需要修改），否则 `not_bad`（可以保留）；
- 加 `--ordinal` 可额外输出五档概率和 1–5 期望分数；
- 模型判断的是表达质量，不判断作者身份。

供程序调用：

```python
from infer import Predictor
model = Predictor()
result = model.predict(["待判断的句子"], include_ordinal=True)
```

其他说明：

- 句子连同固定提示总计最多 4096 token，超限报错、不自动截断；
- 下载后可用 `sha256sum -c SHA256SUMS` 校验文件完整性；第三方许可见 `LICENSE` 和 `NOTICE`。

## 未来计划

- 在「哪里有问题」之上继续细分「**有什么问题**」，让学生直接给出语义化的修改方向；
- 持续扩展数据集的文体广度，覆盖更多不同 AI 的八股形态。

## 许可

以 Apache-2.0 发布，承继基座模型（Qwen3.8）的许可证，见 `LICENSE` 与 `NOTICE`。
