Qwen-Scope SAE-Res-Qwen3.5-9B-Base-W64K-L0_100代码实现原理:深入理解稀疏自动编码器架构

【免费下载链接】SAE-Res-Qwen3.5-9B-Base-W64K-L0_100 【免费下载链接】SAE-Res-Qwen3.5-9B-Base-W64K-L0_100 项目地址: https://ai.gitcode.com/hf_mirrors/Qwen/SAE-Res-Qwen3.5-9B-Base-W64K-L0_100

Qwen-Scope SAE-Res-Qwen3.5-9B-Base-W64K-L0_100是基于Qwen3.5-9B-Base模型构建的稀疏自动编码器(SAE)模块,通过在模型隐藏层中集成和训练SAE,实现对模型内部机制的可解释性分析。该项目采用TopK稀疏约束,能自动提取高度解耦、低冗余且可解释性强的数据特征,为大语言模型的行为分析和优化提供了强大工具。

核心功能与技术优势 ✨

Qwen-Scope作为Qwen系列模型的可解释性模块,主要具备以下核心功能:

  • 特征解耦:通过稀疏性约束,将复杂的模型内部表示分解为独立的特征单元
  • 行为分析:揭示模型决策过程中的关键特征激活模式
  • 模型优化:支持可控推理、评估样本分布分析、数据分类与合成等应用场景

该项目的技术亮点在于:

  • 覆盖32层Transformer的完整残差流(Residual stream)
  • 采用16倍扩展因子(65536宽度SAE匹配4096隐藏维度)
  • 精确控制Top-K=100的稀疏度,确保特征激活的可解释性

模型架构详解 🏗️

整体结构

Qwen-Scope SAE采用TopK稀疏自动编码器架构,在每个前向传播过程中精确保留100个非零特征。模型架构遵循标准自动编码器设计,包含编码器(Encoder)和解码器(Decoder)两部分:

  • 编码器:将残差流输入映射到高维稀疏特征空间
  • 解码器:将稀疏特征重建回原始残差流维度
  • 稀疏约束:通过TopK操作确保每个位置仅激活100个特征

关键参数

属性 数值
基础模型 Qwen3.5-9B-Base
SAE宽度(d_sae) 65536
隐藏层大小(d_model) 4096
扩展因子 16×
Top-K 100
钩子位置 残差流
覆盖层数 0 – 31(共32层)
文件格式 PyTorch .pt字典

代码实现原理 🔍

核心文件结构

项目包含每个Transformer层的SAE checkpoint文件,命名格式为layer{n}.sae.pt(n从0到31),每个文件是包含四个张量的Python字典:

layer0.sae.pt
layer1.sae.pt
...
layer31.sae.pt

每个SAE checkpoint包含的关键张量:

形状 描述
W_enc (65536, 4096) 编码器权重矩阵
W_dec (4096, 65536) 解码器权重矩阵
b_enc (65536,) 编码器偏置
b_dec (4096,) 解码器偏置

特征激活提取流程

特征激活提取是Qwen-Scope的核心功能,实现步骤如下:

  1. 加载基础模型:使用Hugging Face Transformers库加载Qwen3.5-9B-Base模型
  2. 加载SAE权重:选择目标层的SAE checkpoint文件
  3. 注册钩子函数:在Transformer层后捕获残差流输出
  4. 前向传播:输入文本并获取残差流激活
  5. 计算稀疏特征:应用TopK操作提取稀疏特征激活

核心代码实现:

def get_feature_acts(residual: torch.Tensor) -> torch.Tensor:
    """residual: (..., 4096) → sparse feature activations (..., 65536)"""
    pre_acts = residual @ W_enc.T + b_enc
    topk_vals, topk_idx = pre_acts.topk(100, dim=-1)
    acts = torch.zeros_like(pre_acts)
    acts.scatter_(-1, topk_idx, topk_vals)
    return acts

Gradio可视化工具

项目提供了基于Gradio的交互演示工具app.py,支持:

  • 特征比较:对比不同输入文本的特征激活模式
  • 特征引导:通过激活特定特征来引导模型生成
  • 概率可视化:展示生成过程中每个token的概率分布

启动命令:

