❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!
🥦 微信公众号|搜一搜:蚝油菜花 🥦
大家好,我是蚝油菜花,今天跟大家分享一下 AxBench 这个由斯坦福大学推出的评估语言模型控制方法的基准测试框架。
🚀 快速阅读
AxBench 是斯坦福大学推出的一个基准测试框架,用于评估语言模型的可解释性方法。它通过合成数据生成训练和评估数据,支持概念检测和模型转向两个核心功能。AxBench 提供了统一的评估平台,帮助研究者系统地比较不同语言模型控制方法的有效性。
- 核心功能:概念检测和模型转向任务。
- 技术原理:基于合成数据生成、内部表示干预和多维度评分机制。
AxBench 是什么
AxBench 是由斯坦福大学推出的一个基准测试框架,旨在评估语言模型(LM)的可解释性方法。该框架通过生成合成数据来训练和评估不同的模型控制技术,特别是在概念检测和模型转向两个方面表现优异。AxBench 为研究者提供了一个统一的平台,便于系统地评估和比较各种语言模型控制方法的有效性,推动语言模型的安全性和可靠性研究。
AxBench 的设计目标是帮助研究者更好地理解如何通过干预模型的内部表示来实现特定的输出控制,从而提高模型在实际应用场景中的可靠性和可控性。它不仅支持多种语言模型和任务设置,还扩展到了不同的概念描述,使得大规模实验和基准测试成为可能。
AxBench 的主要功能
- 概念检测(Concept Detection, C):基于标记的合成数据,评估模型对特定概念的识别能力,使用 ROC AUC 作为评估指标。
- 模型转向(Model Steering, S):基于长文本生成任务,评估模型在干预后的表现,用语言模型"裁判"对生成文本的三个维度(概念相关性、指令相关性、流畅性)进行评分。
- 提供统一的评估框架:支持多种语言模型控制方法,如提示、微调、稀疏自编码器等,便于比较不同方法的优劣。
- 生成合成数据:根据自然语言概念描述生成训练和评估数据,支持大规模实验和基准测试,包括生成正例、负例和难负例。
- 支持多种评估指标:除了 ROC AUC 外,还包括基于语言模型"裁判"的多维度评分。
AxBench 的技术原理
-
合成数据生成:
- 正例:基于提示语言模型生成包含目标概念的文本。
- 负例:基于提示语言模型生成不包含目标概念的文本。
- 难负例:生成与目标概念语义相关但不激活该概念的文本,增加评估的难度和区分度。
-
概念检测评估:
- 使用标记的合成数据作为训练集,训练概念检测器(如线性探针、差值均值等),并基于 ROC AUC 评估检测器对概念的分类能力。
-
模型转向评估:
- 基于干预模型的内部表示(如添加特定方向的向量),让模型生成的文本更符合目标概念。
- 用语言模型"裁判"对生成文本的三个维度(概念相关性、指令相关性、流畅性)进行评分,综合评估转向效果。
-
支持多种方法:
- 包括提示(Prompting)、微调(Finetuning)、稀疏自编码器(SAEs)、线性探针(Linear Probes)等。
- 提供多种表示干预方法的实现,如 ReFT-r1,基于学习特定方向的向量干预模型的内部表示,实现对模型输出的控制。
如何运行 AxBench
1. 安装依赖
我们建议使用 uv
作为 Python 虚拟环境管理工具,但你可以使用任何 venv 管理器。
bash
git clone [email protected]:stanfordnlp/axbench.git
cd axbench
uv sync # 如果使用 uv
设置 API 密钥:
python
import os
os.environ["OPENAI_API_KEY"] = "your_openai_api_key_here"
os.environ["NP_API_KEY"] = "your_neuronpedia_api_key_here"
下载必要的数据集到 axbench/data
:
bash
uv run axbench/data/download-seed-sentences.py
cd axbench/data
bash download-2b.sh
bash download-9b.sh
bash download-alpaca.sh
2. 运行简单演示
要运行一个完整的演示,请执行以下命令:
bash
bash axbench/demo/demo.sh
3. 数据生成
如果你使用的是预生成的数据,可以跳过此步骤。
生成训练数据:
bash
uv run axbench/scripts/generate.py --config axbench/demo/sweep/simple.yaml --dump_dir axbench/demo
生成推理数据:
bash
uv run axbench/scripts/generate_latent.py --config axbench/demo/sweep/simple.yaml --dump_dir axbench/demo
要修改数据生成过程,编辑 simple.yaml
文件。
4. 训练
训练并保存你的方法:
bash
uv run torchrun --nproc_per_node=$gpu_count axbench/scripts/train.py \
--config axbench/demo/sweep/simple.yaml \
--dump_dir axbench/demo
对于其他配置,参考以下命令:
bash
torchrun --nproc_per_node=$gpu_count axbench/scripts/train.py \
--config axbench/sweep/wuzhengx/2b/l10/no_grad.yaml \
--dump_dir axbench/results/prod_2b_l10_concept500_no_grad \
--overwrite_data_dir axbench/concept500/prod_2b_l10_v1/generate
5. 推理
概念检测
运行推理:
bash
uv run torchrun --nproc_per_node=$gpu_count axbench/scripts/inference.py \
--config axbench/demo/sweep/simple.yaml \
--dump_dir axbench/demo \
--mode latent
对于不平衡的概念检测,使用以下命令:
bash
uv run torchrun --nproc_per_node=$gpu_count axbench/scripts/inference.py \
--config axbench/sweep/wuzhengx/2b/l10/no_grad.yaml \
--dump_dir axbench/results/prod_2b_l10_concept500_no_grad \
--overwrite_metadata_dir axbench/concept500/prod_2b_l10_v1/generate \
--overwrite_inference_data_dir axbench/concept500/prod_2b_l10_v1/inference \
--mode latent_imbalance
模型转向
运行转向实验:
bash
uv run torchrun --nproc_per_node=$gpu_count axbench/scripts/inference.py \
--config axbench/demo/sweep/simple.yaml \
--dump_dir axbench/demo \
--mode steering
6. 评估
概念检测
评估概念检测结果:
bash
uv run axbench/scripts/evaluate.py \
--config axbench/demo/sweep/simple.yaml \
--dump_dir axbench/demo \
--mode latent
启用 wandb 日志记录:
bash
uv run axbench/scripts/evaluate.py \
--config axbench/demo/sweep/simple.yaml \
--dump_dir axbench/demo \
--mode latent \
--report_to wandb \
--wandb_entity "your_wandb_entity"
模型转向
评估转向效果:
bash
uv run axbench/scripts/evaluate.py \
--config axbench/demo/sweep/simple.yaml \
--dump_dir axbench/demo \
--mode steering
资源
- GitHub 仓库 :github.com/stanfordnlp...
❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!
🥦 微信公众号|搜一搜:蚝油菜花 🥦