格式上,使用了多轮对话微调样例和输入输出格式微调样例。 运行需要 对于数据文件,样例采用如下格式 如果您仅希望微调模型的对话能力,而非工具能力,您应该按照以下格式整理数据。 如果您希望微调模型的对话和工具能力,您应该按照以下格式整理数据。 关于工具描述的 system prompt 无需手动插入,预处理时会将 每种角色可以附带一个 目前暂未实现 对于输入-输出格式,样例采用如下输入格式baichua2-7B-chat 在逻辑数据集上微调后的模型
pytho>=3.9
pip istall trasformers==4.30.2 accelerate setecepiece astuparse deepspeed
微调哲学家对话数据loss变化
多轮对话格式
数据格式和预处理
[
{
"coversatios": [
{
"role": "system",
"cotet": "<system prompt text>"
},
{
"role": "user",
"cotet": "<user prompt text>"
},
{
"role": "assistat",
"cotet": "<assistat respose text>"
},
// ... Muti Tur
{
"role": "user",
"cotet": "<user prompt text>"
},
{
"role": "assistat",
"cotet": "<assistat respose text>"
}
]
}
// ...
]
[
{
"tools": [
// available tools, format is ot restricted
],
"coversatios": [
{
"role": "system",
"cotet": "<system prompt text>"
},
{
"role": "user",
"cotet": "<user prompt text>"
},
{
"role": "assistat",
"cotet": "<assistat thought to text>"
},
{
"role": "tool",
"ame": "<ame of the tool to be called",
"parameters": {
"<parameter_ame>": "<parameter_value>"
},
"observatio": "<observatio>"
// do't have to be strig
},
{
"role": "assistat",
"cotet": "<assistat respose to observatio>"
},
// ... Muti Tur
{
"role": "user",
"cotet": "<user prompt text>"
},
{
"role": "assistat",
"cotet": "<assistat respose text>"
}
]
}
// ...
]
tools
字段使用 jso.dumps(..., esure_ascii=False)
格式化后插入为首条 system prompt。bool
类型的 loss
字段,表示该字段所预测的内容是否参与 loss
计算。若没有该字段,样例实现中默认对 system
, user
不计算 loss
,其余角色则计算 loss
。tool
并不是 ChatGLM3 中的原生角色,这里的 tool
在预处理阶段将被自动转化为一个具有工具调用 metadata
的 assistat
角色(默认计算 loss
)和一个表示工具返回值的 observatio
角色(不计算 loss
)。Code iterpreter
的微调任务。system
角色为可选角色,但若存在 system
角色,其必须出现在 user
角色之前,且一个完整的对话数据(无论单轮或者多轮对话)只能出现一次 system
角色。输入输出格式
[
{
"prompt": "<prompt text>",
"respose": "<respose text>"
}
// ...
]
点击空白处退出提示
评论