在大数据和人工智能时代,企业不断寻求利用这些技术来获得竞争优势的方法。 目前人工智能最热门的领域之一是生成式人工智能,这是有充分理由的。 生成式人工智能提供了强大的解决方案,突破了创造力和创新的可能界限。 这些尖端解决方案的核心是基础模型 (FM),这是一种基于大量数据进行预训练的高度先进的机器学习模型。 其中许多基础模型在理解和生成类人文本方面表现出了卓越的能力,使它们成为从内容创建到客户支持自动化等各种应用程序的宝贵工具。
然而,这些模型并非没有挑战。 它们非常大,需要大量数据和计算资源来训练。 此外,优化训练过程和校准参数可能是一个复杂且迭代的过程,需要专业知识和仔细的实验。 对于许多希望构建自己的基础模型的组织来说,这些可能是障碍。 为了克服这一挑战,许多客户正在考虑微调现有的基础模型。 这是一种流行的技术,可以针对特定应用调整一小部分模型参数,同时仍然保留模型中已编码的知识。 它允许组织利用这些模型的强大功能,同时减少定制特定领域或任务所需的资源。
微调基础模型有两种主要方法:传统微调和参数高效微调。 传统的微调涉及更新特定下游任务的预训练模型的所有参数。 另一方面,参数高效的微调包括多种技术,允许在不更新所有原始模型参数的情况下定制模型。 其中一种技术称为低秩适应 (LoRA)。 它涉及向预先训练的模型添加小型的、特定于任务的模块并对其进行训练,同时保持其余参数固定,如下图所示。
Sumber: AWS 上的生成式 AI(O'Reilly,2023)
LoRA 最近变得流行有几个原因。 它提供更快的训练、减少的内存需求以及为多个下游任务重用预训练模型的能力。 更重要的是,基础模型和适配器可以单独存储并随时组合,从而更容易存储、分发和共享微调版本。 然而,这带来了一个新的挑战:如何正确管理这些新型的微调模型。 您应该将基本模型和适配器结合起来还是将它们分开? 在这篇文章中,我们将介绍管理 LoRA 微调模型的最佳实践 亚马逊SageMaker 来解决这个新出现的问题。
在 SageMaker 模型注册表上使用 FM
在这篇文章中,我们将介绍一个使用 QLoRA 方法微调 Llama2 大语言模型 (LLM) 的端到端示例。 QLoRA 将参数高效微调的优势与 4 位/8 位量化相结合,进一步减少针对特定任务或用例微调 FM 所需的资源。 为此,我们将使用预训练的 7 亿参数 Llama2 模型,并在 databricks-dolly-15k 数据集上对其进行微调。 像 Llama2 这样的法学硕士拥有数十亿个参数,并且在海量文本数据集上进行了预训练。 微调使用较小的数据集使 LLM 适应下游任务。 然而,微调大型模型的计算成本很高。 这就是为什么我们将在微调期间使用 QLoRA 方法来量化权重,以减少计算成本。
在我们的示例中,您会发现两个笔记本(llm-finetune-combined-with-registry.ipynb
和 llm-finetune-separate-with-registry.ipynb
)。 每种方法都通过不同的方式来处理 LoRA 微调模型,如下图所示:
- 首先,我们使用 SageMaker Studio Notebooks 下载具有 2 亿个参数的预训练 Llama7 模型。 Llama2 等法学硕士在针对特定领域的数据进行微调时,在自然语言处理 (NLP) 任务上表现出了最先进的性能。
- 接下来,我们使用 QLoRA 方法在 databricks-dolly-2k 数据集上微调 Llama15。 QLoRA 通过量化模型权重来降低微调的计算成本。
- 在微调过程中,我们将 SageMaker Experiments Plus 与 Transformers API 集成,以自动记录梯度、损失等指标。
- 然后,我们使用两种方法在 SageMaker Model Registry 中对经过微调的 Llama2 模型进行版本控制:
- 存储完整模型
- 将适配器和基础型号分开存放。
- 最后,我们使用 Deep Java Library (DJL) Serving 在 SageMaker Real-time 端点上托管经过微调的 Llama2 模型。
在以下部分中,我们将深入探讨每个步骤,以演示 SageMaker 对于不同 LLM 工作流程的灵活性以及这些功能如何帮助改进模型的操作。
先决条件
完成以下先决条件即可开始试验代码。
- 创建一个 SageMaker Studio域:Amazon SageMaker Studio,特别是 Studio Notebooks,用于启动 Llama2 微调任务,然后注册并查看其中的模型 SageMaker模型注册表. SageMaker实验 还用于查看和比较 Llama2 微调作业日志(训练损失/测试损失/等)。
- 创建 Amazon Simple Storage Service (S3) 存储桶: 需要访问 S3 存储桶来存储训练工件和模型权重。 有关说明,请参阅 创建一个桶。 本文使用的示例代码将使用 SageMaker 默认 S3 存储桶,但您可以对其进行自定义以使用任何相关的 S3 存储桶。
- 设置模型集合(IAM 权限):使用对资源组的权限更新您的 SageMaker 执行角色,如下所示 模型注册表集合开发人员指南 使用模型集合实现模型注册表分组。
- 接受 Llama2 的条款和条件:您需要接受最终用户许可协议和可接受的使用政策才能使用 Llama2 基础模型。
这些示例可在 GitHub存储库. 笔记本文件使用在 PyTorch 2.0.0 Python 3.10 GPU 优化内核和 ml.g4dn.xlarge 实例类型上运行的 Studio 笔记本进行测试。
实验加回调集成
Amazon SageMaker实验 让您可以使用 SageMaker Python SDK 或 boto3 组织、跟踪、比较和评估来自任何集成开发环境 (IDE)(包括本地 Jupyter Notebook)的机器学习 (ML) 实验和模型版本。 它可以灵活地记录模型指标、参数、文件、工件、根据不同指标绘制图表、捕获各种元数据、搜索它们并支持模型的可重复性。 数据科学家可以通过可视化图表和表格快速比较模型评估的性能和超参数。 他们还可以使用 SageMaker Experiments 下载创建的图表并与利益相关者共享模型评估。
培训法学硕士可能是一个缓慢、昂贵且反复的过程。 对于用户来说,大规模跟踪 LLM 实验以防止不一致的模型调整体验非常重要。 HuggingFace 转换器 API 允许用户在训练任务期间跟踪指标 回呼。 回调是“只读”代码片段,可以自定义 PyTorch Trainer 中训练循环的行为,可以检查训练循环状态以获取进度报告,通过自定义逻辑(包含在 TensorBoard 或 SageMaker Experiments Plus 中)登录 TensorBoard 或 SageMaker Experiments Plus该代码库)。
您可以导入本文代码存储库中包含的 SageMaker Experiments 回调代码,如以下代码块所示:
作为训练运行的一部分,此回调将自动将以下信息记录到 SageMaker Experiments 中:
- 训练参数和超参数
- 步骤、纪元和最终的模型训练和验证损失
- 模型输入和输出工件(训练数据集、验证数据集、模型输出位置、训练调试器等)
下图显示了您可以使用该信息显示的图表示例。
这使您可以使用 SageMaker Experiments 的分析功能轻松比较多次运行。 您可以选择要比较的实验运行,它们将自动填充比较图表。
将微调模型注册到模型注册表集合
模型注册表集合 是一个特点 SageMaker模型注册表 它允许您对彼此相关的已注册模型进行分组,并将它们组织在层次结构中,以大规模提高模型的可发现性。 我们将使用模型注册表集合来跟踪基本模型和微调变体。
完整模型复制方法
第一种方法将基础模型和 LoRA 适配器结合起来,并保存完整的微调模型。 以下代码说明了模型合并过程并使用保存组合模型 model.save_pretrained()
.
微调后将 LoRA 适配器和基础模型组合成单个模型工件既有优点也有缺点。 组合后的模型是独立的,可以独立管理和部署,不需要原始的基础模型。 该模型可以作为其自己的实体进行跟踪,其版本名称反映了基本模型和微调数据。 我们可以采用一个命名法,使用 base_model_name
+ 微调 dataset_name
组织模特小组。 可选地,模型集合可以关联原始模型和微调模型,但这可能不是必需的,因为组合模型是独立的。 以下代码片段向您展示了如何注册微调模型。
您可以使用训练估计器将模型注册到模型注册表中。
从模型注册表中,您可以检索模型包并直接部署该模型。
然而,这种方法也有缺点。 组合模型会导致存储效率低下和冗余,因为基本模型在每个微调版本中都会重复。 随着模型大小和微调模型数量的增加,存储需求呈指数级增长。 以 llama2 7b 模型为例,基础模型约为 13 GB,微调模型为 13.6 GB。 每次微调后,96% 的模型都需要复制。 此外,分发和共享非常大的模型文件也变得更加困难,并带来了操作挑战,因为文件传输和管理成本随着模型大小和微调作业的增加而增加。
单独的适配器和基本方法
第二种方法侧重于分离基本权重和适配器权重,将它们保存为单独的模型组件并在运行时按顺序加载它们。
与完整模型复制方法类似,节省基础和适配器权重有优点也有缺点。 优点之一是可以节省存储空间。 基本权重是微调模型的最大组成部分,仅保存一次,并且可以与针对不同任务调整的其他适配器权重一起重复使用。 例如,Llama2-7B 的基本权重约为 13 GB,但每个微调任务只需要存储约 0.6 GB 的适配器权重,节省了 95% 的空间。 另一个优点是可以使用仅基本权重模型注册表将基本权重与适配器权重分开管理。 这对于在仅 VPC 模式下运行且没有互联网网关的 SageMaker 域非常有用,因为无需通过互联网即可访问基本权重。
为基本权重创建模型包组
为 QLoRA 权重创建模型包组
以下代码演示了如何使用数据集/任务类型标记 QLoRA 权重,并将微调的增量权重注册到单独的模型注册表中,并单独跟踪增量权重。
以下代码片段显示了模型注册表中的视图,其中模型分为基本权重和微调权重。
管理超个性化法学硕士的模型、数据集和任务很快就会变得不堪重负。 SageMaker 模型注册表集合 可以帮助您将相关模型分组在一起并按层次结构组织它们,以提高模型的可发现性。 这使得跟踪基本权重、适配器权重和微调任务数据集之间的关系变得更加容易。 您还可以在模型之间创建复杂的关系和链接。
创建一个新集合并将您的基本模型权重添加到该集合中
按任务和/或数据集将所有微调 LoRA 适配器增量权重链接到此集合
这将产生一个集合层次结构,该集合层次结构通过模型/任务类型和用于微调基本模型的数据集链接。
这种分离基础模型和适配器模型的方法有一些缺点。 一个缺点是部署模型的复杂性。 由于有两个单独的模型工件,因此您需要额外的步骤来重新打包模型,而不是直接从模型注册表进行部署。 在下面的代码示例中,首先下载并重新打包最新版本的基础模型。
然后下载并重新打包最新的微调 LoRA 适配器权重。
由于您将使用 DJL 服务和 deepspeed 来托管模型,因此您的推理目录应如下所示。
最后,将自定义推理代码、基础模型和 LoRA 适配器打包到单个 .tar.gz 文件中进行部署。
清理
按照笔记本清理部分中的说明清理资源。 参考 Amazon SageMaker定价 有关推理实例成本的详细信息。
结论
本文向您介绍了在 Amazon SageMaker 上管理 LoRA 微调模型的最佳实践。 我们介绍了两种主要方法:将底座和适配器重量组合成一个独立的模型,以及将底座和适配器重量分开。 两种方法都有权衡,但分离权重有助于优化存储并支持 SageMaker 模型注册表集合等高级模型管理技术。 这允许您在模型之间构建层次结构和关系,以改进组织和可发现性。 我们鼓励您尝试示例代码 GitHub存储库 亲自尝试这些方法。 随着生成式人工智能的快速发展,遵循模型管理最佳实践将帮助您跟踪实验,找到适合您任务的模型,并大规模有效地管理专业法学硕士。
参考资料
关于作者
詹姆斯吴 是 AWS 的高级 AI/ML 专家解决方案架构师。 帮助客户设计和构建 AI/ML 解决方案。 James 的工作涵盖了广泛的 ML 用例,主要兴趣在于计算机视觉、深度学习和在整个企业中扩展 ML。 在加入 AWS 之前,James 担任了 10 多年的架构师、开发人员和技术领导者,其中包括 6 年的工程经验和 4 年的营销和广告行业经验。
普拉纳夫·穆尔蒂 是 AWS 的 AI/ML 专家解决方案架构师。 他专注于帮助客户构建、训练、部署机器学习 (ML) 工作负载并将其迁移到 SageMaker。 他此前曾在半导体行业工作,开发大型计算机视觉 (CV) 和自然语言处理 (NLP) 模型以改进半导体工艺。 空闲时间,他喜欢下棋和旅行。
梅西特冈戈尔 是 AWS 的 AI/ML 专家解决方案架构师,帮助客户大规模设计和构建 AI/ML 解决方案。 他涵盖了广泛的电信客户 AI/ML 用例,目前专注于生成 AI、LLM 以及训练和推理优化。 经常可以看到他在荒野徒步旅行或在空闲时间与朋友一起玩棋盘游戏。
谢尔比本征桥 是 Amazon Web Services (AWS) 的首席 AI 和机器学习专家解决方案架构师。 她从事技术工作 24 年,涉及多个行业、技术和角色。 她目前专注于将她的 DevOps 和 ML 背景结合到 MLOps 领域,以帮助客户大规模交付和管理 ML 工作负载。 她在各个技术领域拥有超过 35 项专利,对持续创新和使用数据推动业务成果充满热情。 Shelbee 是 Coursera 实用数据科学专业的共同创建者和讲师。 她还是丹佛分会女性大数据 (WiBD) 的联合主任。 在业余时间,她喜欢与家人、朋友和过度活跃的狗共度时光。
- :具有
- :是
- :不是
- :在哪里
- $UP
- 10
- 100
- 11
- 12
- 13
- 15%
- 16
- 20
- 2023
- 23
- 24
- 25
- 28
- 31
- 35%
- 7
- 8
- 95%
- a
- 对,能力--
- 关于
- 接受
- 可接受
- ACCESS
- 访问
- 横过
- 适应
- 适应
- 加
- 添加
- 额外
- 另外
- 地址
- 采用
- 高级
- 优点
- 优点
- 广告
- 后
- 协议
- AI
- 人工智能权利
- AI / ML
- 所有类型
- 让
- 允许
- 已经
- 还
- Amazon
- 亚马逊SageMaker
- 亚马逊SageMaker Studio
- 亚马逊简单存储服务(S3)
- 亚马逊网络服务
- 亚马逊网络服务(AWS)
- 量
- an
- 分析
- 和
- 另一个
- 任何
- API
- 应用领域
- 的途径
- 方法
- 批准
- 约
- 保健
- 地区
- AS
- 律师
- At
- 自动
- 自动化和干细胞工程
- 可使用
- AWS
- 背部
- 背景
- 障碍
- 基地
- BE
- 因为
- 成为
- 成为
- 很
- 行为
- 好处
- 最佳
- 最佳实践
- 之间
- 大
- 大数据运用
- 亿
- 十亿美元
- 阻止
- 板
- 棋盘游戏
- 都
- 边界
- 建立
- 商业
- 但是
- by
- 回调
- 被称为
- CAN
- 能力
- 捕获
- 小心
- 案件
- 例
- 挑战
- 挑战
- 章节
- 图表
- 棋
- 程
- 清除
- 码
- 代码库
- 采集
- 收藏
- 结合
- 结合
- 结合
- 结合
- 公司
- 比较
- 对照
- 竞争的
- 复杂
- 复杂
- 元件
- 组件
- 计算
- 计算
- 一台
- 计算机视觉
- 条件
- 考虑
- 内容
- 内容创造
- 不断
- 连续
- 核心
- 价格
- 可以
- 覆盖
- 盖
- 创建信息图
- 创建
- 创建
- 创造力
- 目前
- 习俗
- 顾客
- 客户支持
- 合作伙伴
- 定制
- 定制
- 前沿
- data
- 数据科学
- 数据集
- 深
- 深入学习
- 更深
- 默认
- 该
- 交付
- Delta
- 演示
- 丹佛
- 部署
- 部署
- 部署
- 部署
- 设计
- 详情
- 开发商
- 发展
- 研发支持
- 不同
- 难
- 直接
- 屏 显:
- 分发
- 分布
- 潜水
- 域
- 域名
- 下载
- 缺点
- 驾驶
- ,我们将参加
- 每
- 更容易
- 容易
- 边缘
- 高效
- 有效
- 其他
- 新兴经济体的新市场。
- 使
- 鼓励
- 端至端
- 端点
- 工程师
- 企业
- 实体
- 环境
- 时代
- 时代
- 等
- 评估
- 评估
- 例子
- 例子
- 异常
- 执行
- 现有
- 昂贵
- 体验
- 实验
- 实验
- 专门知识
- 成倍
- 面部彩妆
- 失败
- 家庭
- 快
- 专栏
- 特征
- 文件
- 档
- 找到最适合您的地方
- 结束
- (名字)
- 固定
- 高度灵活
- 重点
- 聚焦
- 以下
- 针对
- 发现
- 基金会
- 自由的
- 朋友
- 止
- ,
- 功能
- 进一步
- 未来
- Gain增益
- 获得
- Games
- 网关
- 发电
- 生成的
- 生成式人工智能
- Go
- 去
- 非常好
- GPU
- 授予
- 图形
- 图表
- 团队
- 组的
- 手
- 处理
- 有
- 有
- he
- 帮助
- 帮助
- 帮助
- 这里
- 等级制度
- 高度
- 他的
- 主持人
- 最热
- 创新中心
- How To
- 但是
- HTML
- HTTPS
- 拥抱脸
- 说明
- 图片
- 实施
- 履行
- 进口
- 重要
- 重要的
- 进口
- 改善
- in
- 包括
- 包括
- 包含
- 增加
- 增加
- 增加
- 独立
- 独立地
- 行业
- 行业中的应用:
- 效率
- 膨胀
- 信息
- 創新
- 输入
- 例
- 代替
- 说明
- 整合
- 集成
- 兴趣
- 网络
- 成
- 推出
- IT
- 它的
- 詹姆斯
- 爪哇岛
- 工作
- 工作机会
- 加盟
- JPG
- 保持
- 保持
- 键
- 踢
- 知识
- 语言
- 大
- 最大
- 最新
- 领导者
- 信息
- 学习
- 让
- Level
- 自学资料库
- 执照
- 谎言
- 喜欢
- 喜欢
- 友情链接
- 链接
- 已发布
- LLM
- 加载
- 装载
- 本地
- 圖書分館的位置
- 日志
- 记录
- 逻辑
- 看
- 看起来像
- 寻找
- 离
- 机
- 机器学习
- 主要
- 制作
- 制作
- 管理
- 管理
- 颠覆性技术
- 管理的
- 许多
- 营销
- 市场营销与广告
- 大规模
- 可能..
- 内存
- 合并
- 合并
- 元数据
- 方法
- 方法
- 指标
- 迁移
- ML
- 多播
- 时尚
- 模型
- 模型
- 模块
- 更多
- 多
- 姓名
- 自然
- 自然语言处理
- 必要
- 需求
- 需要
- 需要
- 全新
- NLP
- 笔记本
- 现在
- 数
- of
- 折扣
- 优惠精选
- 经常
- on
- 一旦
- 一
- 仅由
- 操作
- 运营
- 优化
- 优化
- 优化
- 追求项目的积极优化
- or
- 组织
- 组织
- 原版的
- 其他名称
- 我们的
- 结果
- 产量
- 超过
- 克服
- 压倒性
- 己
- 包
- 参数
- 参数
- 部分
- 情
- 专利
- 径
- 百分
- 性能
- 权限
- 件
- 柏拉图
- 柏拉图数据智能
- 柏拉图数据
- 播放
- 加
- 政策
- 热门
- 声望
- 一部分
- 可能
- 帖子
- 功率
- 强大
- 实用
- 做法
- 先决条件
- 礼物
- 保存
- 防止
- 先前
- 小学
- 校长
- 先
- 过程
- 过程
- 处理
- 进展
- 正确
- 提供
- 推
- 蟒蛇
- pytorch
- 题
- 很快
- 范围
- 急速
- 实时的
- 原因
- 原因
- 最近
- 减少
- 减少
- 减少
- 减少
- 参考
- 反映
- 寄存器
- 在相关机构注册的
- 注册处
- 有关
- 关系
- 相应
- 卓越
- 报告
- 知识库
- 要求
- 必须
- 岗位要求
- 资源
- REST的
- 导致
- 重用
- 右
- 角色
- 角色
- 运行
- 运行
- 运行
- 运行
- sagemaker
- 保存
- 保存
- 保存
- 储
- 鳞片
- 缩放
- 科学
- 科学家
- SDK
- 搜索
- 其次
- 部分
- 部分
- 寻求
- 半导体
- 前辈
- 分开
- 分离
- 服务
- 特色服务
- 服务
- 几个
- Share
- 共享
- 她
- 应该
- 如图
- 作品
- 类似
- 简易
- 自
- 单
- 尺寸
- 放慢
- 小
- 小
- 片段
- 方案,
- 解决方案
- 一些
- 来源
- 太空
- 张力
- 专家
- 专门
- 具体的
- 特别是
- 花
- 分裂
- 利益相关者
- 开始
- 州/领地
- 国家的最先进的
- Status
- 步
- 步骤
- 仍
- 存储
- 商店
- 存储
- 工作室
- 这样
- SUPPORT
- 行李牌
- 服用
- 任务
- 任务
- 技术
- 技术
- 技术
- 专业技术
- 电信
- 条款
- 测试
- 文本
- 这
- 其
- 他们
- 然后
- 那里。
- 博曼
- 他们
- Free Introduction
- 通过
- 次
- 至
- 一起
- 工具
- 火炬
- 跟踪时
- 传统
- 培训
- 产品培训
- 转让
- 变压器
- 变形金刚
- 旅游
- true
- 尝试
- 调
- 调整
- 调音
- 二
- 类型
- 类型
- 下
- 理解
- 更新
- 更新
- 上传
- 网址
- 使用
- 用例
- 用过的
- 用户
- 用户
- 运用
- 验证
- 有价值
- 折扣值
- 各种
- 各个
- 广阔
- 版本
- 版本
- 非常
- 通过
- 查看
- 愿景
- 视觉
- 走
- 走
- 想
- 是
- 方法..
- 方法
- we
- 卷筒纸
- Web服务
- ,尤其是
- 这
- 而
- 为什么
- 宽
- 大范围
- 将
- 中
- 也完全不需要
- 女性
- 工作
- 工作
- 工作流程
- 合作
- 年
- 完全
- 您一站式解决方案
- 你自己
- 和风网