公司新闻

在 Amazon SageMaker JumpStart 上微调 Llama 3 以进行文本生成 机

2026-01-27 13:29:14



用 Amazon SageMaker JumpStart 微调 Llama 3 生成文本

主要要点

生成式人工智慧模型越来越受欢迎,支持多种应用,例如文本生成和代码生成。微调模型以专门的数据集进行特定任务是提高其性能的关键。本文展示如何在 Amazon SageMaker JumpStart 上微调 Meta 的 Llama 3 模型。

生成式人工智慧AI模型近年来越来越受欢迎,使得文本生成、摘要、问答和代码生成等应用变得更加高效。然而,尽管这些模型具有强大的能力,但由于其训练数据的普遍性,它们在特定领域的应用时常面临困难。为了解决这一挑战,对这些模型进行针对特定数据的微调对于在专业领域内实现最佳性能至关重要。

在这篇文章中,我们展示了如何利用 Amazon SageMaker JumpStart 对 Meta 新发布的 Llama 3 模型特别是 llama38b 和 llama370b 版本进行微调。微调过程基于 Meta 提供的 llamarecipes 存储库中提供的脚本,利用 PyTorch FSDP、PEFT/LoRA 和 Int8 量化等技术,实现这些大型模型在特定领域数据集上的高效微调。

通过使用 SageMaker JumpStart 对 Meta Llama 3 模型进行微调,您可以利用这些模型改善推理、代码生成和指令跟随能力,以满足您的特定需求。

Meta Llama 3 概述

Meta Llama 3 提供了两种参数大小8B 和 70B,并具有 8000 的上下文长度,能够支持广泛的用例,并在推理、代码生成和指令跟随方面进行改进。Meta Llama 3 采用的是单解码器转换器架构和新的分词器,能够在上下文大小为 128000 时提升模型性能。此外,Meta 改进了后训练程序,从而显著降低了错误拒绝率,提高了模型对齐度并增强了模型回应的多样性。现在,您可以将 Meta Llama 3 的性能优势与 Amazon SageMaker 的 MLOps 控制进行结合,利用 Amazon SageMaker Pipelines 和 Amazon SageMaker Debugger 等功能。此外,该模型将在您的虚拟私有云VPC控制下的 AWS 安全环境中部署,以帮助保护数据安全。

SageMaker JumpStart

SageMaker JumpStart 是 SageMaker 机器学习ML环境中的一个强大功能,为 ML 从业者提供了公共和专有基础模型FMs的综合中心。通过这项管理服务,ML 从业者可以访问来自领先模型集成商和提供商的增长名单,这些模型可以在网络隔离的环境中专用的 SageMaker 实例上进行部署,并利用 SageMaker 进行模型训练和部署的自定义化。

前提条件

为了使用 SageMaker JumpStart 试用此解决方案,您需要满足以下前提条件:

AWS 帐号,用于存储所有 AWS 资源。一个 AWS 身份与访问管理IAM角色,以访问 SageMaker。要了解 IAM 如何与 SageMaker 一起使用,请参考 Amazon SageMaker 的身份与访问管理。访问 Amazon SageMaker Studio 或 SageMaker 笔记本实例,或者使用 PyCharm 或 Visual Studio Code 等互动开发环境。我们建议使用 SageMaker Studio 以简化部署和推理。

微调 Meta Llama 3 模型

在本部分中,我们将探讨微调 Meta Llama 3 模型的步骤。我们将涵盖两种方法:通过 SageMaker Studio UI 进行无代码解决方案,以及利用 SageMaker Python SDK。

使用 SageMaker Studio UI 进行无代码微调

SageMaker JumpStart 提供了第三方和专有提供商的公共和 专有基础模型 的访问。数据科学家和开发人员可以快速原型设计并实验各种 ML 用例,加快 ML 应用的开发和部署速度,帮助减少从零开始构建 ML 模型所需的时间和精力,使团队能够专注于微调和自定义模型以满足特定用例。这些模型是根据其各自来源指定的不同许可证释放的。在下载或使用这些模型之前,必须查看并遵循适用的授权条款,以确保它们适合您的预期用例。

您可以通过 SageMaker Studio UI 和 SageMaker Python SDK 访问 Meta Llama 3 基础模型。在本节中,我们将介绍如何在 SageMaker Studio 中发现这些模型。

SageMaker Studio 是一个 IDE,提供了基于 Web 的可视化界面,执行从数据准备到模型构建、训练和部署的 ML 开发步骤。有关入门和设置 SageMaker Studio 的说明,请参见 Amazon SageMaker Studio。

当您在 SageMaker Studio 中时,可以通过选择导航窗格中的 JumpStart 访问 SageMaker JumpStart。

在 JumpStart 界面中,您将看到 SageMaker 提供的公共模型列表。您可以在此视图中探索其他提供商的其他模型。为了开始使用 Meta Llama 3 模型,请在 Providers 下选择 Meta。

您将看到可用模型的列表。选择 MetaLlama38BInstruct 模型。

在这里,您可以查看模型详情,以及训练、部署、优化和评估模型。这次演示中我们选择 Train。

在这个页面上,您可以指向包含训练和验证数据集的 Amazon 简单存储服务Amazon S3存储桶。此外,您还可以配置部署设定、超参数和安全设置以进行微调。选择 Submit 以开始在 SageMaker ML 实例上启动训练作业。

部署模型

