SmolLM3 3B Pick
基于 SmolLM3-3B 使用 PICK(Selective Component Ablation for Refusal Removal)方法选择性移除拒绝行为后的模型。
Source du modèle
- Type
- Text model
- Taille du fichier
- 5,73 GB
- Modèle de base
- HuggingFaceTB/SmolLM3-3B
- Version
- vmodel
- Mis à jour
- 23 oct. 2026
- Éditeur
- @XuehangCang
- Téléchargements
- 15
- Paramètres
- 3B
- Source
- Hugging Face
Description de la source
SmolLM3-3B-Pick
基于 SmolLM3-3B 使用 PICK(Selective Component Ablation for Refusal Removal)方法选择性移除拒绝行为后的模型。
模型概述
PICK 不是粗暴地修改所有权重来让模型遵从有害请求,而是先精确定位哪些注意力头和 MLP 神经元导致了拒绝行为,然后仅移除那些组件,最小化对通用能力的副作用。
消融参数
| 参数 | 值 |
|---|---|
| KL 预算 | 0.05 |
| 消融强度 | 0.85 |
| 组件占比上限 | 0.5 |
| 最少组件数 | 1 |
| 正交化 | 开启 |
| 安全数据集 | XuehangCang/safe_prompt(800 条) |
| 有害数据集 | XuehangCang/unsafe_prompt(800 条) |
| 评估 Prompt 数 | 50 |
模型架构
| 属性 | 值 |
|---|---|
| 基础模型 | HuggingFaceTB/SmolLM3-3B |
| 层数 | 36 |
| 隐藏维度 | 2048 |
| 注意力头数 | 16 |
| 每头维度 | 128 |
| 中间层维度 | 11008 |
| 参数精度 | bfloat16 |
| LoRA 目标模块 | attn.o_proj, mlp.down_proj(共 72 个模块) |
消融结果
拒绝率变化
| 指标 | 数值 |
|---|---|
| 消融前拒绝数 | 625 / 800(78.1%) |
| 消融后拒绝数 | 114 / 800(14.3%) |
| 拒绝减少 | 511 条(81.8%) |
消融详情
| 指标 | 数值 |
|---|---|
| 总候选组件(头 + 神经元) | 396,864 |
| 选中组件 | 198,432(50.0%) |
| 选中注意力头 | 217 |
| 选中 MLP 神经元 | 198,215 |
| 组件特异性范围 | [0.0, 1,002,576.8] |
| KL 散度 | 0.000558 |
| 预估 KL | 0.000051 |
| KL 预算使用率 | 1.1% |
| 总耗时 | 10 分 3 秒 |
各层消融分布
| 层 | 消融头数 | 消融神经元数 |
|---|---|---|
| 0 | 0 | 4,192 |
| 1 | 1 | 4,909 |
| 2 | 2 | 5,366 |
| 3 | 0 | 5,858 |
| 4 | 10 | 6,080 |
| 5 | 9 | 6,013 |
| 6 | 4 | 5,552 |
| 7 | 0 | 5,980 |
| 8 | 7 | 5,595 |
| 9 | 12 | 5,792 |
| 10 | 4 | 4,940 |
| 11 | 3 | 5,639 |
| 12 | 2 | 4,723 |
| 13 | 4 | 5,151 |
| 14 | 2 | 4,005 |
| 15 | 7 | 4,738 |
| 16 | 7 | 5,255 |
| 17 | 6 | 4,583 |
| 18 | 5 | 4,555 |
| 19 | 7 | 5,143 |
| 20 | 8 | 5,260 |
| 21 | 7 | 5,724 |
| 22 | 0 | 5,229 |
| 23 | 1 | 5,570 |
| 24 | 6 | 5,743 |
| 25 | 12 | 6,022 |
| 26 | 6 | 5,663 |
| 27 | 4 | 5,837 |
| 28 | 8 | 6,177 |
| 29 | 8 | 6,220 |
| 30 | 10 | 6,237 |
| 31 | 12 | 6,187 |
| 32 | 10 | 6,217 |
| 33 | 14 | 6,198 |
| 34 | 8 | 6,021 |
| 35 | 11 | 5,841 |
使用方法
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = 'XuehangCang/SmolLM3-3B-Pick'
device = 'cuda'
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype='bfloat16',
).to(device)
messages = [{'role': 'user', 'content': '你的问题'}]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
)
inputs = tokenizer([text], return_tensors='pt').to(model.device)
generated_ids = model.generate(**inputs, max_new_tokens=512)
output = tokenizer.decode(
generated_ids[0][len(inputs.input_ids[0]):],
skip_special_tokens=True,
)
print(output)
方法
PICK 通过以下步骤实现选择性消融:
- 方向计算 — 在残差流空间中计算「拒绝方向」(difference-of-means + 投影正交化)
- 归因分析 — 计算每个注意力头和 MLP 神经元对拒绝方向的贡献度
- 特异性评分 — 区分「拒绝专用」组件和「通用推理」组件
- KL-aware 选择 — 在 KL 预算约束下贪心选择性价比最高的组件
- Rank-1 LoRA 消融 — 通过 LoRA 精确修改选中组件的权重
局限性
- 本模型仅移除了拒绝行为相关的组件,未经过安全性微调,可能仍会在某些场景下产生不安全输出
- 消融后的模型在通用能力上可能有轻微退化,建议在使用前评估目标任务的表现
- 当前仅评估了 800 条中文有害提示,其他语言的拒绝移除效果未经充分测试
引用
如果 PICK 对你的研究有帮助,请引用:
@software{pick2025,
title = {PICK: Selective Component Ablation for Refusal Removal},
author = {XuehangCang},
year = {2025},
url = {https://github.com/XuehangCang/pick}
}
许可
本模型继承自 SmolLM3-3B 的 Apache 2.0 许可。PICK 工具本身使用 AGPL-3.0 许可。
Sources
1 source
Sources
1 sourceVérifié 23 oct.
Artefacts du modèle
1 artefact
Artefacts du modèle
1 artefactExtraits de sources
3 extraits
Extraits de sources
3 extraits--- language: - zh - en license: apache-2.0 library_name: transformers tags: - smollm - refusal-removal - pick - ablation - safety - alignment pipeline_tag: text-generation base_model: HuggingFaceTB/SmolLM3-3B datasets: - XuehangCang/safe_prompt - XuehangCang/unsafe_prompt model-index: - name: SmolLM3-3B-Pick results: [] --- # SmolLM3-3B-Pick 基于 [SmolLM3-3B](https://huggingface.co/HuggingFaceTB/SmolLM3-3B) 使用 **PICK**(Selective Component Ablation for Refusal Removal)方法选择性移除拒绝行为后的模型。 ## 模型概述 PICK 不是粗暴地修改所有权重来让模型遵从有害请求,而是先精确定位哪些注意力头和 MLP 神经元导致了拒绝行为,然后**仅移除那些组件**,最小化对通用能力的副作用。 ## 消融参数 | 参数 | 值 | |------|-----| | KL 预算 | 0.05 | | 消融强度 | 0.85 | | 组件占比上限 | 0.5 | | 最少组件数 | 1 | | 正交化 | 开启 | | 安全数据集 | XuehangCang/safe_prompt(800 条) | | 有害数据集 | XuehangCang/unsafe_prompt(800 条) | | 评估 Prompt 数 | 50 | ## 模型架构 | 属性 | 值 | |------|-----| | 基础模型 | HuggingFaceTB/SmolLM3-3B | | 层数 | 36 | | 隐藏维度 | 2048 | | 注意力头数 | 16 | | 每头维度 | 128 | | 中间层维度 | 11008 | | 参数精度 | bfloat16 | | LoRA 目标模块 | attn.o_proj, mlp.down_proj(共 72 个模块) | ## 消融结果 ### 拒绝率变化 | 指标 | 数值 | |------|------| | 消融前拒绝数 | 625 / 800(78.1%) | | 消融后拒绝数 | 114 / 800(14.3%) | | 拒绝减少 | 511 条(81.8%) | ### 消融详情 | 指标 | 数值 | |------|------| | 总候选组件(头 + 神经元) | 396,864 | | 选中组件 | 198,432(50.0%) | | 选中注意力头 | 217 | | 选中 MLP 神经元 | 198,215 | | 组件特异性范围 | [0.0, 1,002,576.8] | | KL 散度 | 0.000558 | | 预估 KL | 0.000051 | | KL 预算使用率 | 1.1% | | 总耗时 | 10 分 3 秒 | ### 各层消融分布 | 层 | 消融头数 | 消融神经元数 | |----|---------|-------------| | 0 | 0 | 4,192 | | 1 | 1 | 4,909 | | 2 | 2 | 5,366 | | 3 | 0 | 5,858 | | 4 | 10 | 6,080 | | 5 | 9 | 6,013 | | 6 | 4 | 5,552 | | 7 | 0 | 5,980 | | 8 | 7 | 5,595 | | 9 | 12 | 5,792 | | 10 | 4 | 4,940 | | 11 | 3 | 5,639 | | 12 | 2 | 4,723 | | 13 | 4 | 5,151 | | 14 | 2 | 4,005 | | 15 | 7 | 4,738 | | 16 | 7 | 5,255 | | 17 | 6 | 4,583 | | 18 | 5 | 4,555 | | 19 | 7 | 5,143 | | 20 | 8 | 5,260 | | 21 | 7 | 5,724 | | 22 | 0 | 5,229 | | 23 | 1 | 5,570 | | 24 | 6 | 5,743 | | 25 | 12 | 6,022 | | 26 | 6 | 5,663 | | 27 | 4 | 5,837 | | 28 | 8 | 6,177 | | 29 | 8 | 6,220 | | 30 | 10 | 6,237 | | 31 | 12 | 6,187 | | 32 | 10 | 6,217 | | 33 | 14 | 6,198 | | 34 | 8 | 6,021 | | 35 | 11 | 5,841 | ## 使用方法 ```python from transformers import AutoModelForCausalLM, AutoTokenizer model_name = 'XuehangCang/SmolLM3-3B-Pick' device = 'cuda' tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForCausalLM.f...
Source context: 15 downloads · 0 likes · Pipeline text-generation · Library transformers · Repo XuehangCang/SmolLM3-3B-Pick
Source context: 6 downloads · 0 likes · Pipeline text-generation · Library transformers · Repo XuehangCang/SmolLM3-3B-Pick
