Project Icon

BPO

优化大语言模型对齐的创新黑盒方法

Black-Box Prompt Optimization (BPO) 是一种新型大语言模型对齐技术,无需模型训练即可提升性能。项目通过创新方法缩小人类与AI模型间的差距,在Vicuna Eval评估中优于gpt-3.5-turbo和claude-2,并超越PPO和DPO方法。BPO提供完整的模型、数据集、演示和使用指南,为AI研究和开发提供全面支持。

黑盒提示优化(BPO)

无需模型训练的大型语言模型对齐方法(ACL 2024)

🤗 模型 • 📚 数据 • 📃 论文 • 🌐 演示

(上图)黑盒提示优化(BPO)提供了一个全新的概念视角来弥合人类和大型语言模型之间的差距。(下图)在Vicuna Eval的成对评估中,我们展示了BPO在不进行训练的情况下进一步对齐了gpt-3.5-turbo和claude-2。它还优于PPO和DPO,并呈现出正交的改进。

BPO


更新

我们已在Hugging Face上发布了我们的模型数据

我们在Hugging Face上为BPO构建了一个演示

目录

模型

提示偏好优化模型可从Hugging Face下载

推理代码(请参考src/infer_example.py获取有关如何优化提示的更多说明):

from transformers import AutoModelForCausalLM, AutoTokenizer

model_path = 'THUDM/BPO'

prompt_template = "[INST] 你是一位专业的提示工程师。请帮我改进这个提示,以获得更有帮助且无害的回答:\n{} [/INST]"

device = 'cuda:0'
model = AutoModelForCausalLM.from_pretrained(model_path).half().eval().to(device)
# 对于8位量化
# model = AutoModelForCausalLM.from_pretrained(model_path, device_map=device, load_in_8bit=True)
tokenizer = AutoTokenizer.from_pretrained(model_path)

text = '告诉我关于哈利·波特的信息'

prompt = prompt_template.format(text)
model_inputs = tokenizer(prompt, return_tensors="pt").to(device)
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)

数据

BPO数据集

BPO数据集可在Hugging Face上找到。

BPO用于SFT数据构建

alpaca_reproduce目录包含BPO重新生成的Alpaca数据集。数据格式为:

{
    "instruction": {instruction},
    "input": {input},
    "output": {output},
    "optimized_prompt": {optimized_prompt},
    "res": {res}
}
  • {instruction}、{input}和{output}是原始数据集中的元素。
  • {optimized_prompt}是BPO优化后的指令。
  • {res}是使用{optimized_prompt}从text-davinci-003获得的响应。

测试集

testset目录包含我们使用的所有测试数据集,包括:

  • 从BPO数据集中抽样的200个提示
  • 来自Dolly数据集的200个示例
  • 来自Self-Instruct的252个人工评估指令
  • 来自Vicuna Eval数据集的80个面向用户的提示。

快速入门

对于所有代码,我们已添加了#TODO注释以指示运行前需要修改的代码部分。请在执行每个文件之前更新相关部分。

设置

pip install -r requirements.txt

数据构建

要自行构建数据,请运行以下命令

cd src/data_construction

# 使用成对反馈数据生成优化的提示
python chatgpt_infer.py

# 处理生成的优化提示
python process_optimized_prompts.py

模型训练

如果你想训练自己的提示偏好优化器, 请运行以下命令:

cd src/training

# 预处理微调数据
python ../data_construction/process_en.py
python data_utils.py

# 微调
python train.py

# 推理
python infer_finetuning.py

推理

我们展示了一个示例代码,用于使用llama2-chat在BPO优化的提示上进行生成。

评估

如果你想比较BPO对齐模型与原始模型,请参考以下代码:

cd src/evaluation

# 以dolly_eval上的gpt4评估为例
python gpt4_score.py --input_file_a "BPO对齐模型的生成结果路径" \
--input_file_b "原始模型的生成结果路径" \
--task_name "dolly_eval" \ # 对于其他测试集,可更改为"self_instruct"、"test_set"或"vicuna_eval"
--output_file "输出路径"

# 计算胜率
python cal_gpt4_score.py --input_file "输出路径"

致谢

引用

@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}
}
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

白日梦AI

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号