微调完成后,您可以使用 SageMaker JumpStart 上的模型页面进行部署。当微调完成后,将出现部署微调模型的选项,如下所示的截图所示。

您也可以从此视图部署模型。您可以配置端点设置,例如实例类型、实例数量和端点名称。在部署模型之前,您需要接受最终用户许可协议EULA。

使用 SageMaker Python SDK 进行微调

您还可以使用 SageMaker Python SDK 微调 Meta Llama 3 模型。在 GitHub 上可以找到包含完整说明的示例笔记本。以下代码示例演示了如何微调 Meta Llama 3 8B 模型:

pythonimport osimport boto3from sagemakersession import Sessionfrom sagemakerjumpstartestimator import JumpStartEstimator

若要微调 JumpStart 中的 Llama 3 70B 模型,请将 modelid 更改为 metatextgenerationllama370b。

modelid = metatextgenerationllama38baccepteula = trueestimator = JumpStartEstimator( modelid=modelid environment={accepteula accepteula})

小黄鸭加速器官网入口

在 Amazon SageMaker JumpStart 上微调 Llama 3 以进行文本生成 机

默认情况下,指令微调设定为 false。因此,若要使用指令微调数据集,请设置 instructiontuned=True

estimatorsethyperparameters(instructiontuned=True epoch=5)estimatorfit({training traindatalocation})

该代码设置了 SageMaker JumpStart 评估器,以便在自定义训练数据集上微调 Meta Llama 3 大型语言模型LLM。它配置了所需的模型 ID,接受 EULA,通过设置 instructiontuned=True 来启用指令微调,设置训练迭代次数,并启动微调过程。

微调作业完成后,您可以直接通过评估器部署微调后的模型,如下代码所示。在部署设置中,您还可以定义要部署模型所使用的实例类型。要获取全部部署参数的完整列表,请参阅 SageMaker SDK 文档中的 部署参数。

python

若要将 Llama 3 70B 模型部署到 mlg512xlarge 实例类型,或者将默认值设为 mlp4d24xlarge

finetunedpredictor = estimatordeploy(instancetype=mlg512xlarge)

当端点启用并运行后,您可以使用以下方式进行推理请求:

pythonprompt = Your prompt goes herepayload = { inputs prompt parameters {maxnewtokens 256}}response = finetunedpredictorpredict(payload)responseget(generatedtext)

要获得 predictor 物件的全部参数列表,请参阅 SageMaker SDK 文档中的 predictor 物件。

微调技术

像 Meta Llama 这样的语言模型的大小超过 10 GB 或甚至 100 GB。微调这些大型模型需要具有显著更高 CUDA 记忆体的实例。此外,由于模型的尺寸,训练这些模型的速度可能会非常慢。因此,为了进行高效的微调,我们使用以下优化措施:

低秩适应 (LoRA) 这是一种 参数高效微调PEFT的方法,用于高效微调大型模型。在此过程中,我们冻结整个模型,仅向模型中添加一小部分可调参数或层。例如,与 Llama 3 8B 的 80 亿个参数相比,我们可以微调不到 1 的参数。这有助于显著减少记忆体需求,因为我们仅需存储 1 参数的梯度、优化状态和其他训练相关信息。此外,这有助于降低训练时间和成本。有关这种方法的更多详细信息,请参阅 LoRA 大型语言模型的低秩适应。

Int8 量化 即使像 LoRA 这样的优化措施,Meta Llama 70B 模型在训练过程中仍然需要显著的计算资源。为了减少训练过程中的记忆体占用,我们可以采用 Int8 量化。量化通常会降低浮点数据类型的精度。虽然这降低了存储模型权重所需的记忆体,但可能会由于信息的损失而影响性能。然而,Int8 量化仅使用完整精度训练的一四分之一的精度,但不会显著降低性能。它不仅仅是简单地丢弃位,Int8 量化通过将数据从一种类型四舍五入到另一种来保留基本信息,同时优化记忆体使用。想了解有关 Int8 量化的详细信息,请参见 int8() 大型转换器的 8 位矩阵乘法。

完全分片数据并行 (FSDP) 这是一种数据并行训练算法,可将模型的参数切分到数据并行工作者之间,并可选择将部分训练计算卸载到 CPU。尽管这些参数在不同的 GPU 之间进行了分片,但每个微批次的计算是执行在本地 GPU 工作者的。它更均匀地分片参数并通过在训练过程中进行通信和计算重叠来达到优化性能。

以下表格比较了不同方法在两个 Meta Llama 3 模型上的表现。

默认实例类型支持的实例类型默认配置默认设置LORA FSDPLORA 无 FSDPInt8 量化 LORA 无 FSDPLlama 3 8Bmlg512xlargemlg512xlarge mlg524xlarge mlg548xlargeLORA FSDP是是Llama 3 70Bmlg548xlargemlg548xlargeINT8 LORA 无 FSDP否否

Meta Llama 模型的微调基于 GitHub repo 提供的脚本。

训练数据格式

SageMaker JumpStart 目前支持领域适应格式和指令微调格式的数据集。在本部分中,我们将分别指定两种格式的示例数据集。详情请参见附录中的 数据集格式化 部分。

领域适应格式

Meta Llama 3 文本生成模型可以在领域专用数据集上进行微调,使其能够生成相关文本并处理特定领域的各种自然语言处理NLP任务。该微调过程涉及向模型提供与目标领域相关的数据集。数据集可以