[ PROMPT_NODE_22632 ]
Mechanistic Interpretability Pyvene API 参考
[ SKILL_DOCUMENTATION ]
# pyvene API 参考
## IntervenableModel
用于包装 PyTorch 模型进行干预的核心类。
### 基础用法
python
import pyvene as pv
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained("gpt2")
config = pv.IntervenableConfig(
representations=[
pv.RepresentationConfig(
layer=5,
component="block_output",
intervention_type=pv.VanillaIntervention,
)
]
)
intervenable = pv.IntervenableModel(config, model)
### 前向传播
python
# 基础干预
original_output, intervened_output = intervenable(
base=base_inputs,
sources=[source_inputs],
)
# 使用单元位置(特定位置)
_, outputs = intervenable(
base=base_inputs,
sources=[source_inputs],
unit_locations={"sources->base": ([[[5]]], [[[5]]])}, # 位置 5
)
# 同时返回原始输出
original, intervened = intervenable(
base=base_inputs,
sources=[source_inputs],
output_original_output=True,
)
### 生成
python
# 在干预下生成
outputs = intervenable.generate(
base_inputs,
sources=[source_inputs],
max_new_tokens=50,
do_sample=False,
)
### 保存与加载
python
# 本地保存
intervenable.save("./my_intervention")
# 加载
intervenable = pv.IntervenableModel.load("./my_intervention", model=model)
# 保存到 HuggingFace
intervenable.save_intervention("username/my-intervention")
# 从 HuggingFace 加载
intervenable = pv.IntervenableModel.load(
"username/my-intervention",
model=model
)
### 获取可训练参数
python
# 用于可训练干预
params = intervenable.get_trainable_parameters()
optimizer = torch.optim.Adam(params, lr=1e-4)
---
## IntervenableConfig
干预的配置容器。
### 基础配置
python
config = pv.IntervenableConfig(
representations=[
pv.RepresentationConfig(...)
]
)
### 多重干预
python
config = pv.IntervenableConfig(
representations=[
pv.RepresentationConfig(layer=3, component="block_output", ...),
pv.RepresentationConfig(layer=5, component="mlp_output", ...),
pv.RepresentationConfig(layer=7, component="attention_output", ...),
]
)
---
## RepresentationConfig
指定单个干预目标。
### 参数
| 参数 | 类型 | 描述 |
|-----------|------|-------------|
| `layer` | int | 层索引 |
| `componen