使用 Llama 31 405B 进行合成数据生成和蒸馏,以微调较小的模型 机器学习博客
利用 Llama 31 405B 生成合成数据以微调较小模型
关键要点
在本篇文章中,我们介绍了如何使用 Llama 31 405B 模型生成数据,并使用生成的数据进行蒸馏,以优化较小模型如 Llama 3 8B的响应能力。此外,提供了可用于直接运行和测试解决方案的代码笔记本。
今天,我们非常高兴地宣布 Llama 31 405B 模型在 Amazon SageMaker JumpStart 和 Amazon Bedrock 中的预览版本现已可用。Llama 31 模型是一系列最先进的预训练和指令微调的生成式人工智能AI模型,大小涵盖 8B、70B 和 405B。Amazon SageMaker JumpStart 是一个机器学习ML中心,提供算法、模型和 ML 解决方案,助力您快速启动 ML 项目。Amazon Bedrock 提供了一种简单的方法,通过 Meta Llama 模型构建和扩展生成式 AI 应用,仅需一个 API。
在本文中,我们展示如何使用 Llama 31 405B 生成数据样本数据集的标签,并如何使用生成的数据进行蒸馏,以便微调较小的模型如 Llama 3 8B,从而生成相较于未微调模型的更优响应。我们还提供了可供您运行和测试解决方案的 代码笔记本。该方法同样适用于微调其他小型模型,包括 Llama 31 8b。
Llama 31 405B 概述
Llama 31 系列是多语言大型语言模型LLMs,包括 8B、70B 和 405B三种大小的预训练和指令调优生成模型文本输入/输出。所有模型都支持长上下文长度128000并针对推理进行了优化,支持分组查询注意力GQA。Llama 31 的指令微调文本模型8B、70B、405B特别优化了多语言对话场景,并在多个公共行业基准测试中超越了许多现有的聊天模型。
Llama 31 405B 是首个公开可用的模型,在知识、引导性、数学、工具使用和多语言翻译等领域具备与顶级 AI 模型相媲美的最先进能力。此外,对于直接推理以外,您还可以使用 Llama 31 405B 生成合成数据以改善更小模型,从而使其成为特定领域模型的强大基础。
飞速加速器官网flycnLlama 31 模型目前可在 SageMaker JumpStart 和 Amazon Bedrock 中用于推理。在 SageMaker JumpStart 中,它们正在向所有支持 SageMaker JumpStart 的 AWS 区域发布,并支持所需的实例类型。Llama 31 405B 需要 P5 实例才能在 Amazon SageMaker 中使用。Llama 31 模型也在 Amazon Bedrock 的 uswest2 区域中提供,未来计划扩大可用区域。
前提条件
实施本文所述步骤所需的前提条件如下:
一个 AWS 账户,用于存储所有 AWS 资源。一个 AWS 身份与访问管理 IAM角色,以访问 SageMaker 和 Amazon Bedrock。有关详细信息,请参阅 Amazon SageMaker 的身份与访问管理 和 Amazon Bedrock 的身份与访问管理。访问 Amazon SageMaker Studio 或 SageMaker 笔记本实例,或使用 PyCharm、Visual Studio Code 等交互式开发环境IDE。Llama 3 8B 指令模型的响应
首先,我们通过 Amazon Bedrock 或使用 SageMaker JumpStart 部署的端点进行 Llama 3 8B 模型的推理。利用针对对话场景优化的 Llama 3 指令模型,输入至模型端点为聊天助手与用户之间的历史记录。我们可以提出与上下文相关的问题,使用特定格式的输入文本如我们早期 Llama 3B 发布帖子中所述,Meta Llama 3 模型现已在 Amazon Bedrock 中可用 和 Meta Llama 3 模型现已在 Amazon SageMaker JumpStart 中可用。
例如,用户与助手的对话关于巴黎的景点,助手提供了四个不同的推荐选项,用户随后询问第一个选项的详细信息:
输入 ltbeginoftextgtltstartheaderidgtuserltendheaderidgtnn我计划去巴黎,建议我看看什么?lteotidgtltstartheaderidgtassistantltendheaderidgtnn巴黎,法国的首都,以其壮观的建筑、艺术博物馆、历史地标和浪漫氛围而闻名。以下是一些您在巴黎必须参观的热门景点:nn1 埃菲尔铁塔:这座标志性的埃菲尔铁塔是世界上最具识别度的地标之一,能够为您提供壮观的城市景观。n2 卢浮宫博物馆:卢浮宫是世界上最大和最著名的博物馆之一,馆内拥有令人印象深刻的艺术品和文物,包括《蒙娜丽莎》。n3 巴黎圣母院:这座美丽的教堂是巴黎最著名的地标之一,以其哥特式建筑和华丽的彩色玻璃窗而闻名。nn这些只是巴黎众多景点中的一部分。如此多的可看可做的活动,难怪巴黎被认为是世界上最受欢迎的旅游目的地。lteotidgtltstartheaderidgtuserltendheaderidgtnn什么使得第一个选项如此伟大?lteotidgtltendheaderidgtnn输出 埃菲尔铁塔!它是巴黎的标志性象征,也是世界上最具识别度的地标之一。以下是它伟大的原因:nn1 工程奇迹:当它为 1889 年世界博览会而建时,埃菲尔铁塔是一个突破性的工程壮举。当时它是世界上最高的建筑,高达 324 米1063 英尺。n2 全景视角:埃菲尔铁塔的观景台提供360度的城市全景。您可以看到许多巴黎著名地标,如塞纳河、卢浮宫和蒙马特。n3 浪漫氛围:埃菲尔铁塔常常与浪漫联系在一起,是热门的求婚、婚礼和浪漫晚餐地点。铁的格栅和夜晚闪烁的灯光增强了其浪漫的氛围。n4 历史意义:埃菲尔铁塔在法国历史上发挥了重要作用,在第一次世界大战期间作为通信塔,成为法国文化和工程的象征。n5 易于到达:埃菲尔铁塔可以通过公共交通或步行轻松抵达,有多种体验方式,包括步行、乘坐电梯或参加导览游。n6 夜间景观:夜幕降临时,埃菲尔铁塔显得更加梦幻,成千上万的闪烁灯光使它绽放光彩。灯光秀在黄昏到午夜的每一个小时进行。n7 标志性地位:埃菲尔铁塔出现在无数电影、文学和艺术作品中,是巴黎和法国的瞬间识别象征。nn总的来说,埃菲尔铁塔是巴黎的必游景点,拥有历史、工程、浪漫和壮观景观的独特组合。
Llama 3 8B 模型能够毫无问题地生成答案。
接下来,我们测试 Llama 3 8B 在逻辑和算术题上的回答能力取自 Hugging Face 的 AQUARAT 数据集。我们要求模型给出完整的答案,而不是选择题选项,例子如下:
输入:ltbeginoftextgtltstartheaderidgtuserltendheaderidgt长 7 英尺 9 英寸的木板被分成 3 个相等的部分。每个部分的长度是多少?lteotidgtltstartheaderidgtassistantltendheaderidgt
输出:这是一个很简单的问题!首先将木板的长度转换为英寸:7 英尺 9 英寸 = 95 英寸因为 1 英尺 = 12 英寸。由于木板被分成 3 个相等的部分,每部分的长度计算如下:每部分长度为 95 英寸 3 = 3167 英寸。所以,每个部分大约是 3167 英寸长。

