Zum Inhalt springen
ModelÜberprüftExtern
Herunterladen

SmolLM3 3B Pick

基于 SmolLM3-3B 使用 PICK(Selective Component Ablation for Refusal Removal)方法选择性移除拒绝行为后的模型。

ArtText modelBasismodellHuggingFaceTB/SmolLM3-3BVersionmodelVerleger@XuehangCangCBewertung

Modellquelle

Art
Text model
Dateigröße
5,73 GB
Basismodell
HuggingFaceTB/SmolLM3-3B
Version
vmodel
Aktualisiert
23. Okt. 2026
Verleger
@XuehangCang
Downloads
15
Parameter
3B
Quelle
Hugging Face

Quellenbeschreibung

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
预估 KL0.000051
KL 预算使用率1.1%
总耗时10 分 3 秒

各层消融分布

层消融头数消融神经元数
004,192
114,909
225,366
305,858
4106,080
596,013
645,552
705,980
875,595
9125,792
1044,940
1135,639
1224,723
1345,151
1424,005
1574,738
1675,255
1764,583
1854,555
1975,143
2085,260
2175,724
2205,229
2315,570
2465,743
25126,022
2665,663
2745,837
2886,177
2986,220
30106,237
31126,187
32106,217
33146,198
3486,021
35115,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 通过以下步骤实现选择性消融:

  1. 方向计算 — 在残差流空间中计算「拒绝方向」(difference-of-means + 投影正交化)
  2. 归因分析 — 计算每个注意力头和 MLP 神经元对拒绝方向的贡献度
  3. 特异性评分 — 区分「拒绝专用」组件和「通用推理」组件
  4. KL-aware 选择 — 在 KL 预算约束下贪心选择性价比最高的组件
  5. 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 许可。

Quellen

1 Quelle
Hugging FacePrimärVersion cef7ed303b531a14dd64ce19297c81a2827107e4
huggingface.co/XuehangCang/SmolLM3-3B-Pick/tree/cef7ed303b531a14dd64ce19297c81a2827107e4

Verifiziert 23. Okt.

Modellartefakte

1 Artefakt

model.safetensors

safetensors · 5,73 GB · SHA-256 4d693decff9d…bf40 · Hugging Face

Herunterladen

Quellenauszüge

3 Auszüge

--- 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