OpenAI 的视频《最大化 LLM 性能的技术概览》,整理了关键要点,供大家参考。🚀
- 我的笔记:
yujiachen.notion.site- 原视频:
youtu.be# LLM 的优化路径
- 上下文优化,让模型知道更多。
- LLM 优化,改变模型的行为和方法。
# 一般的演化方向
- Prompt engineering。
- RAG,类比给 LLM 加上短期记忆,针对具体问题提供具体信息。
- Fine-tune model,类比给 LLM 加上长期记忆,让模型持续地遵循某种行为模式或输出结构。
# Prompt Engineering
先用简单的提示词工程尝试解决问题,找到评估基准,判断性能瓶颈是上下文还是模型的行为模式。
## 优点
- 尽快地测试并获得反馈。
- 结合性能评估,这确定了性能优化的基准线。
## 缺点
- prompt 中引入了新信息。
- 被上下文窗口限制。
- token 使用效率低。
## 最佳实践
- 编写清晰的指令。
- 把复杂任务拆分成简单的子任务。
- 让 LLM 有时间思考,例如 ToS,ReAct。
- 用控制变量法系统性地测试改动控制变量法。
# RAG
先根据问题找到相关的上下文,再要求 LLM 回答。
## 优点
- 可以不断向 LLM 提供最新的信息。
- 通过控制参考文本降低幻觉。
## 缺点
- 提供给 LLM 的信息仅限上下文片段,无法让 LLM 拥有更宽泛的领域知识。
- 不擅长让 LLM 按照规定格式或特定语言输出结果。
- 不利于降低 token 使用率。
## 进阶技巧
- 用 cosine 计算相似度。
- HyDE,让模型先回答,用回答去搜索上下文。
- Fine-tuning embedding 模型。
- 重排搜索到的上下文。
- 分类,让模型先判断有可能在哪些数据集中找到上下文,之后再搜索。
- 并行计算,把问题拆分成多个子问题,独立计算后合并答案。
# Fine-tuning
继续在更小、特定领域的数据集上训练,优化特定任务的表现和效率。
## 优点
- 强化模型中已有知识。
- 定制回答的结构或语气。
- 避开复杂 prompt engineering。
## 缺点
- 如果 prompt engineering 无法提高表现,那么 fine-tuning 也不行。
- 无法添加新知识。
- 无法适应新使用场景。
## 步骤
- 准备数据:收集、验证、格式化数据。
- 训练:选择超参数、损失函数。
- 评估:人工评估、LLM 评估。
- 推理。
## 最佳实践
- 先从 prompt engineering 和 few-shot learning 开始,确认 LLM 适合你的使用场景。
- 确认性能基准,LLM 表现可衡量可比较。
- 注重数据质量。