概念 - 微调 AI 和机器学习工作流的语言模型

本文介绍语言模型微调,包括一些常见的微调方法,以及应用优化结果如何可以提高 Azure Kubernetes 服务 (AKS) 上的 AI 和机器学习工作流的性能。

预先训练的语言模型

预先训练的语言模型 (PLM) 提供了一种开始使用 AI 推理的便捷方法,并广泛用于自然语言处理 (NLP)。 PLM 是使用深度神经网络通过 Internet 在大规模文本语料库上训练的,可以针对特定任务在小型数据集上进行微调。 这些模型通常由在预先训练过程中学习的数十亿个参数或权重组成。

PLM 可以学习通用语言表示形式来捕获自然语言的统计属性,例如在特定上下文中单词出现的概率或顺序。 通过微调特定于任务的数据集上的模型,可以将这些表示形式传输到下游任务,例如文本分类、命名实体识别和问题解答。

优点和缺点

下表列出了在 AI 和机器学习工作流中使用 PLM 的一些优点和缺点:

优点 缺点
• 在机器学习生命周期中快速开始部署。
• 避免与模型训练相关的大量计算成本。
• 减少存储大型标记数据集的需求。
• 基于预先训练的数据源,可能提供通用或过时的响应。
• 可能不适合所有任务或域。
• 性能可能因推理上下文而异。

微调方法

参数高效微调

参数高效微调 (PEFT) 是一种在计算资源有限的相对较小的数据集上微调 PLM 的方法。 PEFT 使用加法和选择性方法等技术组合来更新权重,以提高模型在特定任务上的性能。 PEFT 需要最少的计算资源和灵活的数据量,适用于低资源设置。 此方法保留了原始预训练模型的大部分权重,并会更新剩余权重以适应特定于上下文的标记数据。

低序自适应

低序自适应 (LoRA) 是一种 PEFT 方法,通常用于为新任务自定义大型语言模型。 此方法会跟踪对模型权重的更改,并有效地存储仅表示模型的可训练参数的较小权重矩阵,从而降低内存使用量和微调所需的计算能力。 LoRA 会创建微调结果(称为适配器层),这些结果可以临时存储并拉取到模型的体系结构中,以用于新的推理作业。

量化低序自适应 (QLoRA) 是 LoRA 的一个扩展,它通过在适配器层中引入量化来进一步减少内存使用量。 有关详细信息,请参阅使用 bitsandbites、4 位量化和 QLoRA 使 LLM 更易于使用

尝试在 AKS 上微调语言模型

Kubernetes AI 工具链操作器 (KAITO) 是一个开源操作器,可在 Kubernetes 群集中自动执行小型和大型语言模型部署。 AI 工具链操作器加载项利用 KAITO 来简化载入、节省基础结构成本,并减少 AKS 群集上开源模型的推理时间。 该加载项会自动预配大小正确的 GPU 节点,并将关联的推理服务器设置为所选模型的终结点服务器。

借助 KAITO 版本 0.3.0 或更高版本,可以使用以下功能有效地微调支持的 MIT 和 Apache 2.0 许可模型:

  • 将重新训练的数据存储为专用容器注册表中的容器映像。
  • 在专用容器注册表中托管新的适配器层映像。
  • 在新方案中,可以使用适配器层高效拉取映像进行推理。

有关在 KAITO 上开始微调的指南,请参阅 Kaito 优化工作区 API 文档。 若要详细了解如何在 AKS 群集中使用 KAITO 部署语言模型,请参阅 KAITO 模型 GitHub 存储库

后续步骤

若要了解有关 AKS 上的容器化 AI 和机器学习工作负载的详细信息,请参阅以下文章: