本地跑 Ollama 或 llama.cpp 的人,大多把下载下来的几个 GB 的 GGUF 当成黑盒:能出字就行,里面长什么样不管。有人把这个盒子撬开了——看层、看注意力头、看词表、看聊天模板,然后追问一句:哪些部分是模型其实不需要的,删掉之后又会坏在哪。
![]()
工具叫 NeuronDump,一个 Rust 单二进制程序,MIT 协议,带命令行和本地网页界面。它直接读 GGUF 文件,没有针对任何具体模型写死逻辑。
能做的事分四块:
- 检查:架构、层(包括 SSM 与注意力混合的模型)、注意力头、解码并分类后的词表、以决策树形式呈现的聊天模板,以及权重统计。
- 图谱:把模型画成 3D(或 2D)图,可以从分区一路点开,直到单个注意力头、神经元桶和 MoE 专家。
- 切割并看影响:选中任意部分,立刻看到省下多少体积、哪些连接会断开、llama.cpp 还能不能加载这个文件。
- 扫描:逐层(或逐头)切一遍,按损伤程度排序,把最不重要的部分写成更小的 GGUF,外加一个 Ollama Modelfile。
网页界面里,模型以 3D 城市视图呈现,每个部件按"能不能删"上色:安全、有风险、或者直接搞坏模型。点任意一块,能看到它的体积、量化方式和重要性,可以展开到子节点,也可以加进待切割列表。
瘦身是两步走:先分析,再应用一份可审阅的方案。分析产出一个普通 JSON 文件,写盘之前可以自己看、自己改;--only 参数用来限定只切哪一类,比如只动词表。切割后的模型还能和原模型并排跑:开启 trace 特性编译后,NeuronDump 在内存里同时运行两个模型,对比下一个 token、KL 散度、生成文本、困惑度,以及逐层的 logit lens。
作者列了几个自己跑出来的结果。
DeepSeek-R1 8B 就是 Qwen3 8B,每个权重都略有改动。神经元在同样的位置,数量也一样,其中第 6 层有一个神经元把内部状态放大了约 33 倍。切掉这一层,两个模型都只输出噪音。
在 llama3.2:1b 上,切掉最后一层反而让模型在某条提示上更自信——尽管除前两层之外,没有任何一层在真实文本上对困惑度的伤害比它更大。
还有一个细节:DeepSeek 的聊天模板会输出一些不在其词表里的工具调用标记,于是每个标记都被拆成 11 个普通 token。
安装方式两种。Windows 和 Linux 的预编译二进制在 releases 页面,解压后直接跑 neurondump list;或者从源码构建,需要 Rust 1.88 以上,克隆仓库后用 cargo 安装。不带参数运行会让人在交互式命令行和网页界面之间选。
限制也写得明白:项目还早,主要在 Windows 上配合 Ollama 模型测过。推理仅用 CPU,没有 KV 缓存。模拟覆盖 llama、qwen2/3、gemma、phi3 和 bert 系列,MoE 和混合模型目前只做静态分析。把头或神经元置零能保持文件可加载,但不会让文件变小。已知缺口列在 TEST.md 里,遇到没测过的模型,作者希望收到反馈。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.