
假设,已经标注的训练数据集df包含了提示词、输入和输出三列。
构建微调SFT的数据集代码如下:
python
data = []
for x in df.values:
prompt = x[1]
user_content = x[2]
assistant_content = x[3]
data.append({"messages": [{"role": "system", "content": prompt}, {"role": "user", "content": user_content},{"role": "assistant", "content": assistant_content}]})
data[0]
import json
# 将数据写入.jsonl文件
with open('sft_train.jsonl', 'w') as f:
for item in data:
json.dump(item, f)
f.write('\n') # 每行一个JSON对象
假设,已经标注的强化学习数据集df包含用户输入、首选输出、次选输出三列。
构建强化学习DPO的数据集代码如下:
python
dpo_data = []
for x in sft_df.values:
user_content = x[1]
preferred_output = x[2]
non_preferred_output = x[3]
dpo_data.append({"input": {"messages": [{"role": "user", "content": user_content}],"tools": [], "parallel_tool_calls": True }, "preferred_output": [{"role": "assistant", "content": preferred_output}], "non_preferred_output": [{"role": "assistant", "content": non_preferred_output}]})
dpo_data[0]
import json
with open('dpo_train.jsonl', 'w') as f:
for item in dpo_data:
json.dump(item, f)
f.write('\n') # 每行一个JSON对象
注意:强化学习DPO通常在微调SFT的模型上进行。