在这篇文章中,我们展示了使用参数高效微调 (PEFT) 方法对 Llama 2 模型进行微调,并将微调后的模型部署在 AWS Inferentia2。 我们使用 AWS 神经元 用于访问 AWS Inferentia2 设备并受益于其高性能的软件开发套件 (SDK)。 然后我们使用一个大型模型推理容器,由 深度Java库 (DJLServing)作为我们的模型服务解决方案。
解决方案概述
使用 QLoRa 高效微调 Llama2
Llama 2 系列大型语言模型 (LLM) 是预先训练和微调的生成文本模型的集合,其规模从 7 亿到 70 亿个参数不等。 Llama 2 使用来自公开来源的 2 万亿个代币数据进行了预训练。 AWS 客户有时会选择使用客户自己的数据微调 Llama 2 模型,以实现下游任务的更好性能。 然而,由于 Llama 2 模型的参数数量庞大,完全微调可能会非常昂贵且耗时。 参数高效微调(PEFT)方法可以通过仅微调少量额外模型参数同时冻结预训练模型的大部分参数来解决这个问题。 有关 PEFT 的更多信息,可以阅读此 发表。 在这篇文章中,我们使用 QLoRa 微调 Llama 2 7B 模型。
使用 Amazon SageMaker 在 Inf2 上部署微调模型
AWS Inferentia2 是专门为推理工作负载而设计的机器学习 (ML) 加速器,与 AWS 上的其他推理优化实例相比,它可为生成式 AI 和 LLM 工作负载提供高性能,且成本降低高达 40%。 在本文中,我们使用 Amazon Elastic Compute Cloud (Amazon EC2) Inf2 实例,采用 AWS Inferentia2,第二代 Inferentia2 加速器,每个加速器包含两个 NeuronCores-v2。 每个 NeuronCore-v2 都是一个独立的异构计算单元,具有四个主要引擎:张量、矢量、标量和 GPSIMD 引擎。 它包括一个片上软件管理的 SRAM 存储器,可最大限度地提高数据局部性。 由于Inf2已经发表了几篇博客,读者可以参考一下 发表 和我们的 文件 有关 Inf2 的更多信息。
要在 Inf2 上部署模型,我们需要 AWS Neuron SDK 作为在 Inf2 硬件之上运行的软件层。 AWS Neuron 是用于在 AWS Inferentia 和 AWS 上运行深度学习工作负载的软件开发工具包 AWS 培训 基于实例。 它支持端到端 ML 开发生命周期,以构建新模型、训练和优化这些模型,并将它们部署到生产环境中。 AWS Neuron 包括深度学习 编译, 运行及 工具 与 TensorFlow 和 PyTorch 等流行框架原生集成。 在本博客中,我们将使用 transformers-neuronx
,它是用于变压器解码器推理工作流程的 AWS Neuron SDK 的一部分。 它 支持 一系列流行型号,包括 Llama 2。
将模型部署到 亚马逊SageMaker,我们通常使用一个包含所需库的容器,例如 Neuron SDK 和 transformers-neuronx
以及模型服务组件。 Amazon SageMaker 维护 深度学习容器 (DLC) 以及用于托管大型模型的流行开源库。 在这篇文章中,我们使用 神经元大型模型推理容器。 该容器包含在 Inf2 上部署 Llama 2 模型所需的一切。 有关在 Amazon SageMaker 上开始使用 LMI 的资源,请参阅我们的许多现有帖子 (博客1的, 博客2的, 博客3的)关于这个话题。 简而言之,您无需编写任何额外代码即可运行容器。 您可以使用 默认处理程序 为了获得无缝的用户体验,并传入支持的模型名称之一和任何加载时间可配置参数。 这会在 Inf2 实例上编译并提供 LLM。 例如,要部署 OpenAssistant/llama2-13b-orca-8k-3319
,您可以提供以下配置(如 serving.properties
文件)。 在 serving.properties
,我们将模型类型指定为 llama2-13b-orca-8k-3319
,批量大小为4,张量并行度为2,就是这样。 有关可配置参数的完整列表,请参阅 所有 DJL 配置选项.
或者,您可以编写自己的模型处理程序文件,如下所示 例子,但这需要实现模型加载和推理方法来充当 DJLServing API 之间的桥梁。
先决条件
以下列表概述了部署本博客文章中描述的模型的先决条件。 您可以从 AWS管理控制台 或使用最新版本的 AWS命令行界面 (AWS CLI)。
演练
在下一节中,我们将分两部分演练代码:
- 微调 Llama2-7b 模型,并将模型工件上传到指定的 Amazon S3 存储桶位置。
- 使用 Amazon SageMaker 中托管的 DJL 服务容器将模型部署到 Inferentia2 中。
带有说明的完整代码示例可以在此找到 GitHub上 库。
第 1 部分:使用 PEFT 微调 Llama2-7b 模型
我们将使用论文中最近介绍的方法 QLoRA:用于语言生成的量化感知低阶适配器调整 作者:蒂姆·德特默斯等人QLoRA 是一种新技术,可在不牺牲性能的情况下减少大型语言模型在微调过程中的内存占用。
请注意: 下图所示的llama2-7b模型的微调是在亚马逊上测试的 SageMaker Studio 笔记本 使用 Python 2.0 GPU 优化内核 ml.g5.2xlarge 实例类型。 作为最佳实践,我们建议使用 亚马逊SageMaker Studio 您自己启动的集成开发环境(IDE) 亚马逊虚拟私有云 (Amazon VPC)。 这使您可以使用标准的AWS网络和安全功能来控制,监视和检查VPC内部和外部的网络流量。 有关更多信息,请参见 使用私有VPC保护Amazon SageMaker Studio连接的安全.
量化基础模型
我们首先使用 4 位量化加载量化模型 抱脸变形金刚 库如下:
加载训练数据集
接下来,我们加载数据集以提供模型进行微调步骤,如下所示:
附加适配器层
这里我们附加一个小的、可训练的适配器层,配置为 洛拉配置 定义在拥抱面孔中 佩夫特 图书馆。
训练模型
使用上面显示的 LoRA 配置,我们将微调 Llama2 模型以及超参数。 训练模型的代码片段如下所示:
合并模型权重
上面执行的微调模型创建了一个包含经过训练的 LoRA 适配器权重的新模型。 在下面的代码片段中,我们将适配器与基本模型合并,以便我们可以使用微调后的模型进行推理。
将模型权重上传到 Amazon S3
在第 1 部分的最后一步中,我们将合并的模型权重保存到指定的 Amazon S3 位置。 Amazon SageMaker 中的模型服务容器将使用模型权重来使用 Inferentia2 实例托管模型。
第 2 部分:使用 SageMaker LMI 容器托管 QLoRA 模型以通过 AWS Inf2 进行推理
在本部分中,我们将逐步介绍将 QLoRA 微调模型部署到 Amazon SageMaker 托管环境中的步骤。 我们将使用一个 DJL 服务 来自 SageMaker 的容器 DLC,它与集成 变形金刚-neuronx 托管此模型的库。 该设置有助于将模型加载到 AWS Inferentia2 加速器上,跨多个 NeuronCore 并行化模型,并支持通过 HTTP 端点提供服务。
准备模型工件
DJL 支持许多深度学习优化库,包括 极速, 更快的变形金刚 和更多。 对于特定型号的配置,我们提供 serving.properties
具有关键参数,例如 tensor_parallel_degree
和 model_id
定义模型加载选项。 这 model_id
可以是 Hugging Face 模型 ID,也可以是存储模型权重的 Amazon S3 路径。 在我们的示例中,我们提供了微调模型的 Amazon S3 位置。 以下代码片段显示了用于模型服务的属性:
请参考这里 文件 有关可配置选项的更多信息,请通过 serving.properties
。 请注意,我们使用 option.n_position=512
在本博客中了解更快的 AWS Neuron 编译。 如果您想尝试更大的输入令牌长度,那么我们建议读者提前预编译模型(请参阅 EC2 上的 AOT 预编译模型)。 否则,如果编译时间太多,您可能会遇到超时错误。
之后 serving.properties
文件定义后,我们将文件打包成 tar.gz
格式,如下:
然后,我们将 tar.gz 上传到 Amazon S3 存储桶位置:
创建 Amazon SageMaker 模型终端节点
要使用 Inf2 实例进行服务,我们使用 Amazon SageMaker LMI 容器 具有 DJL NeuronX 支持。 请参考这个 发表 有关使用 DJL NeuronX 容器进行推理的更多信息。 以下代码显示如何使用 Amazon SageMaker Python SDK 部署模型:
测试模型端点
模型成功部署后,我们可以通过向预测器发送示例请求来验证端点:
示例输出如下所示:
在数据分析的背景下,机器学习 (ML) 是指一种统计技术,能够通过迭代缩小统计范围,从复杂性和准确性不断增加的数据集中提取预测能力。
机器学习不是一种新的统计技术,而是现有技术的组合。 此外,它还没有被设计为与特定数据集一起使用或产生特定结果。 相反,它的设计足够灵活,可以适应任何数据集并对任何结果进行预测。
清理
如果您决定不再希望保持 SageMaker 端点运行,您可以使用以下命令将其删除 适用于 Python 的 AWS 开发工具包 (boto3)、AWS CLI 或 Amazon SageMaker 控制台。 此外,您还可以 关闭 Amazon SageMaker Studio 资源 不再需要的。
结论
在这篇文章中,我们向您展示了如何使用 LoRA 适配器通过单个 GPU 实例进行 2 位量化来微调 Llama7-4b 模型。 然后,我们使用 DJL 服务容器将该模型部署到 Amazon SageMaker 中托管的 Inf2 实例。 最后,我们使用 SageMaker Python SDK 通过文本生成预测验证了 Amazon SageMaker 模型终端节点。 继续尝试吧,我们很乐意听到您的反馈。 请继续关注 AWS Inferentia 的更多功能和新创新的更新。
有关 AWS Neuron 的更多示例,请参阅 aws-神经元样本.
作者简介
伟德 是 AWS 的高级 AI/ML 专家解决方案架构师。 他热衷于帮助客户推进 AWS 之旅,专注于 Amazon 机器学习服务和基于机器学习的解决方案。 工作之余,他喜欢与家人一起露营、钓鱼和徒步旅行等户外活动。
庆威我李 是Amazon Web Services的机器学习专家。 他获得了博士学位。 在他打破了顾问的研究补助金帐户并未能兑现他所承诺的诺贝尔奖之后,他便在运筹学获得博士学位。 目前,他帮助金融服务和保险行业的客户在AWS上构建机器学习解决方案。 在业余时间,他喜欢阅读和教学。
- SEO 支持的内容和 PR 分发。 今天得到放大。
- PlatoData.Network 垂直生成人工智能。 赋予自己力量。 访问这里。
- 柏拉图爱流。 Web3 智能。 知识放大。 访问这里。
- 柏拉图ESG。 碳, 清洁科技, 能源, 环境, 太阳能, 废物管理。 访问这里。
- 柏拉图健康。 生物技术和临床试验情报。 访问这里。
- Sumber: https://aws.amazon.com/blogs/machine-learning/fine-tune-llama-2-using-qlora-and-deploy-it-on-amazon-sagemaker-with-aws-inferentia2/
- :具有
- :是
- :不是
- :在哪里
- $UP
- 1
- 10
- 100
- 11
- 15%
- 16
- 19
- 24
- 300
- 7
- 70
- 8
- a
- 关于
- 以上
- 加速器
- 加速器
- ACCESS
- 账号管理
- 横过
- 活动
- 适应
- 额外
- 另外
- 地址
- 推进
- 后
- 向前
- AI
- AI / ML
- AL
- 允许
- 沿
- 阿尔法
- 还
- Amazon
- 亚马逊机器学习
- 亚马逊SageMaker
- 亚马逊SageMaker Studio
- 亚马逊网络服务
- an
- 分析
- 和
- 任何
- APIs
- 使用
- 的途径
- 保健
- AS
- At
- 连接
- 汽车
- 可使用
- AWS
- AWS 推理
- 球
- 基地
- 基于
- 配料
- BE
- 很
- 得益
- 最佳
- 更好
- 之间
- 亿
- 博客
- 博客
- 桥
- 布罗克
- 建立
- 但是
- by
- CAN
- 能力
- 能力
- 云端技术
- 码
- 采集
- 组合
- 完成
- 复杂
- 元件
- 计算
- 配置
- 配置
- 连接方式
- 安慰
- 消费
- 容器
- 包含
- 上下文
- 控制
- 价格
- 可以
- 创建
- 目前
- 合作伙伴
- data
- 数据分析
- 决定
- 深
- 深入学习
- 默认
- 定义
- 定义
- 学位
- 交付
- 提供
- 部署
- 部署
- 部署
- 描述
- 设计
- 研发支持
- 设备
- 码头工人
- 向下
- 两
- ,我们将参加
- 动态
- Ë&T
- 每
- 或
- 使
- 端至端
- 端点
- 发动机
- 引擎
- 更多
- 环境
- 错误
- 等
- 一切
- 例子
- 例子
- 执行
- 现有
- 昂贵
- 体验
- 额外
- 面部彩妆
- 功能有助于
- 失败
- false
- 家庭
- 快
- 特色
- 反馈
- 文件
- 最后
- 终于
- 金融
- 金融服务
- 姓氏:
- 钓鱼
- 柔软
- 聚焦
- 遵循
- 其次
- 以下
- 如下
- Footprint
- 针对
- 格式
- 发现
- 四
- 框架
- 冷冻保存
- 止
- ,
- 此外
- 代
- 生成的
- 生成式人工智能
- 得到
- 给
- Go
- 去
- GPU
- 授予
- 硬件
- he
- 听
- 帮助
- 帮助
- 此处
- 高
- 高性能
- 他的
- 主持人
- 托管
- 托管
- 别墅
- 创新中心
- How To
- 但是
- HTML
- HTTP
- HTTPS
- ID
- if
- 图片
- 实施
- 实施
- in
- 包括
- 包括
- 包含
- 增加
- 独立
- 行业中的应用:
- 信息
- 创新
- 输入
- 输入
- 例
- 说明
- 保险
- 集成
- 集成
- 成
- 介绍
- IT
- 迭代
- 它的
- 爪哇岛
- 旅程
- JPG
- JSON
- 保持
- 键
- 套件 (SDK)
- 语言
- 大
- 大
- 最新
- 推出
- 层
- 层
- 学习
- 长度
- Level
- 库
- 自学资料库
- 生命周期
- 喜欢
- 喜欢
- Line
- 清单
- 骆驼
- LLM
- 加载
- 装载
- 圖書分館的位置
- 不再
- 爱
- 降低
- 机
- 机器学习
- 主要
- 维护
- 使
- 颠覆性技术
- 许多
- 最大化
- 内存
- 合并
- 方法
- 方法
- 可能
- ML
- 模型
- 模型
- 模块
- 显示器
- 更多
- 最先进的
- 许多
- 多
- 名称
- 在
- 需求
- 网络
- 网络流量
- 工业网络
- 全新
- 没有
- 诺贝尔奖
- 不包含
- 注意
- 数
- of
- on
- 一
- 仅由
- 到
- 打开
- 开放源码
- 运营
- 优化
- 优化
- 优化
- 附加选项
- 附加选项
- or
- 其他名称
- 除此以外
- 我们的
- 成果
- 大纲
- 产量
- 学校以外
- 超过
- 己
- 包
- 纸类
- 并行
- 参数
- 参数
- 部分
- 部分
- 通过
- 多情
- 径
- 性能
- 执行
- 计划
- 柏拉图
- 柏拉图数据智能
- 柏拉图数据
- 请
- 热门
- 帖子
- 帖子
- 功率
- 供电
- 在练习上
- 平台精度
- 预测
- 预测
- 预报器
- 先决条件
- 私立
- 奖金
- 市场问题
- 过程
- 生产
- 生产
- 许诺
- 提供
- 公然
- 出版
- 蟒蛇
- pytorch
- 范围
- 范围
- 宁
- 阅读
- 读者
- 阅读
- 收到
- 最近
- 建议
- 减少
- 参考
- 指
- 知识库
- 请求
- 要求
- 必须
- 需要
- 研究
- 资源
- 响应
- 回复
- 右
- 运行
- 运行
- 牺牲
- sagemaker
- 保存
- 鳞片
- 缩放
- 范围
- SDK
- 无缝的
- 其次
- 第二代
- 部分
- 保安
- 看到
- 发送
- 前辈
- 序列
- 服务
- 服务
- 特色服务
- 服务
- 集
- 设置
- 格局
- 几个
- 短
- 展示
- 显示
- 如图
- 作品
- 自
- 单
- 尺寸
- 小
- 片段
- So
- 软件
- 软件开发
- 软件开发工具包
- 方案,
- 解决方案
- 有时
- 来源
- 来源
- 专家
- 具体的
- 指定
- 标准
- 开始
- 统计
- 留
- 步
- 步骤
- 存储
- 工作室
- 顺利
- 这样
- SUPPORT
- 支持
- 支持
- 任务
- 教诲
- 技术
- 技术
- tensorflow
- 测试
- 文本
- 这
- 其
- 他们
- 然后
- 博曼
- Free Introduction
- 通过
- Tim
- 次
- 至
- 象征
- 令牌
- 也有
- 最佳
- 主题
- 火炬
- 交通
- 培训
- 熟练
- 产品培训
- 变压器
- 兆
- true
- 尝试
- 调整
- 调音
- 二
- 类型
- 最新动态
- 上传
- 网址
- 使用
- 用过的
- 用户
- 用户体验
- 运用
- 平时
- 验证
- 验证
- 版本
- 通过
- 在线会议
- 走
- 演练
- 想
- 是
- we
- 卷筒纸
- Web服务
- 重量
- 井
- 什么是
- 什么是
- 这
- 而
- 将
- 中
- 也完全不需要
- 工作
- 工人
- 工作流程
- 写
- 写作
- 完全
- 您一站式解决方案
- 和风网