大语言模型学习的重点:
- 模型的训练 / 微调
- 部署模型
- 上层开发(以 LangChain 家族为核心)
- Open API
- Prompt 开发
- RAG 开发
- Agent 开发
训练 train 和 微调 fine-tune 的区别
共同点:
- 都是修改模型的参数
训练:
- 从零开始,训练一个大模型
- 类似买一块布,手动做一条裤子
- 数据量:
- 预训练 18T
- 时间:
- 2个月
- 训练平台:
- 千卡
- 万卡
- H100,A100
微调:
- 从别人训练号的开源大模型开始,去做一个具体任务微调
- 类似买一条成品裤,根据腿长剪裤脚
- 数据量:
- 几十条起
- 时间:
- 几分钟起
- 训练平台:
- 能把模型放下即可
- 4090
三阶段:
第一阶段:预训练
- Pre-Train
- 内功修炼
- 往往是厂家来做
- 自监督
- 无需标注
- 自回归方式训练
- 数据:
- 一段一段的文本
- 成果:
- base 大模型
- 半成品,不是直接用来做任务,而是让下游任务微调
- 只能进行简单的文本续写(不具备质量遵循和函数调用能力)
第二阶段:监督指令微调
- Supervised Finetune
- 对标业务
- 对标具体的任务
- 外功修炼
- 功能:
- 对标人类聊天习惯
- 指令遵循能力(你让它做什么,它就做什么)
- 函数调用能力(大模型能够判断什么时候需要借助外部函数)
- 复杂推理能力(大模型可以分步骤拆解问题和执行相关的推理)
- 数据(知识编辑):
- 问答对 question answer pair
- system
- user
- assistant
- function_call
- history
- ......
- 两种风格:
- 为了注入知识
- 为了提升能力
- 并行训练
- 优秀是一种习惯
第三阶段:偏好优化
- RLHF:Reinforcement Learning from Human Feedback
- DPO:Direct Preference Optimization
- 一问两答:
- 一问:一个问题
- 两答:
- 一个不好的答案:大模型当前的回答
- 一个好的答案:你修改后的答案
- 这个阶段做的比较少,因为数据比较难整理
- 产物:
- chat
- instruct
全程零代码
- 模型的训练和微调,属于零代码的过程,可能需要做的是数据格式转换。
工程平衡:
- 重点突出我们的微调能力
- 但是,不能太大的破坏原有的能力!
模型的测评
大部分微调都把模型给整废了,而不是越来越好。厂家发布的模型半真半假,一般发布的都是最好的模型,咱们拿来整废了是常态,训练好是一件不太容易的事情。为什么不太容易?怎么就整废了?怎么才能弄好?没有万能公式一步到位,是个不断炼丹尝试的过程,比较玄学。
微调:
- 废了是常态
- 训练好是一件不太容易的事情
考试:
- 全学科考试
- MMLU
- CMMLU
- C-Eval
- ......