python app.py \
    --model Qwen/Qwen3.5-9B-Base \
    --model-name-sae-trained-from qwen3.5-9b-base \
    --model-name-analyzing-now qwen3.5-9b \
    --sae-path Qwen/SAE-Res-Qwen3.5-9B-Base-W64K-L0_100 \
    --top-k 100 \
    --num-layers 32 \
    --sae-width 65536 \
    --d-model 4096 \
    --server-port 7860

快速上手指南 🚀

环境准备

  1. 克隆仓库:
git clone https://gitcode.com/hf_mirrors/Qwen/SAE-Res-Qwen3.5-9B-Base-W64K-L0_100
cd SAE-Res-Qwen3.5-9B-Base-W64K-L0_100
  1. 安装依赖:
pip install torch transformers gradio

基础使用示例

以下是提取特征激活的完整示例:

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM

# 加载基础模型
model_name = "Qwen/Qwen3.5-9B-Base"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype=torch.float32)
model.eval()

# 加载目标层的SAE
LAYER = 0  # 可选择0-31之间的任意层
sae = torch.load(f"layer{LAYER}.sae.pt", map_location="cpu")
W_enc = sae["W_enc"]  # (65536, 4096)
b_enc = sae["b_enc"]  # (65536,)

# 定义特征激活提取函数
def get_feature_acts(residual: torch.Tensor) -> torch.Tensor:
    """residual: (..., 4096) → sparse feature activations (..., 65536)"""
    pre_acts = residual @ W_enc.T + b_enc
    topk_vals, topk_idx = pre_acts.topk(100, dim=-1)
    acts = torch.zeros_like(pre_acts)
    acts.scatter_(-1, topk_idx, topk_vals)
    return acts

# 注册钩子捕获残差流
captured = {}
def _hook(module, input, output):
    hidden = output[0] if isinstance(output, tuple) else output
    captured["residual"] = hidden.detach().cpu()

hook = model.model.layers[LAYER].register_forward_hook(_hook)

# 前向传播
text = "The capital of France is"
inputs = tokenizer(text, return_tensors="pt")
with torch.no_grad():
    model(**inputs)
hook.remove()

# 提取特征激活
residual = captured["residual"]               # (1, seq_len, 4096)
feature_acts = get_feature_acts(residual)     # (1, seq_len, 65536)

# 查看最后一个token的激活特征
last_token_acts = feature_acts[0, -1]         # (65536,)
active_idx = last_token_acts.nonzero(as_tuple=True)[0]
print(f"激活特征索引: {active_idx.tolist()}")
print(f"特征值: {last_token_acts[active_idx].tolist()}")

应用场景与研究价值 🌟

Qwen-Scope SAE的应用场景包括:

  • 模型可解释性研究:分析模型决策过程中的关键特征
  • 可控生成:通过激活/抑制特定特征引导模型生成特定风格或内容
  • 数据分析:识别数据中的模式和异常样本
  • 模型优化:基于特征分析改进模型架构或训练过程

该项目为大语言模型的机制可解释性研究提供了重要工具,帮助研究者深入理解模型内部工作原理,推动更透明、更可靠的AI系统开发。

引用与致谢

如果使用本项目进行研究,请引用以下论文:

@misc{qwen_scope,
      title={{Qwen-Scope}: Turning Sparse Features into Development Tools for Large Language Models},
      author={Boyi Deng and Xu Wang and Yaoning Wang and Yu Wan and Yubo Ma and Baosong Yang and Haoran Wei and Jialong Tang and Huan Lin and Ruize Gao and Tianhao Li and Qian Cao and Xuancheng Ren and Xiaodong Deng and An Yang and Fei Huang and Dayiheng Liu and Jingren Zhou},
      year={2026},
      eprint={2605.11887},
      archivePrefix={arXiv},
      primaryClass={cs.CL},
      url={https://arxiv.org/abs/2605.11887},
}

使用注意事项 ⚠️

严禁将可解释性工具用于非科学研究目的,以干扰模型能力,或编造、生成、传播违反公序良俗和社会主义核心价值观的有害信息,包括色情、暴力、歧视或煽动性内容。违者将自动终止授权,并承担由此产生的一切法律责任。本声明的最终解释权归项目所有者所有。

【免费下载链接】SAE-Res-Qwen3.5-9B-Base-W64K-L0_100 【免费下载链接】SAE-Res-Qwen3.5-9B-Base-W64K-L0_100 项目地址: https://ai.gitcode.com/hf_mirrors/Qwen/SAE-Res-Qwen3.5-9B-Base-W64K-L0_100

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