面向领域特定问答的大语言模型知识偏好对齐
对于大语言模型(LLMs)的领域特定应用,外部知识和LLMs应该协同工作以实现最佳用户体验。LLMs应该具备做出正确选择的能力,以满足人类需求地利用检索到的外部知识。知识偏好对齐(KnowPAT)是一种新的pipeline,用于将LLMs与人类的知识偏好对齐。KnowPAT结合领域知识图谱构建偏好集,并设计新的对齐目标来微调LLMs。
🌈 模型架构
💻 数据准备
出于商业机密的原因,我们论文中的数据集将不会公开。然而,我们在data/
中提供了数据示例,以便您可以根据给定格式构建自己的偏好数据集并尝试我们的对齐方法。
对于每个数据实例,您应准备一个问题和多个答案,以及每个答案的人类偏好分数。较高的分数表示更好和更受偏好的答案。请注意,答案应按分数降序排列,这意味着更好的答案及其分数应该在前面。
- 新闻:🎉🎉🥰🎉🎉 我们的论文已被ACL 2024 Findings接收。
- 新闻:我们现在添加了一个新的中文问答数据集RJUA,并已开源。您可以尝试在此数据集上进行实验。
🔬 依赖
我们的代码是基于RRHF开发的。请按照RRHF的说明构建Python环境。
要设置环境,您可以使用以下命令行来设置python3.8和pytorch要求:
conda create -n alignment python=3.8
pip install torch==1.13.0+cu116 torchvision==0.14.0+cu116 torchaudio==0.13.0 --extra-index-url https://download.pytorch.org/whl/cu116
安装其他包:
pip install -r requirements.txt
📕 训练 & 测试
- 在RJUA数据集上运行KnowPAT训练
export MODEL_PATH="您的LLM路径"
export SAVE_PATH="您的保存路径"
export DATA_PATH="data/RJUA_train.json"
export WANDB_DISABLED=true
wandb offline
CUDA_VISIBLE_DEVICES=1 nohup python train.py \
--model_name_or_path $MODEL_PATH \
--data_path $DATA_PATH \
--bf16 True \
--output_dir $SAVE_PATH \
--num_train_epochs 3 \
--per_device_train_batch_size 1 \
--per_device_eval_batch_size 1 \
--gradient_accumulation_steps 8 \
--evaluation_strategy "no" \
--save_strategy "steps" \
--save_steps 300 \
--save_total_limit 40 \
--learning_rate 1e-4 \
--weight_decay 0. \
--warmup_ratio 0.03 \
--lr_scheduler_type "cosine" \
--logging_steps 1 \
--model_max_length 512 --rrhf_weight 0.01 > log_rjua.txt &
运行前您可能需要填写您的模型/保存/数据路径。模型路径应该是一个llama架构的LLM。
- 运行推理
CUDA_VISIBLE_DEVICES=0 python inference.py
🤝 引用:
如果您使用了我们工作中的代码,请考虑引用这篇论文。 非常感谢 :)
@article{DBLP:journals/corr/abs-2311-06503,
author = {Yichi Zhang and
Zhuo Chen and
Yin Fang and
Lei Cheng and
Yanxi Lu and
Fangming Li and
Wen Zhang and
Huajun Chen},
title = {Knowledgeable Preference Alignment for LLMs in Domain-specific Question
Answering},
journal = {CoRR},
volume = {abs/2311.06503},
year = {2023}
}