你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
本文介绍语言模型微调,包括一些常见的微调方法,以及应用优化结果如何可以提高 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 文档和示例中都提到了开源软件。 AKS 服务级别协议、有限保修和 Azure 支持不涵盖你部署的软件。 将开源技术与 AKS 一起使用时,请查阅相应社区和项目维护者提供的支持选项来制定计划。
例如,Ray GitHub 存储库描述了多个在响应时间、用途和支持级别方面各不相同的平台。
Microsoft 将负责生成我们在 AKS 上部署的开源包。 该责任包括对生成、扫描、签名、验证和修补过程拥有完整的所有权,以及对容器映像中的二进制文件的控制。 如需了解详细信息,请参阅 AKS 漏洞管理和 AKS 支持范围。
后续步骤
若要了解有关 AKS 上的容器化 AI 和机器学习工作负载的详细信息,请参阅以下文章: