大型语言模型
大型语言模型 (LLM) 是强大的预训练文本生成模型,只需很少或无需额外训练,即可执行多项高级生成和预测任务,包括
- 自然语言理解和响应(例如,聊天机器人、问答系统)
- 文本补全(例如,编码助手)
- 文本摘要
- 信息提取(例如,文档到表格)
- 文本分类
- 基本推理(例如,基于代理的系统)
凭借所有这些能力以及为特定数据集和任务“定制”LLM 而提出的各种技术,决定从何处开始可能会令人望而生畏。这时 Ludwig 就派上用场了!
Ludwig 的 LLM 工具包提供了一个简单的定制途径,让您可以从简单的提示,到上下文学习,最终到全面的训练和微调。
为特定任务定制 LLM¶
有许多方法可以修改或增强 LLM 以使其更好地执行任务。在 Ludwig 中,我们将这些不同的技术归入两大类
- 微调,即通过监督学习过程修改 LLM 的权重。
- 上下文学习,即在推理时使用插入到提示中的额外任务特定上下文,引导 LLM 执行任务。
下面的流程图直观地展示了一个简化的决策过程,可用于决定哪种定制技术适合您
何时使用微调¶
微调在以下情况下最常用
- 指令微调,即将一个只生成文本的 LLM 调整为以遵循指令的方式响应,例如聊天机器人。
- 领域适应,例如,将一个以自然语言响应的 LLM 调整为生成结构化输出,如 JSON、源代码或 SQL。
- 任务适应,即将通用 LLM 专门化,以使其更好地执行特定(通常是预测性)任务。
微调通常需要大约一千到几万个带标签的示例才能发挥最大作用。因此,通常建议在进行微调之前,首先看看上下文学习是否足以解决问题。
何时使用上下文学习¶
上下文学习在以下情况下最常用
- 问答内部语料库,LLM 需要以自然语言事实性地回答。
- 少样本文本分类,或在只有少量真实示例可用时为文本分配标签。
- 检索增强生成,其中使用信息检索过程(通常是文本嵌入模型 + 向量数据库)将语义上下文插入到提示中。
上下文学习不需要任何训练即可使用,因此在将 LLM 应用于任务时,它是自然的起点。ICL 的主要限制是 LLM 本身的上下文长度(提示中可以放入多少“token”)。值得注意的是,即使对于接受非常长上下文的模型,随着提示长度的增加,性能通常也会下降(参见:Lost in the Middle: How Language Models Use Long Contexts)。因此,如果响应提示所需的上下文非常大,则可能值得考虑微调。