🚀 黑盒提示优化(BPO):无需模型训练即可对齐大语言模型
黑盒提示优化(BPO)是一种黑盒对齐技术,与基于训练的方法(如PPO或DPO)不同。BPO仅需训练一个即插即用的模型,并通过优化用户输入来优化大语言模型。因此,它可以用于各种开源或基于API的大语言模型。
🚀 快速开始
- 代码仓库:https://github.com/thu-coai/BPO
- 论文链接:https://arxiv.org/abs/2311.04155
- 数据链接:https://huggingface.co/datasets/THUDM/BPO
✨ 主要特性
BPO作为一种黑盒对齐技术,区别于传统基于训练的方法,具有以下显著特性:
- 灵活性高:仅需训练一个即插即用的模型,就能适配各种开源或基于API的大语言模型。
- 优化方式独特:通过优化用户输入来实现对大语言模型的优化,而非直接对模型进行训练。
📚 详细文档
模型详情
属性 |
详情 |
数据 |
提示优化模型由隐含人类偏好特征的提示优化对训练得到,数据集的详细信息可查看此处。 |
骨干模型 |
提示偏好优化器基于Llama - 2 - 7b - chat - hf 构建。 |
语言 |
英文 |
性能表现
模型A |
模型B |
A获胜 |
平局 |
B获胜 |
gpt - 3.5 - turbo + BPO |
gpt - 3.5 - turbo |
60.0 |
8.7 |
31.3 |
claude - 2 + BPO |
claude - 2 |
57.5 |
5.0 |
37.5 |
llama - 2 - 13b - chat + BPO |
llama - 2 - 70b - chat |
61.3 |
0.0 |
38.7 |
vicuna - 13b + BPO |
vicuna - 13b + PPO |
52.5 |
3.7 |
43.7 |
vicuna - 13b + BPO |
vicuna - 13b + DPO |
53.8 |
2.5 |
43.7 |
vicuna - 13b + DPO + BPO |
vicuna - 13b + DPO |
60.0 |
2.5 |
37.5 |
预期用途
提示模板
我们采用的提示模板如下:
[INST] 你是一位专业的提示工程师。请帮我优化这个提示,以获得更有帮助且无害的回复:
{用户提示} [/INST]
使用示例
基础用法
from transformers import AutoModelForCausalLM, AutoTokenizer
model_path = 'Your-Model-Path'
prompt_template = "[INST] You are an expert prompt engineer. Please help me improve this prompt to get a more helpful and harmless response:\n{} [/INST]"
model = AutoModelForCausalLM.from_pretrained(model_path).cuda()
tokenizer = AutoTokenizer.from_pretrained(model_path)
text = 'Tell me about Harry Potter'
prompt = prompt_template.format(text)
model_inputs = tokenizer(prompt, return_tensors="pt").to("cuda:0")
output = model.generate(**model_inputs, max_new_tokens=1024, do_sample=True, top_p=0.9, temperature=0.6, num_beams=1)
resp = tokenizer.decode(output[0], skip_special_tokens=True).split('[/INST]')[1].strip()
print(resp)
更多详细用法(如更激进的优化)请查看我们的GitHub仓库。
其他已知局限性
⚠️ 重要提示
- 任务覆盖度不足,因为我们仅使用开源数据获得了约14k个优化提示。显然,不可能覆盖广泛的用户查询,因此当前模型可能并非在每个提示上都表现良好。
- 由于基于长上下文的任务和数学问题的比例较小,提示优化器在处理这些任务时表现不佳。
引用
如果您发现我们的模型在您的工作中很有用,请使用以下方式引用:
@article{cheng2023black,
title={Black-Box Prompt Optimization: Aligning Large Language Models without Model Training},
author={Cheng, Jiale and Liu, Xiao and Zheng, Kehan and Ke, Pei and Wang, Hongning and Dong, Yuxiao and Tang, Jie and Huang, Minlie},
journal={arXiv preprint arXiv:2311.04155},
year={2023}
}