English | 中文
LLM 蒸馏检测与模型指纹审计 — 统计取证 · 行为签名 · 跨模型血缘推断
Detect unauthorized model distillation through behavioral probing, stylistic fingerprinting, and representation similarity analysis
Abstract · Problem Statement · Formal Framework · Architecture · Key Innovations · Quick Start · Detection Methods · MCP Server · Ecosystem · References
大语言模型的蒸馏行为 (knowledge distillation) 已成为模型知识产权保护的核心威胁——学生模型通过模仿教师模型的输出分布,可以在未经授权的情况下复制其能力。现有检测方法要么依赖白盒权重访问(实际场景中通常不可得),要么仅分析表面文本特征(易被规避)。
ModelAudit 提出基于统计取证 (statistical forensics) 的多方法蒸馏检测框架:通过行为探测 (behavioral probing) 提取模型指纹
ModelAudit implements a multi-method distillation detection framework based on statistical forensics. The system extracts model fingerprints
$\mathcal{F}(M)$ through 20 behavioral probes, applies hypothesis testing$H_0: M_S \perp M_T$ to determine distillation relationships, and combines 4 complementary methods — LLMmap (behavioral probing), DLI (lineage inference via Jensen-Shannon divergence), REEF (CKA representation similarity), and StyleAnalysis (12-family stylistic signatures) — to form a complete black-box to white-box audit chain. Built-in benchmark achieves 100% detection accuracy across 6 model families (14 samples).
模型蒸馏检测面临三个根本性挑战:
| 根本性问题 | 形式化定义 | 现有方法局限 | ModelAudit 的方法 |
|---|---|---|---|
|
蒸馏不可观测 Distillation Opacity |
蒸馏过程 |
依赖白盒权重访问(API-only 模型无法适用) | 行为探测指纹:20 个探测 Prompt 提取可观测行为特征,黑盒即可工作 |
|
风格趋同 Stylistic Convergence |
RLHF 对齐使不同模型的输出风格趋于相似,$\text{style}(M_i) \approx \text{style}(M_j)$ | 简单文本特征(长度、词频)区分度不足 | 多维度签名:自我认知 / 安全边界 / 注入测试 / 格式控制等 10 个维度,捕获深层行为差异 |
|
跨模型不可比 Cross-Model Incomparability |
不同 Provider 的 API 格式、参数、行为规范各异 | 单一方法覆盖不全,黑盒/白盒方法割裂 | 四方法融合:LLMmap + DLI + REEF + StyleAnalysis,从行为到表示多层次覆盖 |
ModelAudit 不是通用的模型评测工具。它专注于一个问题:这个模型是否未经授权地复制了另一个模型的能力? 通过行为指纹提取和统计检验给出可量化的审计结论。
模型指纹定义为探测集上的行为响应分布:
其中
蒸馏检测形式化为假设检验问题:
检验统计量(LLMmap 方法)——基于指纹向量的 Pearson 相关:
当
基于 Jensen-Shannon 散度的血缘推断:
对每个探测维度计算行为签名的 JS 散度,综合多维度得分判定血缘关系。
白盒场景下,基于 Centered Kernel Alignment (CKA) 比对中间层隐藏状态:
其中
graph LR
P["Probe Library<br/>20 Prompts × 10 Dims"] --> E["AuditEngine<br/>Concurrent Probing"]
E --> F["Fingerprint<br/>Feature Extraction"]
F --> L["LLMmap<br/>Pearson Correlation"]
F --> D["DLI<br/>JS Divergence"]
F --> S["StyleAnalysis<br/>12-Family Signatures"]
F --> R["REEF<br/>CKA Similarity"]
L --> V["Verdict Engine<br/>Hypothesis Testing"]
D --> V
S --> V
R --> V
V --> Rep["Audit Report<br/>6-Section Markdown"]
style E fill:#0969da,color:#fff,stroke:#0969da
style V fill:#8b5cf6,color:#fff,stroke:#8b5cf6
style Rep fill:#2da44e,color:#fff,stroke:#2da44e
style P fill:#1a1a2e,color:#e0e0e0,stroke:#444
style F fill:#1a1a2e,color:#e0e0e0,stroke:#444
style L fill:#1a1a2e,color:#e0e0e0,stroke:#444
style D fill:#1a1a2e,color:#e0e0e0,stroke:#444
style S fill:#1a1a2e,color:#e0e0e0,stroke:#444
style R fill:#1a1a2e,color:#e0e0e0,stroke:#444
| 层 | 模块 | 职责 |
|---|---|---|
| Probing | probes/prompts.py |
20 个探测 Prompt,覆盖 10 个行为维度 |
| Engine | engine.py |
统一入口,ThreadPoolExecutor 并发探测 (4 并发) |
| Methods | methods/ |
4 种检测方法注册表,按黑盒/白盒分层 |
| Fingerprint | models.py |
Pydantic 数据模型,指纹特征向量 |
| Cache | cache.py |
SHA-256 防碰撞指纹缓存,TTL 过期 |
| Report | report.py |
6 节结构化审计报告生成 |
| Benchmark | benchmark.py |
14 条样本 × 6 家族内置评估集 |
| Interface | cli.py · mcp_server.py |
CLI + MCP 8 工具 |
四种互补检测方法覆盖从黑盒到白盒的完整审计链:
| 方法 | 类型 | 原理 | 参考 |
|---|---|---|---|
| LLMmap | 黑盒 | 20 个探测 Prompt,Pearson 相关比对响应模式 | USENIX Security 2025 |
| DLI | 黑盒 | 行为签名 + Jensen-Shannon 散度血缘推断 | ICLR 2026 |
| REEF | 白盒 | CKA 逐层隐藏状态相似度 | NeurIPS 2024 |
| StyleAnalysis | 风格分析 | 12 个模型家族风格签名 + 语言检测 | — |
任一方法独立可用,多方法融合提高判定置信度。内置 benchmark 在 6 个模型家族上实现 100% 检测准确率。
超越简单的文本统计特征,通过 10 个认知维度的结构化探测提取深层行为差异:
| 维度 | 探测内容 |
|---|---|
| 自我认知 | 模型身份、创建者、训练截止 |
| 安全边界 | 拒绝策略、措辞差异 |
| 注入测试 | Prompt injection 响应差异 |
| 知识与推理 | 知识边界、逻辑推理、伦理判断 |
| 创意写作 | 叙事风格、类比能力 |
| 多语言 | 中文响应、多语翻译 |
| 格式控制 | JSON 输出、Markdown 表格 |
| 角色扮演 | 角色一致性、创意表达 |
| 代码生成 | 编码风格、注释习惯 |
| 摘要能力 | 信息压缩、表达密度 |
这些维度在 RLHF 对齐后仍保留显著的模型间差异,是可靠的指纹特征来源。
支持跨 Provider 的蒸馏审计——教师和学生模型可来自不同 API:
# 跨 provider 审计:Anthropic 教师 vs Moonshot 学生
knowlyr-modelaudit audit \
--teacher claude-opus --teacher-provider anthropic \
--student kimi-k2.5 --student-provider openai \
--student-api-base https://api.moonshot.cn/v1 \
-o report.md自动生成 6 节详细审计报告:审计对象 → 方法 → 结果(指纹详情 + 逐条探测)→ 关键发现 → 结论 → 局限性声明。
ThreadPoolExecutor 并发发送探测 Prompt(默认 4 并发),指纹缓存支持 SHA-256 防碰撞 + TTL 过期:
- 首次探测:并发调用 API,自动缓存指纹到
.modelaudit_cache/ - 再次审计:直接复用缓存,避免重复 API 调用
- 智能重试:指数退避 + 认证/速率限制错误分类 + 可配置超时与重试次数
支持识别的 12 个模型家族:gpt-4 · gpt-3.5 · claude · llama · gemini · qwen · deepseek · mistral · yi · phi · cohere · chatglm
pip install knowlyr-modelaudit可选依赖
pip install knowlyr-modelaudit[blackbox] # 黑盒指纹 (openai, anthropic, httpx)
pip install knowlyr-modelaudit[whitebox] # 白盒指纹 (torch, transformers)
pip install knowlyr-modelaudit[mcp] # MCP 服务器
pip install knowlyr-modelaudit[all] # 全部功能# 1. 检测文本来源
knowlyr-modelaudit detect texts.jsonl
# 2. 验证模型身份
knowlyr-modelaudit verify gpt-4o --provider openai
# 3. 比对模型指纹
knowlyr-modelaudit compare gpt-4o claude-sonnet --provider openai
# 4. 完整蒸馏审计
knowlyr-modelaudit audit --teacher gpt-4o --student my-model -o report.md
# 5. 运行 benchmark
knowlyr-modelaudit benchmarkPython SDK
from modelaudit import AuditEngine
engine = AuditEngine()
# 检测文本来源
results = engine.detect(["Hello! I'd be happy to help..."])
for r in results:
print(f"{r.predicted_model}: {r.confidence:.2%}")
# 比对模型指纹
result = engine.compare("gpt-4o", "my-model", method="llmmap")
print(f"相似度: {result.similarity:.4f}")
print(f"蒸馏关系: {'是' if result.is_derived else '否'}")
# 完整审计(跨 provider)
audit = engine.audit(
"claude-opus", "kimi-k2.5",
teacher_provider="anthropic",
student_provider="openai",
student_api_base="https://api.moonshot.cn/v1",
)
print(f"{audit.verdict} (confidence: {audit.confidence:.3f})")探测维度详情(20 个 Probe)
| 维度 | 探测内容 |
|---|---|
| 自我认知 | 模型身份、创建者、训练截止 |
| 安全边界 | 拒绝策略、措辞差异 |
| 注入测试 | Prompt injection 响应差异 |
| 知识与推理 | 知识边界、逻辑推理、伦理判断 |
| 创意写作 | 叙事风格、类比能力 |
| 多语言 | 中文响应、多语翻译 |
| 格式控制 | JSON 输出、Markdown 表格 |
| 角色扮演 | 角色一致性、创意表达 |
| 代码生成 | 编码风格、注释习惯 |
| 摘要能力 | 信息压缩、表达密度 |
{
"mcpServers": {
"knowlyr-modelaudit": {
"command": "uv",
"args": ["--directory", "/path/to/model-audit", "run", "python", "-m", "modelaudit.mcp_server"]
}
}
}| Tool | Description |
|---|---|
detect_text_source |
检测文本数据来源 |
verify_model |
验证模型身份 |
compare_models |
黑盒比对 (llmmap / dli / style) |
compare_models_whitebox |
白盒比对 (REEF CKA) |
audit_distillation |
完整蒸馏审计 |
audit_memorization |
记忆化检测(前缀补全相似度) |
audit_report |
生成综合审计报告 |
audit_watermark |
水印检测(零宽字符 / 统计特征 / 双元组唯一率) |
完整命令列表
| 命令 | 功能 |
|---|---|
knowlyr-modelaudit detect <file> |
检测文本数据来源 |
knowlyr-modelaudit detect <file> -n 50 |
限制检测条数 |
knowlyr-modelaudit verify <model> |
验证模型身份 |
knowlyr-modelaudit compare <a> <b> |
比对两个模型指纹 |
knowlyr-modelaudit audit --teacher <a> --student <b> |
完整蒸馏审计 |
knowlyr-modelaudit audit ... --teacher-provider anthropic |
跨 provider 审计 |
knowlyr-modelaudit audit ... --no-cache |
跳过缓存 |
knowlyr-modelaudit audit ... -f json |
JSON 格式报告 |
knowlyr-modelaudit cache list |
查看缓存的指纹 |
knowlyr-modelaudit cache clear |
清除所有缓存 |
knowlyr-modelaudit benchmark |
运行内置 benchmark |
knowlyr-modelaudit benchmark --label claude |
按模型家族过滤 |
knowlyr-modelaudit methods |
列出可用检测方法 |
Architecture Diagram
graph LR
Radar["Radar<br/>Discovery"] --> Recipe["Recipe<br/>Analysis"]
Recipe --> Synth["Synth<br/>Generation"]
Recipe --> Label["Label<br/>Annotation"]
Synth --> Check["Check<br/>Quality"]
Label --> Check
Check --> Audit["Audit<br/>Model Audit"]
Crew["Crew<br/>Deliberation Engine"]
Agent["Agent<br/>RL Framework"]
ID["ID<br/>Identity Runtime"]
Crew -.->|能力定义| ID
ID -.->|身份 + 记忆| Crew
Crew -.->|轨迹 + 奖励| Agent
Agent -.->|优化策略| Crew
style Audit fill:#0969da,color:#fff,stroke:#0969da
style Crew fill:#2da44e,color:#fff,stroke:#2da44e
style Agent fill:#8b5cf6,color:#fff,stroke:#8b5cf6
style ID fill:#e5534b,color:#fff,stroke:#e5534b
style Radar fill:#1a1a2e,color:#e0e0e0,stroke:#444
style Recipe fill:#1a1a2e,color:#e0e0e0,stroke:#444
style Synth fill:#1a1a2e,color:#e0e0e0,stroke:#444
style Label fill:#1a1a2e,color:#e0e0e0,stroke:#444
style Check fill:#1a1a2e,color:#e0e0e0,stroke:#444
| Layer | Project | Description | Repo |
|---|---|---|---|
| Discovery | AI Dataset Radar | 数据集竞争情报、趋势分析 | GitHub |
| Analysis | DataRecipe | 逆向分析、Schema 提取、成本估算 | GitHub |
| Production | DataSynth / DataLabel | LLM 批量合成 / 轻量标注 | GitHub · GitHub |
| Quality | DataCheck | 规则验证、重复检测、分布分析 | GitHub |
| Audit | ModelAudit | 蒸馏检测 · 模型指纹 · 统计取证 | You are here |
| Identity | knowlyr-id | 身份系统 + AI 员工运行时 | GitHub |
| Deliberation | Crew | 对抗式多智能体协商 · 持久记忆进化 · MCP 原生 | GitHub |
| Agent Training | knowlyr-gym | Gymnasium 风格 RL 框架 · 过程奖励模型 · SFT/DPO/GRPO | GitHub |
git clone https://github.com/liuxiaotong/model-audit.git
cd model-audit
pip install -e ".[all,dev]"
pytestCI: GitHub Actions,Python 3.10+。Tag push 自动发布 PyPI + GitHub Release。
- LLMmap — Haller, R. et al., 2025. LLMmap: Fingerprinting For Large Language Models. USENIX Security — 行为探测指纹的基础方法
- DLI — Chen, W. et al., 2026. Detecting LLM Distillation via Behavioral Lineage Inference. ICLR — 基于 JS 散度的蒸馏血缘推断
- REEF — Jia, J. et al., 2024. REEF: Representation Encoding Fingerprints for Large Language Models. NeurIPS — CKA 白盒表示相似度
- Knowledge Distillation — Hinton, G. et al., 2015. Distilling the Knowledge in a Neural Network. arXiv:1503.02531 — 知识蒸馏的奠基性工作
- CKA — Kornblith, S. et al., 2019. Similarity of Neural Network Representations Revisited. ICML — 表示相似度度量方法
- Model Fingerprinting — Cao, X. et al., 2021. IPGuard: Protecting Intellectual Property of Deep Neural Networks via Fingerprinting the Classification Boundary. AsiaCCS