最大化 LLM 性能的技术概览

Posted on 2023年11月26日周日 技术
注:这里的”性能“原文为”performance”,指 LLM 回答问题的准确率,而不是运行时的计算资源消耗性能。

原视频来自 OpenAI

优化 LLM 性能的难点

优化路径

LLM 的优化路径

一般的演化方向

  1. Prompt engineering
  2. RAG,类比给 LLM 加上短期记忆,针对具体问题提供具体信息。
  3. Fine-tune model,类比给 LLM 加上长期记忆,让模型持续地遵循某种行为模式或输出结构。

拿考试举例子,Fine-tuning 是闭卷考,你需要记住所有知识才能参加考试;RAG 是开卷考,你带着各种参考资料进考场。

Prompt Engineering

先用简单的提示词工程尝试解决问题,找到评估基准,判断性能瓶颈是上下文还是模型的行为模式。

当确定基准后,可以在 prompt 里添加 few-shot 示例,看是否可以带来性能提升。

优点

缺点

最佳实践

后续步骤

RAG

先根据问题找到相关的上下文,再要求 LLM 回答。

优点

缺点

进阶技巧

评估

RAG 实质上给 LLM 引入了一个新的环节:检索,这也可能成为一个瓶颈。检索结果的质量很重要,如果一些无关、或者低质量的上下文被检索到,LLM 会给出和幻觉无差别的低质量回答。

这里介绍了 Ragas 用来评测 RAG 的表现,评测分为两大类四个维度

Fine-tuning

继续在更小、特定领域的数据集上训练,优化特定任务的表现和效率。

优点

缺点

例子

Canva 使用 fine-tuning 来规范 LLM 的输出格式。

一个博客作者使用 Slack 聊天记录来 fine-tuning LLM,期望 LLM 学会他的语气,但 LLM 实际上学会了他消极怠工的态度,因此高质量的 fine-tuning 数据很重要。

步骤

  1. 准备数据:收集、验证、格式化数据。
  2. 训练:选择超参数、损失函数,注意 LLM 的损失函数是 next token prediction 任务的代理,但这和 LLM 负责的下游任务不一定有相关性,比如在代码生成中,你有很多方式来解决一个代码问题,而不需要生成的代码和标准答案完全匹配。
  3. 评估:人工评估、LLM 评估。
  4. 推理

最佳实践