问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

详细教程:自定义大模型之微调ChatGPT

创作时间:
2025-04-02 23:59:33
作者:
@小白创作中心

详细教程:自定义大模型之微调ChatGPT

引用
CSDN
1.
https://blog.csdn.net/xiangxueerfei/article/details/140278001

本文将详细介绍如何微调ChatGPT模型,使其能够根据特定需求进行优化。通过对比特征工程和微调的区别,逐步讲解微调的具体步骤和注意事项。

我们先从原理入手,你看这张图,左边是Pre-trained LLM (预训练大模型模型),也就是像ChatGPT这样的模型;右边是Fine-tuned LLM (微调过的语言大模型),中间就是进行微调的过程,它需要我们提供一些「ChatGPT提供不了但是我们需要的东西」。

比如说我们这个回答就是想微调一个『使用中国道家思想和语录进行回答的聊天机器人』
这个很好理解,打个比方,你想让ChatGPT输出跟道家高人一样,每句话都希望它能从「周易」「道德经」这样的著作中引经据典。
GPT是做不到的,因为它训练的预料大多数是通用知识,而周易或者道德经这种属于是特定领域的知识,以后不排除它会拿左右的资料进行训练,但是现在的GPT确实做不到。
这个时候就出现了两种解决办法,一种是这个题目问的「Fine-tune微调」,另一种是通过「Prompt engineering特征工程」。

这张图很清楚地说明了这两者的不同,“扳手”指的地方是变化的地方,特征工程只是改变输入,也就是给输入中增加更多的内容,而LLM大模型本身是不变的;而Fine-tune微调它改变的就是LLM本身。

微调不是万能的。
根据OpenAI的官方介绍,微调适用于以下五种情况:

  • 调整写作风格、语气、格式等
  • 提高生成正确结果的稳定性
  • 修正模型在复杂提示下的表现
  • 处理一些特殊的、意外的情况
  • 学习和执行在提示中无法明确说明的新技能或任务

如果你确定你的问题通过prompt engineering解决不了,那么做Fine-Tune的话就是下面几个步骤:

  • 确定进行微调的模型
  • 准备并上传训练数据
  • 训练新的微调模型
  • 评估结果并根据需要是否重新训练
  • 使用您的微调模型

我在对OpenAI的API做微调的时候,碰到的最大问题就在于准备数据集上,因为其他步骤基本是都是自动化的,数据集的质量好坏其实决定了微调后模型的好坏。我失败了好几次的原因就是因为数据集的格式不对,它不是普通的json格式,而是jsonl格式,这一点儿我会在后面单独提到。

我们一步步地进行准备。

第一步:确定进行微调的模型
OpenAI有很多模型,从初代GPT3到现在最新的GPT4o,大多数的模型都有其API,但是并不是所有的大模型都可以进行微调。
真正能进行微调的就是这五个模型:

  • gpt-3.5-turbo-0125
  • gpt-3.5-turbo-1106
  • gpt-3.5-turbo-0613
  • babbage-002
  • davinci-002
    其中最推荐的就是gpt-3.5-turbo-0125,属于是便宜还好用的一款模型。

第二步:准备并上传训练数据
训练数据分为两种格式,对于gpt-3.5-turbo这个系列,它的训练数据是「对话」格式的。
比如这个例子:
{“messages”: [{“role”: “system”, “content”: “Marv is a factual chatbot that is also sarcastic.”}, {“role”: “user”, “content”: “What’s the capital of France?”}, {“role”: “assistant”, “content”: “Paris, as if everyone doesn’t know that already.”}]}
这个例子是为了微调一个偶尔回答带有讽刺意味的机器人。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号