面向因果语言模型的权重级取证。 将两个模型输入其中,它便会告诉你它们之间有何关联——以及其中一个模型被教会了什么。
| 问题 | 分析 |
|---|---|
| 一次微调在多大程度上、在何处改变了权重? | Weight Diff |
| 哪些 token 被最重的更新所提升、抑制或对其产生反应? | Token Shifts |
| 一个 Hub 模型与其声明的父模型和子模型相比如何? | Hub Lineage |
| 这个模型是否派生自另一个模型,即使未声明或经过伪装? | Provenance |
| 两个模型的预测在何处不同,微调又写入了什么? | Behaviour Probe |
它可读取完整模型、合并后的微调、LoRA 适配器、训练检查点、GGUF 文件以及 bitsandbytes 4/8 位检查点——既可在本地读取,也可直接从 Hugging Face Hub 读取,且仅获取所需的张量。每项分析都会保存为一份自包含的 HTML 报告和一份 JSON 报告。
其动机在于安全:审计模型的来源、检测未声明的衍生模型,以及理解对抗性微调教会了模型什么。每一项相似度都会对照零基线报告,因此一个数字可以被当作证据来解读,而非凭感觉。它已在真实模型上得到验证,包括一个对抗性微调,其注入的载荷被 Behaviour Probe 所揭露。
Python 3.11+(在 3.12、Windows 11 上开发;代码与操作系统无关)。
python -m venv venv
venv\Scripts\activate # Linux/macOS: source venv/bin/activate
# torch first, from the wheel index matching your hardware
pip install torch --index-url https://download.pytorch.org/whl/cpu # CPU
# or a CUDA build: https://pytorch.org/get-started/locally/
pip install -r requirements.txt
python run.py check # what this machine can do
私有或受限的 Hub 模型:设置 HF_TOKEN,或使用 huggingface-cli login 登录一次。
python run.py # interactive terminal interface (default)
python run.py web # browser interface on http://127.0.0.1:5000 (address set in Setup)
python run.py check # platform, GPU, packages and available features
两个界面提供相同的菜单——Weight Diff、Token Shifts、Hub Lineage、Provenance、Behaviour Probe、Reports、Environment、Setup。凡是要求提供模型之处,请给出 Hub id(Qwen/Qwen2.5-Coder-1.5B)或本地路径(safetensors 文件夹、检查点、.gguf 文件或 LoRA 适配器)。Pickle 权重(.bin、.pt)绝不会被加载——因为受调查的模型是不可信的。
Web 界面绑定到回环地址且没有身份验证:请勿将其暴露在网络上。
选择一个可疑模型以及用于与之比较的来源:

一项正在运行的分析,带有实时进度:

合并报告——位于各分析章节之上的执行摘要:

每项分析都会被保存;Reports 屏幕可打开、重新渲染、下载和删除它们:

Token Shifts——最重的更新以及它们所提升、抑制或对其产生反应的 token:

作者:Renaud Bidou ([email protected])
依据 MIT 许可证授权——参见 LICENSE。