一个1B参数的人性化模型,在AI检测器上匹配人类写作水平
摘要
一个1B模型,采用堆叠的SFT和DPO LoRA适配器,在RADAR AI检测器上达到人类水平得分,将冗余短语减少到零,并在24GB Mac上运行。
暂无内容
查看缓存全文
缓存时间: 2026/06/01 09:41
# 一款能让AI检测器认为与人类写作无异的1B人化器
来源:https://mlx-optiq.com/blog/humanizer-stacked-lora
工程 · 2026年6月1日
**在1B模型上堆叠两个LoRA适配器,即可在RADAR AI检测器上100%弥合与人类写作之间的差距。**
源AI草稿的RADAR评分为0.51。EditLens人类参考集的评分为0.37。在同样的200份留出草稿上,同时应用SFT + DPO LoRA(基于`MiniCPM5-1B-OptIQ-4bit`)后,改写结果也达到了0.37。整个堆叠可在24GB Mac上运行。
## 结果
200份来自EditLens (https://huggingface.co/datasets/pangram/editlens_iclr) ICLR 2026语料库的留出AI草稿,由每个系统改写,然后由RADAR-Vicuna-7B (https://huggingface.co/TrustSafeAI/RADAR-Vicuna-7B) 评分。P(AI)越低越像人类。
| 管线 | P(AI) ↓ | 与源相比的Δ | 差距弥合度 |
|---|---|---|---|
| 源AI草稿 (Qwen3.5-4B + gemma-4-e4b) | 0.51 | — | — |
| MiniCPM5-1B + SFT人化器LoRA | 0.50 | -0.01 | 7% |
| **MiniCPM5-1B + SFT + DPO LoRA 堆叠** | **0.37** | **-0.14** | **100%** |
| 人类参考 (目标) | 0.37 | -0.14 | 100% |
陈词滥调频率(如"a testament to"和"underscores the importance of"等模板化模式)从源中的每1K词元0.6降至堆叠输出中的0.0。人类参考集的频率为0.1。
基础模型磁盘占用875 MB,每个适配器额外占用120 MB。无需70B模型,也不需要API密钥。
## 三个命令搞定
OptIQ 0.1.4 提供了所有组件。完整管线如下:
OptIQ Lab 构建数据集页面。包含13个模板,包括从QA对生成SFT、从偏好对生成DPO、Hugging Face数据集导入、风格迁移、自指令扩展、提示重建、多轮对话合成、工具使用轨迹。可选第一站:Lab的数据集构建器。本次运行中,风格迁移 + 从偏好对生成DPO这两个模板产生了SFT和DPO数据集。
终端 · 1. 量化
```bash
$ pip install 'mlx-optiq>=0.1.4'
$ optiq convert openbmb/MiniCPM5-1B \
--target-bpw 5.0 --candidate-bits 4,8 \
--output ./optiq_mixed
```
基于敏感度的混合精度量化。大多数层落在4-bit,敏感层落在8-bit。结果占用875 MB,在能力评分(评估框架 (https://mlx-optiq.com/blog/eval-framework))上仅比bf16基础模型低1.06 GB。
终端 · 2. 先训练SFT,然后在其基础上继续训练DPO
```bash
$ optiq lora train ./optiq_mixed \
--data ./sft_dataset --method sft \
--preset large --iters 600 \
--output ./adapters/humanizer-sft
$ optiq lora train ./optiq_mixed \
--data ./dpo_dataset --method dpo \
--preset large --iters 300 \
--mount-adapter ./adapters/humanizer-sft \
--output ./adapters/humanizer-dpo
```
`--mount-adapter` 是标准的SFT后接DPO继续训练方案。它在每个适配层上并排放置一个冻结的SFT LoRA和一个可训练的DPO LoRA。DPO参考前向传播仅将可训练的比例因子归零,因此损失中的KL项以基础模型 + SFT(即SFT模型)为锚点。这与所有现代对齐管线定义"从SFT继续训练的DPO"的方式一致。保存的适配器仅包含DPO的增量。
OptIQ Lab 微调向导,超参数步骤。方法下拉菜单设置为DPO,学习率自动切换为0.00005,并出现一个黄色提示横幅解释DPO默认值。选择DPO会将学习率切换为5e-5,并显示DPO默认值横幅。
终端 · 3. 服务启动,每个请求堆叠适配器
```bash
$ optiq serve --model ./optiq_mixed \
--adapter ./adapters/humanizer-sft \
--adapter ./adapters/humanizer-dpo
# 请求体使用"+"运算符激活两者:
$ curl localhost:8080/v1/chat/completions \
-d '{"model":"...","messages":[...],
"adapter":"humanizer-sft+humanizer-dpo"}'
```
`optiq serve` 在同一基础模型上挂载两个适配器。请求体中的 `adapter` 字段如果使用 `a+b` 形式,则会在单次前向传播中同时应用两个LoRA残差,而不是在它们之间切换,并且无需重新加载模型。经典的单适配器语法(`"adapter": "humanizer-sft"`)仍然有效。哨兵值 `"adapter": "base"` 则完全绕过适配器激活。可用于在同一服务进程中进行A/B对比。
OptIQ Lab 设置,服务器页面。顶部卡片显示当前加载的MiniCPM5-1B-OptIQ-4bit模型在端口8080上。下方是一个LoRA适配器部分,列出humanizer-sft和humanizer-dpo作为已挂载的芯片。相同的多适配器挂载,在Lab中展示。设置 → 服务器列出已注册的适配器;一旦挂载,可在聊天界面按请求选取。
## 为什么堆叠优于单独使用任一适配器
仅使用SFT适配器时,P(AI)得分为0.50,仅比源略好。单独使用DPO适配器毫无意义。它是作为相对于SFT的增量训练的,而不是一个绝对的LoRA。如果SFT未激活,你只是将一个小扰动应用于基础模型,根本无法恢复SFT的分布。
堆叠重现了训练时的前向传播:
堆叠LoRA线性层 · 训练
```python
# 训练期间(冻结的SFT + 可训练的DPO):
y = base(x) + sft_scale * (x @ sft_a @ sft_b)
+ dpo_scale * ((dropout(x) @ lora_a) @ lora_b)
# 服务时(两个适配器均已挂载,使用"a+b"语法):
y = base(x) + sft_scale * (x @ sft_a @ sft_b)
+ dpo_scale * (x @ lora_a @ lora_b)
```
因此训练时的计算与推理时的计算使用相同的权重得出相同的表达式,这就是为什么留出集上的P(AI)与训练轨迹预测的结果一致。
## OptIQ Lab中的相同流程
如果你不喜欢命令行,Lab界面也提供了相同的管线。训练完成后,向导的最后一步提供了适配器合并 + 模型导出 + 推送到Hugging Face三个可选复选框。
OptIQ Lab 微调向导,最后一步。DPO适配器已保存。"与另一个适配器合并"已勾选,并选择SFT人化器作为第二个适配器。"打包为独立模型"也已勾选,并选择MiniCPM5-1B基础模型。底部是"推送到Hugging Face"部分。微调向导的第5步。"合并"将两个适配器合并,"打包"导出一个模型目录,"推送"将其发送到Hub。
## 试试看
所有内容(基础模型、两个适配器、模型卡片、留出评估)都已打包成一个Hugging Face仓库:`mlx-community/humanizer-1B-OptIQ-4bit` (https://huggingface.co/mlx-community/humanizer-1B-OptIQ-4bit)(约1.1 GB)。下载一次,使用两个适配器堆叠启动服务:
终端 · 使用已发布的制品
```bash
$ pip install 'mlx-optiq>=0.1.4'
$ huggingface-cli download mlx-community/humanizer-1B-OptIQ-4bit \
--local-dir ./humanizer-1B-OptIQ-4bit
$ optiq serve \
--model ./humanizer-1B-OptIQ-4bit \
--adapter ./humanizer-1B-OptIQ-4bit/adapters/humanizer-sft \
--adapter ./humanizer-1B-OptIQ-4bit/adapters/humanizer-dpo
```
在 `localhost:8080` 上提供OpenAI兼容端点。将任何客户端(Open WebUI、Continue、你自己的脚本)指向该端点,在请求体中发送 `"adapter": "humanizer-sft+humanizer-dpo"`,你就拥有了一个本地人化器。
关于我们测量结果的说明
RADAR-Vicuna-7B 只是众多AI检测器之一。P(AI)=0.37 意味着我们的改写结果在RADAR的评分尺度上与EditLens人类参考集落在相同位置(基于200份留出草稿)。其他检测器会给出不同的绝对值,而且检测器军备竞赛意味着任何特定分数都有保质期。可复现的声明是与源的差距以及对固定人类参考的差距弥合度。这两项在我们的整个留出集上均成立。
## 下一步
OptIQ中实现这一功能的关键是 `--mount-adapter` 以及多适配器服务,两者均在v0.1.4中发布。它们不仅适用于人化任务,也适用于任何其他SFT后接DPO继续训练。如果你有任何任务的SFT方案和偏好数据集(代码风格、品牌语气、拒绝行为等),同样的两个命令就能为你提供一个从SFT继续训练的DPO LoRA,而不是从头开始。
关于训练器、每个 `--preset` 选项以及数据集格式的参考,请查阅LoRA微调指南 (https://mlx-optiq.com/docs/finetune)。多适配器服务以及 `"a+b"` 堆叠语法在服务文档 (https://mlx-optiq.com/docs/serve#adapters) 中。
mlx-optiq 团队
相似文章
Altworld/Hemmingway-1
Hemmingway-1 是一款拥有270亿参数的开源AI模型,专注于日常写作任务,在用于类似人类沟通的基准测试中表现优于领先模型。
基础模型被AI检测器视为人类
这篇论文揭示,GPTZero和Pangram等商用AI检测器将基础语言模型生成的文本判定为几乎完全是人类撰写,而经过指令微调的模型输出则被标记为AI生成。作者提出了HIP,一种与检测器无关的迭代改写流程,能在保持语义的同时提升文本的类人性。
Hemmingway-1,一款用于创意写作的27B开放权重模型(EQ-Bench 4:1330,Apache-2.0)
Hemmingway-1是一款专为创意写作设计的27B开放权重模型,在EQ-Bench 4上获得1330分,并声称在与前沿模型的盲测中具有类人性能。
基础模型在AI检测器中像人类
一项研究发现,基础语言模型在AI检测器中看起来像是人类写的,而经过指令微调的模型则不然。作者提出了一种名为HIP的改写管道,该管道能在不同模型规模下提高文本的人类相似度,同时保持语义。
@AdinaYakup: Macaron-V1-Preview-749B 一种来自 MindLab 的 Mixture-of-LoRA 个人代理模型,基于 744B 基础模型和 5 个专业 LoRA,生成式 UI…
MindLab 发布了 Macaron-V1-Preview-749B,这是一种基于 744B 基础模型和 5 个专业 LoRA 的 Mixture-of-LoRA 个人代理模型,以生成式 UI 为核心技能,支持 202K 上下文,采用 MIT 许可证。