Abliterator 使用教程
1. 项目介绍
Abliterator 是一个简单但功能强大的 Python 库,用于对大型语言模型(LLMs)进行特征消融(ablation)研究。通过 TransformerLens 支持的消融实验,可以更容易地对模型进行修改和测试,以找到最佳的正交化模型。该项目旨在提供一个模板,帮助研究人员快速实现和测试消融实验,并计划在未来添加更多功能,如特征增强。
2. 项目快速启动
安装依赖
首先,确保你已经安装了 Python 环境。接下来,克隆项目仓库并安装必要的依赖:
git clone https://github.com/FailSpy/abliterator.git
cd abliterator
pip install -r requirements.txt
加载模型
在开始使用 Abliterator 之前,需要加载一个预训练的模型。这里以 Meta-Llama-3-70B-Instruct 模型为例:
import abliterator
model = "meta-llama/Meta-Llama-3-70B-Instruct"
缓存激活
加载模型后,需要缓存一些激活数据以供后续分析:
dataset = [
abliterator.get_harmful_instructions(),
abliterator.get_harmless_instructions()
]
device = 'cuda' # 或者 'cpu'
n_devices = None # 如果不设置,将使用 device 上的所有设备
my_model = abliterator.ModelAbliterator(
model,
dataset,
device=device,
n_devices=n_devices,
activation_layers=[
'resid_pre', 'resid_post', 'attn_out', 'mlp_out'
],
chat_template="<system>\n{instruction}<end><assistant>",
positive_toks=[
23371, 40914
],
negative_toks=[
4250
]
)
my_model.cache_activations(N=512, reset=True, preserve_harmless=True)
保存状态
在进行一系列实验后,你可以保存当前的激活状态和模型权重,以便下次继续使用:
my_model.save_activations('file.pth')
3. 应用案例和最佳实践
Abliterator 的一个典型应用是测试和修改模型的拒绝方向(refusal directions)。以下是一个简单的过程:
获取拒绝方向
refusal_dirs = my_model.refusal_dirs()
测试拒绝方向
testing_dir = refusal_dirs['blocks.18.hook_resid_pre']
my_model.test_dir(testing_dir, N=32, use_hooks=True)
应用最佳拒绝方向
my_amazing_dir = my_model.find_best_refusal_dir()[0]
my_model.apply_refusal_dirs([my_amazing_dir])
黑名单和白衣名单
如果某些层在修改时出现问题,可以将它们添加到黑名单中,以防止修改:
my_model.blacklist_layer(27)
相反,如果你想要解锁某个层,可以将其添加到白衣名单中:
my_model.whitelist_layer(27)
4. 典型生态项目
目前 Abliterator 还是一个比较新的项目,其生态系统正在不断发展中。不过,它已经可以与一些其他的机器学习和自然语言处理库相结合,例如 TensorFlow、PyTorch 和 Hugging Face 的 Transformers。通过这些库的集成,可以进一步扩展 Abliterator 的功能,实现更复杂和深入的语言模型分析和修改。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考