发表日期:2024年1月17日作者:Xin Huang Dewan Choudhury Nitin Eusebius Joe Senerchia Ashish Khetan Kamran Khan Li Zhang Madhur Prashant Qing Lan Hao Zhou高级文章 Amazon SageMaker AWS Inferentia 中级文章
今天,我们很高兴地宣布 AWS Trainium 和 AWS Inferentia 实例上支持 Llama 2 的推理和微调功能。使用基于 AWS Trainium 和 Inferentia 的实例,用户可以通过 SageMaker 将微调成本降低高达 50,部署成本降低 47 倍,同时提升每个 token 的延迟。Llama 2 是一个自回归生成式文本语言模型,采用优化的变换器架构。作为一个公开的模型,Llama 2 旨在完成多种自然语言处理任务,如文本分类、情感分析、语言翻译、语言建模、文本生成和对话系统。微调和部署大型语言模型LLMs,例如 Llama 2,可能会变得昂贵,或者难以保证实时性能以提供良好的客户体验。Trainium 和 AWS Inferentia 通过 AWS Neuron 软件开发工具包SDK提供了一种高性能且具有成本效益的选项,用于训练和推理 Llama 2 模型。
在本篇文章中,我们将展示如何在 SageMaker JumpStart 中的 Trainium 和 AWS Inferentia 实例上部署和微调 Llama 2。
在这篇博客中,我们将经过以下场景:
在 AWS Inferentia 实例上部署 Llama 2,通过 Amazon SageMaker Studio UI 进行一键部署,以及使用 SageMaker Python SDK。在 Trainium 实例上微调 Llama 2,通过 SageMaker Studio UI 和 SageMaker Python SDK。比较微调后 Llama 2 模型的性能与预训练模型之间的差距,以显示微调的有效性。要进行实践,请参见 GitHub 示例笔记本。
本节将演示如何使用 SageMaker Studio UI 进行一键部署和使用 Python SDK 在 AWS Inferentia 实例上部署 Llama 2。
SageMaker JumpStart 提供了对公开和专有的 基础模型 的访问。基础模型由第三方和专有提供商提供。请务必查看所使用基础模型的许可证。您有责任审查并遵守任何适用的许可证条款,并确保对您的使用情况是可接受的再进行下载或使用内容。
您可以通过 SageMaker JumpStart 访问 Llama 2 基础模型。在本节中,我们将介绍如何在 SageMaker Studio 中发现这些模型。
SageMaker Studio 是一个集成开发环境IDE,提供了一个统一的基于 Web 的可视化界面,可访问专门针对 ML 的工具,从准备数据到构建、训练和部署 ML 模型的所有步骤。有关如何开始使用 SageMaker Studio 的详细信息,请参阅 Amazon SageMaker Studio。
进入 SageMaker Studio 后,您可以在 Prebuilt and automated solutions 下访问 SageMaker JumpStart,其中包含预训练模型、笔记本和预构建解决方案。有关如何访问专有模型的更多详细信息,请参阅 在 Amazon SageMaker Studio 中使用 Amazon SageMaker JumpStart 的专有基础模型。
您可以选择模型卡,查看有关模型的详细信息,例如许可证、用于训练的数据以及如何使用它。您还可以找到两个按钮:Deploy 和 Open notebook,帮助您使用此无代码示例使用模型。
选择任一按钮后,弹出窗口将显示最终用户许可协议EULA和可接受使用政策AUP,供您确认。
确认政策后,您可以部署模型的端点,并根据下一节的步骤使用它。
选择Deploy并确认条款后,模型部署将开始。或者,您可以通过选择 Open notebook 通过示例笔记本进行部署。示例笔记本提供了有关如何为推理部署模型和清理资源的端到端指导。
啊哈加速器新版本下载要在 Trainium 或 AWS Inferentia 实例上部署或微调模型,您需要先调用 PyTorch Neuron (torchneuronx),将模型编译为特定于 Neuron 的图,以优化 Inferentia 的 NeuronCores。用户可以指示编译器根据应用程序的目标优化最低延迟或最高吞吐量。在 JumpStart 中,我们已预编译了多种配置的 Neuron 图,以使用户跳过编译步骤,从而加快微调和模型部署的速度。
请注意,Neuron 预编译图是基于特定版本的 Neuron 编译器创建的。
在 AWS Inferentia 的实例上有两种方式可以部署 LIama 2。第一种方法利用预构建配置,允许您仅用两行代码部署模型。第二种方法则让您更大程度地控制配置。我们先介绍第一种方法,以预构建配置为例,使用预训练的 Llama 2 13B Neuron 模型。以下代码展示了如何仅用两行代码部署 Llama 13B:
pythonfrom sagemakerjumpstartmodel import JumpStartModel
modelid = metatextgenerationneuronllama213bmodel = JumpStartModel(modelid=modelid)pretrainedpredictor = modeldeploy(accepteula=False) ## To set accepteula to be True to deploy
要对这些模型进行推理,您需要在 modeldeploy() 调用中指定参数 accepteula 为 True。将该参数设置为 true,表示您已阅读并接受模型的 EULA。EULA 可以在模型卡描述中找到,或从 Meta 网站 获得。
Llama 2 13B 的默认实例类型为 mlinf28xlarge。您还可以尝试其他支持的模型 ID:
metatextgenerationneuronllama27bmetatextgenerationneuronllama27bf (聊天模型)metatextgenerationneuronllama213bf (聊天模型)另外,如果您希望更好地控制部署配置,例如上下文长度、张量并行度和最大滚动批次大小,您可以通过环境变量进行修改,如本节所示。部署的基础深度学习容器DLC是 Large Model Inference (LMI) NeuronX DLC。环境变量如下:
OPTIONNPOSITIONS 输入和输出 token 的最大数量。例如,如果您将模型编译时 OPTIONNPOSITIONS 设置为 512,您可以使用 128输入提示大小的输入 token 和 384输入和输出 token 的总和必须为 512的最大输出 token。对于最大输出 token,任何小于 384 的值都可以,但是不能超过该值例如,输入 256 和输出 512。OPTIONTENSORPARALLELDEGREE 在 AWS Inferentia 实例中加载模型的 NeuronCores 数量。OPTIONMAXROLLINGBATCHSIZE 同时请求的最大批次大小。OPTIONDTYPE 加载模型的数据类型。Neuron 图的编译依赖于上下文长度 (OPTIONNPOSITIONS)、张量并行度 (OPTIONTENSORPARALLELDEGREE)、最大批次大小 (OPTIONMAXROLLINGBATCHSIZE) 和数据类型 (OPTIONDTYPE)。SageMaker JumpStart 为前述参数的各种配置预编译了 Neuron 图,以避免运行时编译。预编译图的配置如下表所示。只要环境变量落在以下类别之一,Neuron 图的编译将被跳过。
Llama2 7B 和 Llama2 7B Chat实例类型OPTIONNPOSITIONSOPTIONMAXROLLINGBATCHSIZEOPTIONTENSORPARALLELDEGREEOPTIONDTYPEmlinf2xlarge102412fp16mlinf28xlarge204812fp16mlinf224xlarge409644fp16mlinf224xlarge409648fp16mlinf224xlarge4096412fp16mlinf248xlarge409644fp16mlinf248xlarge409648fp16mlinf248xlarge4096412fp16mlinf248xlarge4096424fp16Llama2 13B 和 Llama2 13B Chatmlinf28xlarge102412fp16mlinf224xlarge204844fp16mlinf224xlarge409648fp16mlinf224xlarge4096412fp16mlinf248xlarge204844fp16mlinf248xlarge409648fp16mlinf248xlarge4096412fp16mlinf248xlarge4096424fp16以下是一个示例,展示如何部署 Llama 2 13B 并设置所有可用配置。
pythonfrom sagemakerjumpstartmodel import JumpStartModel
modelid = metatextgenerationneuronllama213bfmodel = JumpStartModel( modelid=modelid env={ OPTIONDTYPE fp16 OPTIONNPOSITIONS 4096 OPTIONTENSORPARALLELDEGREE 12 OPTIONMAXROLLINGBATCHSIZE 4 } instancetype=mlinf224xlarge)pretrainedpredictor = modeldeploy(accepteula=False) ## To set accepteula to be True to deploy
现在我们已经部署了 Llama213b 模型,可以通过调用端点进行推理。以下代码片段演示了如何使用支持的推理参数控制文本生成:
maxlength 模型生成文本,直到输出长度包括输入上下文长度达到 maxlength。如果指定,必须为正整数。maxnewtokens 模型生成文本,直到输出长度不包括输入上下文长度达到 maxnewtokens。如果指定,必须为正整数。numbeams 表示贪婪搜索中使用的束数。如果指定,必须大于或等于 numreturnsequences 的整数。norepeatngramsize 模型确保在输出序列中不重复 norepeatngramsize 的词序列。如果指定,必须为大于 1 的正整数。temperature 控制输出的随机性。较高的温度会导致输出序列生成概率较低的单词;较低的温度会导致输出序列生成概率较高的单词。如果 temperature 为 0,将导致贪婪解码。如果指定,必须为正浮点数。earlystopping 如果为 True,文本生成在所有束假设达到句子结束标记时完成。如果指定,必须是布尔值。dosample 如果为 True,模型根据可能性抽样下一个单词。如果指定,必须是布尔值。topk 在每个文本生成步骤中,模型仅从 topk 可能性最高的单词中进行抽样。如果指定,必须为正整数。topp 在每个文本生成步骤中,模型从具有累计概率 topp 的最小单词集合中进行抽样。如果指定,必须是在 01 之间的浮点数。stop 如果指定,必须是字符串列表。如果生成的文本包含任何一个指定字符串,则文本生成停止。
以下代码展示了一个示例:
pythonpayload = { inputs 我相信生命的意义是 parameters { maxnewtokens 64 topp 09 temperature 06 }}
response = pretrainedpredictorpredict(payload)
输出:
plaintext我相信生命的意义是
追求幸福。我相信幸福是一种选择。我相信幸福是一种心态。我相信幸福是一种存在状态。
有关有效负载中参数的更多信息,请参见 详细参数。
生成式 AI 基础模型已成为机器学习和人工智能的主要关注点,然而,其广泛的通用性可能无法满足特定领域如医疗或金融服务中的独特数据集。这一局限性突显了使用域特定数据微调这些生成式 AI 模型的必要性,从而增强其在这些专业领域的性能。
现在我们已经部署了预训练版本的 Llama 2 模型,让我们看看如何微调该模型,以适应特定域的数据,提高准确性,改善模型的提示完成,适应您的具体业务用例和数据。您可以通过 SageMaker Studio UI 或 SageMaker Python SDK 微调模型。我们在本节中讨论这两种方法。
在 SageMaker Studio 中,导航到 Llama213b Neuron 模型。在 Deploy 选项卡上,您可以指向包含用于微调的训练和验证数据集的 Amazon Simple Storage ServiceAmazon S3存储桶。此外,您可以配置微调的部署配置、超参数和安全设置。然后选择 Train 开始在 SageMaker ML 实例上进行训练作业。
![微调设置](https
使用亚马逊 Comprehend 有害内容检测标记有害内容 机器学习博客
使用 Amazon Comprehend 进行有害内容标记关键要点key takeawaysAmazon Comprehend提供了一项新的毒性检测功能,旨在帮助自动检测用户或机器生成文本中的有害内容。该工具使用自然语言处理技术,通过毒性分数和分类来帮助内容审核。支持的文本类型包括普通文本、图片提取...
敏捷企业 云企业战略博客
敏捷企业的关键文章要点在数字化快速变化的时代,企业需要迅速应对变化以保持竞争力,这就是所谓的敏捷性。实现企业敏捷不仅是技术挑战,还涉及管理和文化的调整。企业应当审视合同、招聘流程、人力资源管理、供应链和财务决策,找出限制灵活性的因素,从而提升整体业务的敏捷性。良好的治理模式应该为企业提供灵活性,同时...