先介绍一下作者本人,作者目前在浙江一家国企内部进行人工智能与企业业务结合探索。目前在各个业务场景的落地中,几乎都有对模型进行再训练和微调(Fine Tuning)的需求,在此开一个专栏作为后续开展模型再训练的导论。
AIGC行业现状
AIGC行业目前的现状仍然是ChatGPT领先一个档位,由于在C端对话场景中表现出色,用户几乎能感受到是跟半个领域专家在进行聊天,目前使用最多的场景也是答疑解惑。
B端场景与C端场景的差异
B端场景跟C端有着天然本质的区别。在C端,用户通常关注娱乐、普遍性问题和日常生活问题,因此模型回答可以更加开放,当模型出现一本正经的胡说八道的时候,也更多的是被人拿来调侃。
然而,在B端场景中,企业和组织关注更为专业、针对性和行业相关的问题。要求回答具有高度的准确性、可靠性。最常见的场景是通过连接企业知识库提供售前和售后服务。当模型无法找到知识的原型,通过生成的虚构回答,往往会造成更为严重的客户投诉。
ChatGPT模型微调过程
一、准备工作
- 确保已获得开发者权限。
- 安装OpenAI的SDK,通过pip安装**
openai
**包。
pip install openai
二、从知识库生成训练数据和验证数据
由于大部分的知识库没有现成的输入和输出,我们需要从知识库中生成输入输出对。一般可以使用自然语言处理(NLP)技术对知识库进行处理,例如使用信息抽取技术从文本中提取问题和答案,将它们作为输入输出对。
三、准备训练数据和验证数据
- 按照JSONL格式准备您的训练数据。每行应该包含一个JSON对象,具有以下字段:
prompt
(输入)和**completion
**(预期输出)。 - 将训练数据保存到本地,例如**
train_data.jsonl
**。 - 准备一个与训练数据相似但互斥的验证数据集。
- 将验证数据保存到本地,例如**
validation_data.jsonl
**。
四、使用Python进行微调
- 引入所需的库:
import openai
- 设置API密钥:
openai.api_key = "YOUR_OPENAI_API_KEY"
- 上传训练和验证数据文件:
def upload_dataset(file_path):
with open(file_path, "rb") as f:
file_data = f.read()
result = openai.File.create(data=file_data, purpose="fine-tuning")
return result["id"]
train_file_id = upload_dataset("train_data.jsonl")
validation_file_id = upload_dataset("validation_data.jsonl")
- 创建微调任务:
fine_tuning_job = openai.FineTuningJob.create(
model="gpt-4",
dataset_id=train_file_id,
validation_dataset_id=validation_file_id,
n_epochs=4
)
- 查看微调任务状态:
job_id = fine_tuning_job["id"]
job_status = openai.FineTuningJob.get(job_id)