这个回答看起来几乎正确,但并不完全准确。正确的答案是 31 英寸。Llama 3 8B 模型未能正确回答类似的逻辑问题。
为了提升 Llama 3 8B 模型在逻辑题解答能力,我们希望利用 AQUARAT 数据集中的数据对其进行微调。正如我们之前提到的,AQUARAT 数据集包含多个选择选项供 LLM 选择。由于我们没有该数据集的完整答案,我们使用 Llama 31 405B 模型为问题生成口头答案,并将这些答案用于微调 Llama 3 8B 模型。
使用 Llama 31 405B 生成标签数据
由于 Llama 31 405B 是 Llama 31 系列中最强大的模型,并且具备最先进的数学和一般知识能力,我们通过 SageMaker JumpStart 或 Amazon Bedrock 对 AQUARAT 数据集中的问题进行直接推理。这帮助我们生成所需的答案,以微调更小的 Llama 3 8B 模型。从本质上讲,我们将 Llama 31 405B 用作生成数据集标签的人工替代品。以下是 405B 模型的一些推理输出示例:
输入:ltbeginoftextgtltstartheaderidgtuserltendheaderidgt长 7 英尺 9 英寸的木板被分成 3 个相等的部分。每个部分的长度是多少?lteotidgtltstartheaderidgtassistantltendheaderidgt
输出:这是一个简单的问题!让我们分解这个问题:木板长度为 7 英尺 9 英寸。我们可以只将其转换为英寸:7 英尺 = 7 12 = 84 英寸因为每英尺有 12 英寸。加上 9 英寸:84 英寸 9 英寸 = 93 英寸。现在,木板分成 3 个相等的部分,因此我们需要将总长度93 英寸除以 3:93 英寸 3 = 31 英寸。所以每个部分为 31 英寸长。
我们可以明显看到 405B 模型的答案在逻辑和数学上是正确的,我们可以将该答案替代人工标签用于微调目的。我们为大约 2000 个 AQUARAT 数据集的问题连接了 405B 模型的答案,形成我们的训练数据集。我们的测试数据集来自约 4000 更多问题的提取答案。
训练数据构建为 JSON 对象如下:
{instruction 一场集市的入场费为 5,18 岁以下的人员,超过者需多支付 20。每次游乐设施的费用为 050。假设乔和她 6 岁的双胞胎兄弟一起去,他们每人各自玩了 3 次游乐设施。乔在集市中最终花费了多少钱? response 两个兄弟的入场费为 5 x 2 = 10 美元。乔的入场费为 5 x 12 = 6 美元。所以总入场费为 10 6 = 16 美元。游乐设施的费用为 3 x 05 x 3 = 45 美元。所以总费用为 16 45 = 205 美元。答案是 205。}
{instruction 约翰发现 15 个数字的平均值为 40。如果每个数字都增加 10,则平均值是多少? response 15 个数字的平均值是 40。所以 15 个数字的总和是 15 x 40 = 600。如果每个数字都增加 10,则总和变为 600 15 x 10 = 600 150 = 750。新数字的平均值是 750 / 15 = 50。n#### 50}
{instruction 有一个人以每小时 20 公里的速度旅行,达到目的地需 25 小时,那么距离是多少 response 简单的问题!nn让我们使用公式:nn距离 = 速度 时间nn给定:n速度 (v) = 20 km/hrn时间 (t) = 25 小时nn代入数值,我们得到:nn距离 = 20 km/hr 25 hrn= 50 kmnn所以,这个人旅行的距离为 50 km。}
指令和响应数据集随后用于通过在 SageMaker JumpStart 中微调 Llama 3 8B 模型进行蒸馏。
您可以通过 SageMaker Jumpstart 模型卡部署 Llama 31 模型。除了可以部署 Llama 31 模型,您还可以使用“训练”选项卡微调这些模型,该选项位于部署按钮旁边。
使用生成的标签微调 Llama 3 8B 模型
有关微调此模型的说明,请参阅 在 Amazon SageMaker JumpStart 上微调 Code Llama。我们使用 g512xlarge 实例,采用指令微调选项进行五轮训练,并观察到训练集和测试集的损失函数均有所改善。
完成微调后,我们在 g512xlarge 实例上使用 SageMaker JumpStart 部署微调后的模型进行推理根据您的吞吐量和延迟要求,您可以在任何其他支持的实例上进行部署。请参阅 Meta 的终用户许可协议EULA,了解在任何用例中使用合成微调模型的要求。
随后,我们对 AQUARAT 数据集中的另外 1000 个未见问题进行了推理。下表展示了部分查询的比较结果。
查询答案微调前的 Llama 3 8B 响应微调后的 Llama 3 8B 响应提姆有 350 磅水泥,分在 100、50 和 25 磅的袋子里。他各类袋子的数量相同。那么,提姆一共有多少袋水泥?6我们知道有 3 种袋子。100 磅、50 磅和 25 磅。他们的数量相同。所以,若 x 为每种袋子的数量,那么您知道 100x 50x 25x = 350。这是因为每种袋子都有 x 个,而第一种袋子每袋 100 磅、第二种袋子 50 磅、第三种袋子 25 磅。175x = 350。因此,若我们将两边都除以 175,则 x = 2。答案是 2 袋 每种。假设提姆有 X 个 100 磅的袋子,X 个 50 磅的袋子,以及 X 个 25 磅的袋子。他一共有 100X 50X 25X = 175X 磅水泥。因为他总共拥有 350 磅,因此我们知道 175X = 350,所以 X=2。这意味着他每种类型有 2 袋,所以总共是 2 2 2 = 6 袋。答案是 6。一件商品的购入价格