我们发现了什么
Show HN:Qwen3-4B,训练去除 AI 写作癖好。标题:Qwen3-4B,训练去除 AI 写作癖好。URL 来源:https://100toolkit.com/blog/deslop-model/ Markdown 内容:给你一个小型开源模型,在 MacBook Air 上微调而成,写作时不会使用破折号、“不是 X,而是 Y”的句式或三项并列列表,也不需要系统提示词;你可以使用 Ollama 在本地运行它。
- 来源:Hacker News(发现于 2026-10-20)
- 证据等级:D · 发现产品或需求信号,暂未获得可核验的商业证据。
- 商业模式:待核验
- 主题:独立产品
- 初筛评分:17.3/100 · 收录 1 次
证据,比故事更重要。
规则清洗与初筛,未经人工商业核验。原文语境、实际客户和付费情况仍需自行验证。
引用与数字披露
来源类型(原作者自述/第三方测算/媒体转引)需采集端标注,本版尚未落字段。
- 作者
- 未标注
- 抓取日期
- 来源类型
- 未标注
- 币种
- 未标注
- 口径
- 未标注
- 披露主体
- 未标注
- 披露日期
- 未标注
上下文核对:来源原文含限定词projection,中文摘要未逐字保留 —— 引用或跨期比较前请回原文核对,别把估算读成已实现。
中文辅助译文(全文)
下载与使用
量化版本(Q4KM,2.5 GB)可在笔记本电脑上通过 Ollama 或 llama.cpp 运行:
ollama run hf.co/erikkannike/qwen3-4b-deslop-v4-GGUF:Q4KM llama-cli -hf erikkannike/qwen3-4b-deslop-v4-GGUF:Q4KM
全精度权重可以像加载任何 Qwen3-4B 检查点一样通过 transformers 加载:
from transformers import AutoModelForCausalLM, AutoTokenizer name = "erikkannike/qwen3-4b-deslop-v4" tok = AutoTokenizer.frompretrained(name) model = AutoModelForCausalLM.frompretrained(name, torchdtype="auto") msgs = [{"role": "user", "content": "Write a LinkedIn post about switching to a four-day week."}] ids = tok.applychattemplate(msgs, addgenerationprompt=True, returntensors="pt") out = model.generate(ids, maxnewtokens=300, dosample=True, temperature=0.7) print(tok.decode(out[0][ids.shape[1]:], skipspecial_tokens=True))
该仓库也分别提供了这些组成部分:LoRA 适配器(126 MB)和神经元编辑,后者是一份 175 字节的列表,包含四个权重列及其缩放因子。适配器是在启用该编辑的情况下训练的,因此二者需要配合使用。
限制
语气较为平淡:模型会写出一连串简短而断然的句子,其个人化文章读起来像日记。
它也仍会编造内容:如今很少出现研究和百分比,但虚构的人名和地点却很常见,例如一家位于枫树街、由一位名叫 Maria 的女性经营的咖啡馆,因为具体细节正是每一轮训练都会给予奖励的东西。它还经常写得过长,要求“约 150 个词”时,答案往往接近 200 个词。
我只在这些体裁中测试过简短的英文散文。代码、长对话、其他语言和工具使用可能并不比原始模型更好,甚至更差。该评分是我用正则表达式写成的风格指南,尚未通过不公开答案的读者盲测加以验证。不同运行之间的分数也会发生变化:仅因采样存在差异,同一个模型通过适配器运行时得分为 10.2,而以合并权重的形式运行时得分为 12.5。
后续步骤
每名学生最终都达到了其教师所能写出的最佳答案的水平,因此更好的模型需要更好的教师。我正在整理一批优秀的 human 写作、公有领域文章和书信,以及现代作品,准备将其作为基础模型的示例。基础模型从未经过助手训练,仍会模仿其学习对象中的那些人写作。如果这位教师写出的内容比这个模型更好,那么同样的方法也应培养出既有一定品味、又有良好习惯的学生。之后,我会将同样的流程应用于一个 7 至 8B 的模型和一个约 30B 的模型,并进行一次盲测,让人们选出更好的文本。
方法说明与注意事项
基础模型:Qwen3-4B-Instruct-2507,采用 bf16。每个适配器都是应用于所有注意力和 MLP 投影的 rank-16 LoRA,在仅包含用户提示的裸输入上训练两个 epoch,仅对响应计算损失;在 M2 MacBook Air 上,每轮耗时一至三小时。
测试集:十个从未用于训练的主题,每个主题包含四种体裁(博客文章、LinkedIn 帖子、解释文章、评论文章),每个提示在温度 0.7 下采样生成一个答案,不使用系统提示。漂移指标是模型在 22 段人类散文上相对于原始模型的 KL 散度。
任务契合度检查采用简单规则(评论文章开头附近是否出现立场词、反思类文本中是否使用第一人称代词、电子邮件中是否有问候语、字数),但会遗漏读者能够察觉的问题。训练数据也依据这里报告的相同检查进行了过滤,因此任务契合度数据会在一定程度上美化模型的表现。
神经元编辑会翻转四个 MLP 神经元的符号(第 32 层神经元 4852、第 33 层神经元 348、第 28 层神经元 1121、第 32 层神经元 5418),这等同于将它们所在层的下投影权重中的四列取反。GGUF 版本是从合并权重转换得到的 Q8_0 格式进一步量化而来的。
读者聊天和实时光标通过 WebRTC 将读者直接连接起来(使用 Trystero 和公共 Nostr 中继)。对等方可以看到彼此的 IP 地址,不会保存任何内容,而“隐藏”功能会断开你的连接。
译文由上游机器翻译生成,可能有误;判断请以英文原文为准。
英文原文(来源本站未改写)
Downloads and usage
The quantised build (Q4KM, 2.5 GB) runs on a laptop with Ollama or llama.cpp:
ollama run hf.co/erikkannike/qwen3-4b-deslop-v4-GGUF:Q4KM llama-cli -hf erikkannike/qwen3-4b-deslop-v4-GGUF:Q4KM
The full-precision weights load with transformers like any Qwen3-4B checkpoint:
from transformers import AutoModelForCausalLM, AutoTokenizer name = "erikkannike/qwen3-4b-deslop-v4" tok = AutoTokenizer.frompretrained(name) model = AutoModelForCausalLM.frompretrained(name, torchdtype="auto") msgs = [{"role": "user", "content": "Write a LinkedIn post about switching to a four-day week."}] ids = tok.applychattemplate(msgs, addgenerationprompt=True, returntensors="pt") out = model.generate(ids, maxnewtokens=300, dosample=True, temperature=0.7) print(tok.decode(out[0][ids.shape[1]:], skipspecial_tokens=True))
The repo also has the parts on their own: the LoRA adapter (126 MB) and the neuron edit, a 175-byte list of four weight columns and their scales. The adapter was trained with the edit active, so the two go together.
Limitations
The voice is flat: the model writes runs of short declarative sentences, and its personal pieces read like diary entries.
It also still makes things up: studies and percentages are rare now, but invented names and places are common, like a coffee shop on Maple Street run by a woman named Maria, because concrete detail is what every round rewarded. It also runs long, and answers to "about 150 words" often come in near 200.
I have only tested short English prose in these genres. Code, long conversations, other languages and tool use may be no better than the original model, or worse. The score is my style guide written as regular expressions, and no blind test with readers has checked it yet. The numbers also move between runs: the same model scored 10.2 through the adapter and 12.5 as merged weights, from sampling differences alone.
Next steps
Each student ended up about as good as the best answers its teacher could write, so a better model needs a better teacher. I'm putting together a set of excellent human writing, public-domain essays and letters plus modern pieces, to use as examples for a base model. A base model never went through assistant training and still writes like the people it learned from. If that teacher writes better than this model does, the same recipe should produce a student with some taste as well as clean habits. After that comes the same pipeline on a 7 to 8B model and one around 30B, and a blind test where people pick the better text.
Method notes and caveats
Base model: Qwen3-4B-Instruct-2507 in bf16. Every adapter is a rank-16 LoRA on all attention and MLP projections, trained for two epochs on the bare user prompt with loss on the response only, between one and three hours per round on an M2 MacBook Air.
Test set: ten topics never used in training, each in four genres (blog post, LinkedIn post, explainer, opinion piece), one sampled answer per prompt at temperature 0.7, no system prompt. Drift is the KL divergence from the original model on 22 passages of human prose.
The task-fit checks are simple rules (a stance word near the start of an opinion piece, first-person pronouns in a reflection, a greeting in an email, word counts) and they miss things a reader would catch. The training data was filtered on the same checks reported here, so the task-fit numbers flatter the model somewhat.
The neuron edit flips the sign of four MLP neurons (layer 32 neuron 4852, layer 33 neuron 348, layer 28 neuron 1121, layer 32 neuron 5418), which is the same as negating four columns of their layers' down-projection weights. The GGUF build was quantised from a Q8_0 conversion of the merged weights.
The readers' chat and live cursors connect readers directly over WebRTC (Trystero with public Nostr relays). Peers can see each other's IP addresses, nothing is saved, and "hide" disconnects you.
这条还缺什么证据?
下面每条都由本条已有字段推出(等级、理由、商业模式、来源次数、是否演示), 本站不生成推测性结论;通用验证方法放在方法论页。
- 可核验的收入或付费证据查官网定价页与付费口径;第三方数据源(如 GetLatka)只作旁证,需标注来源与时点。
- 商业模式未定确认按席位/按用量/授权还是开源托管版收费;开源项目另查 LICENSE 与是否存在付费版。
- 只有单一来源找一手站点或其他渠道是否重复出现同一产品;社区热帖数量不等于商业进展。
通用验证清单(谁有这个问题/谁愿意付费/一个人能交付哪一小步)见我们的筛选方法。