使用Amazon SageMaker JumpStart微调Meta Llama 3.1模型以进行生成式AI推理

news2024/11/24 13:08:04

文章目录

  • 使用Amazon SageMaker JumpStart微调Meta Llama 3.1模型以进行生成式AI推理
    • Meta Llama 3.1
    • SageMaker JumpStart
    • SageMaker JumpStart中Meta Llama 3.1模型的微调配置
    • 使用SageMaker JumpStart UI进行无代码微调
    • 使用SageMaker JumpStart SDK进行微调
    • 结论

使用Amazon SageMaker JumpStart微调Meta Llama 3.1模型以进行生成式AI推理

通过Amazon SageMaker JumpStart微调Meta Llama 3.1模型,开发者可以定制这些公开的基础模型(FM)。Meta Llama 3.1系列代表了生成式人工智能(AI)领域的重大进展,提供了一系列功能以创建创新的应用程序。Meta Llama 3.1模型有多种规模,包括80亿、700亿和4050亿参数,适应各种项目需求。

这些模型的突出特点在于其理解和生成文本的能力,具有令人印象深刻的一致性和细腻的表达。凭借高达128,000个标记的上下文长度,Meta Llama 3.1模型能够保持深度的上下文意识,从而轻松处理复杂的语言任务。此外,这些模型经过优化,以实现高效推理,并采用了诸如分组查询注意力(GQA)等技术,提供快速响应能力。

在本文中,演示了如何使用SageMaker JumpStart微调Meta Llama 3.1预训练的文本生成模型。

Meta Llama 3.1

Meta Llama 3.1模型的一大特点是其多语言能力。这些仅限文本的指令调优版本(8B、70B、405B)旨在进行自然语言对话,并且在常见行业基准测试中表现优于许多公开的聊天机器人模型。这使得它们非常适合构建引人入胜的多语言对话体验,能够跨越语言障碍,为用户提供沉浸式互动。

Meta Llama 3.1模型的核心是经过精心优化的自回归变压器架构。模型的调优版本还采用了先进的微调技术,如监督微调(SFT)和人类反馈的强化学习(RLHF),以使模型输出与人类偏好保持一致。这种程度的优化为开发者打开了新的可能性,现在他们可以根据应用程序的独特需求调整这些强大的语言模型。

微调过程允许用户使用新数据调整预训练的Meta Llama 3.1模型的权重,从而提高它们在特定任务上的表现。这涉及将模型训练在针对任务量身定制的数据集上,并更新模型的权重以适应新数据。微调通常可以通过最小的努力带来显著的性能提升,使开发者能够快速满足其应用程序的需求。

SageMaker JumpStart现在支持Meta Llama 3.1模型,开发者可以通过SageMaker JumpStart UI和SDK探索微调Meta Llama 3.1 405B模型的过程。本文演示了如何轻松定制这些模型以满足特定用例,无论是在构建多语言聊天机器人、代码生成助手,还是其他任何生成式AI应用程序。提供了使用SageMaker JumpStart UI进行无代码微调的示例,以及使用SDK进行微调的示例。

SageMaker JumpStart

通过SageMaker JumpStart,机器学习(ML)从业者可以从广泛的公开基础模型中进行选择。可以将基础模型部署到从网络隔离的环境中专用的Amazon SageMaker实例上,并使用SageMaker进行模型训练和部署的定制。

现在,可以通过Amazon SageMaker Studio或通过SageMaker Python SDK编程方式,以几次点击的方式发现并部署Meta Llama 3.1,从而借助SageMaker功能(如Amazon SageMaker Pipelines、Amazon SageMaker Debugger或容器日志)实现模型性能和机器学习操作(MLOps)控制。模型在AWS的安全环境中部署,并在虚拟私有云(VPC)控制之下,提供数据安全。此外,还可以使用SageMaker JumpStart微调Meta Llama 3.1 8B、70B和405B基础和指令变体的文本生成模型。

SageMaker JumpStart中Meta Llama 3.1模型的微调配置

SageMaker JumpStart为Meta Llama 3.1 405B、70B和8B变体提供了以下默认配置的微调,使用了QLoRA技术。

模型ID训练实例输入序列长度训练批次大小自监督训练的类型QLoRA/LoRA
领域适应微调指令微调聊天微调
meta-textgeneration-llama-3-1-405b-instruct-fp8ml.p5.48xlarge8,0008计划中QLoRA
meta-textgeneration-llama-3-1-405b-fp8ml.p5.48xlarge8,0008计划中QLoRA
meta-textgeneration-llama-3-1-70b-instructml.g5.48xlarge2,0008QLoRA (8位)
meta-textgeneration-llama-3-1-70bml.g5.48xlarge2,0008QLoRA (8位)
meta-textgeneration-llama-3-1-8b-instructml.g5.12xlarge2,0004LoRA
meta-textgeneration-llama-3-1-8bml.g5.12xlarge2,0004LoRA

可以使用SageMaker Studio UI或SageMaker Python SDK微调这些模型。将在本文中讨论这两种方法。

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

在SageMaker Studio中,可以通过SageMaker JumpStart访问Meta Llama 3.1模型,点击模型、笔记本和解决方案,如下图所示。

img

如果看不到任何Meta Llama 3.1模型,请通过关闭并重新启动更新SageMaker Studio版本。有关版本更新的更多信息,请参阅关闭并更新Studio经典应用程序。

还可以选择探索所有文本生成模型或在搜索框中搜索llama 3.1,查找其他模型变体。

img

img

选择模型卡后,可以看到模型详细信息,包括是否可以用于部署或微调。此外,还可以配置训练

和验证数据集的位置、部署配置、超参数和微调的安全设置。如果选择微调,可以查看可用的微调选项。然后选择训练,即可在SageMaker ML实例上启动训练作业。

下图显示了Meta Llama 3.1 405B模型的微调页面;不过,可以使用各自的模型页面以类似方式微调8B和70B Llama 3.1文本生成模型。

要微调这些模型,需要提供以下内容:

  • Amazon简单存储服务(Amazon S3)用于训练数据集位置的URI
  • 用于模型训练的超参数
  • Amazon S3用于输出工件位置的URI
  • 训练实例
  • VPC
  • 加密设置
  • 训练作业名称

img

要使用Meta Llama 3.1模型,需要接受最终用户许可协议(EULA)。选择训练时,将显示它,如下图所示。选择我已阅读并接受EULA和AUP以开始微调作业。

img

启动微调训练作业后,可能需要一些时间加载和解压缩压缩的模型工件。这可能需要长达4个小时。模型微调完成后,可以使用SageMaker JumpStart的模型页面部署它。微调完成后,将出现部署微调模型的选项,如下图所示。

img

使用SageMaker JumpStart SDK进行微调

以下示例代码显示了如何在对话数据集上微调Meta Llama 3.1 405B基础模型。为了简化起见,展示了如何在单个ml.p5.48xlarge实例上微调和部署Meta Llama 3.1 405B模型。

让以对话格式加载和处理数据集。本演示使用的示例数据集是OpenAssistant’s TOP-1 Conversation Threads。

from datasets import load_dataset

# 加载数据集
dataset = load_dataset("OpenAssistant/oasst_top1_2023-08-25")

训练数据应以JSON行格式(.jsonl)组织,每一行都是一个表示一组对话的字典。以下代码显示了JSON行文件中的一个示例。微调期间处理数据时使用的聊天模板与Meta Llama 3.1 405B Instruct(Hugging Face)中使用的聊天模板一致。有关如何处理数据集的详细信息,请参阅[GitHub仓库](https://github.com/aws/amazon-sagemaker-examples/blob/default/ generative_ai/sm-jumpstart_foundation_llama_3_1_405b_finetuning.ipynb)中的笔记本。

{'dialog': [
  {'content': '帝国大厦的高度是多少',
   'role': 'user'},
  {'content': '帝国大厦的高度为381米或1250英尺。如果包括天线,总高度为443米或1454英尺',
   'role': 'assistant'},
  {'content': '一些人需要驾驶飞机飞越它,想知道答案。那高度是多少英尺?',
   'role': 'user'},
  {'content': '1454英尺', 'role': 'assistant'}]
}

接下来,调用SageMaker JumpStart SDK来初始化SageMaker训练作业。底层训练脚本使用Hugging Face的SFT Trainer和llama-recipes。要自定义超参数的值,请参阅[GitHub仓库](https://github.com/aws/amazon-sagemaker-examples/blob/default/ generative_ai/sm-jumpstart_foundation_llama_3_1_405b_finetuning.ipynb)。

405B微调模型工件以其原始精度bf16进行微调。经过QLoRA微调后,在bf16训练模型工件上进行了fp8量化,以使其可部署在单个ml.p5.48xlarge实例上。

import os
import boto3
from sagemaker.session import Session
from sagemaker import hyperparameters
from sagemaker.jumpstart.estimator import JumpStartEstimator

model_id = "meta-textgeneration-llama-3-1-405b-fp8"

estimator = JumpStartEstimator(
    model_id=model_id, environment={"accept_eula": "false"} # 手动接受EULA!
)

# 有关其他超参数,请参阅附在本博客中的GitHub笔记本。
estimator.set_hyperparameters(chat_dataset="True", max_input_length="8000", epoch="2")
estimator.fit({"training": <your_S3_bucket_hosting_the_train_data>})

微调完成后,可以将微调模型部署到SageMaker端点:

finetuned_predictor = estimator.deploy()

还可以在SageMaker JumpStart上找到微调其他变体Meta Llama 3.1模型(8B和70B基础和指令)的代码([GitHub仓库](https://github.com/aws/amazon-sagemaker-examples/blob/default/ generative_ai/sm-jumpstart_foundation_llama_3_finetuning.ipynb)),只需替换上面功能表中显示的模型ID。该代码包括数据集准备、在自定义数据集上训练以及部署微调模型。它还演示了使用Dolly数据集子集进行的指令微调,包含来自摘要任务的示例,以及在SEC提交文件上的领域适应微调。

以下是微调和非微调模型的测试输入示例以及响应结果,还有真实的响应。该模型使用OpenAssistant’s TOP-1 Conversation Threads数据集的10,000个示例微调1个周期,上下文长度为8000。其余示例设为测试集,微调过程中未见过。推理参数max_new_tokenstop_p和温度分别设置为256、0.96和0.2。

为了与微调期间输入处理方式一致,输入提示在发送到预训练和微调模型生成输出之前由Meta Llama 3.1 405B Instruct(Hugging Face)的聊天模板处理。因为模型在训练过程中已经看到了聊天模板,所以微调后的405B模型能够生成比预训练模型更高质量的响应。

为模型提供以下输入:

用户:我正在努力成为一名Python/Java开发人员。能否提供一些建议,以帮助我更好地向潜在雇主展示自己和我的技能?如果需要更多澄清,请随时询问我。

以下是真实的响应:

助手:当然,我很乐意帮助!以下是一些问题供开始思考:

作为Python/Java开发人员工作过哪些项目?

对哪种行业或公司类型感兴趣?

是否参与了任何开源项目或对与Python/Java开发相关的在线论坛作出了贡献?

是否活跃在任何社交媒体平台上,如LinkedIn或Twitter,可以在这些平台上展示工作并与行业中的其他人互动?

是否参加了任何会议、聚会或其他联网活动,在这些活动中可以与该领域的其他专业人士建立联系?

回答这些问题可以让更清楚地了解如何向潜在雇主推销自己和技能。

以下是非微调模型的响应:

抱歉,我无法提供有关如何向潜在雇主展示自己或技能的建议。我是一个大型语言模型,我的目的是帮助提供一般知识和信息。我无法浏览互联网或访问任何个人信息。还有什么我可以帮忙的吗? 

从微调模型中获得了以下响应:

当然,以下是一些建议,帮助展示技能并脱颖而出:

1. 建立强大的在线形象:创建一个展示项目、技能和经验的专业网站或作品集。使用GitHub等平台展示代码并参与开源项目。在LinkedIn等专业社交网站上保持活跃,与行业专业人士建立联系并分享成就。

2. 发展个人品牌:定义独特价值主张,并突出与其他开发者的区别。突出优势、专业知识以及拥有的任何特殊技能。制定一个有吸引力的电梯演讲,简洁地传达技能和经验。

3. 展示工作:创建一个包含详细描述贡献的最佳项目的作品集。如果可能,提供现场演示或代码库的链接。这将为潜在雇主提供一个可感知的例子来展示能力。

4. 参与开源项目:参与开源项目展示了与他人合作并为开发社区做出贡献的能力。这也是展示技能并在行业中获得认可的机会。

5. 参加行业活动和会议:网络在技术行业中至关重要。参加会议、聚会和研讨会,与领域的专业人士建立联系。

观察到微调后的模型表现更好,因为模型暴露于更多相关数据,因此在知识和格式上能够更好地适应。

清理

可以在使用后删除端点以节省成本。

结论

在本文中,讨论了使用SageMaker JumpStart微调Meta Llama 3.1模型。展示了如何使用SageMaker Studio中的SageMaker JumpStart UI或SageMaker Python SDK微调和部署这些模型。还讨论了微调技术、实例类型和支持的超参数。此外,概述了基于进行的各种测试的优化训练建议。从这些结果可以看出,微调在摘要生成方面优于未微调的模型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2101107.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电商数据整合新篇章:京东商品详情API返回值应用实践

电商数据整合在当今商业环境中具有重要地位&#xff0c;API&#xff08;应用程序编程接口&#xff09;提供了高效收集、整合和分析数据的途径。以京东商品详情API为例&#xff0c;通过其返回值&#xff0c;电商企业可以构建更精准的营销策略、优化产品以及提升用户体验。以下是…

实例分割【YOLOv8版】

参考文档 Segment - Ultralytics YOLO Docs​docs.ultralytics.com/tasks/segment/ 何为实例分割&#xff1f; 实例分割比目标检测更进一步&#xff0c;涉及识别图像中的各个对象并将它们与图像的其余部分分割开来。 实例分割模型的输出是一组用于勾勒图像中每个对象的掩码…

回溯法-图的m着色问题

图的 m 着色问题 问题描述 给定一个无向连通图 ( G (V, E) ) 和 ( m ) 种颜色&#xff0c;我们的任务是为图 ( G ) 的每个顶点着色&#xff0c;使得相邻的顶点颜色不同。如果存在这样的着色方案&#xff0c;我们称之为图 ( G ) 的 ( m ) 可着色问题。 算法思路 初始化&…

Sentence-BERT实现文本匹配【回归目标函数】

引言 上篇文章我们通过Sentence-Bert提出的分类目标函数来训练句子嵌入模型&#xff0c;本文同样基于Sentence-Bert的架构&#xff0c;但改用回归目标函数。 架构 如上图&#xff0c;计算两个句嵌入 u \pmb u u和 v \pmb v v​之间的余弦相似度&#xff0c;然后可以使用均方误…

如何通过住宅代理优化SERP表现:提升SEO排名的实用指南

引言 什么是SERP&#xff1f;包含哪些内容&#xff1f; 为什么SERP对SEO至关重要&#xff1f; 如何优化SERP表现&#xff1f; 总结 引言 在当今竞争激烈的数字营销环境中&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;已成为企业提升在线可见性和吸引有机流量的关键…

matlab2024a/2023/2022/2020/matlab2019 如何plot画局部放大图(已解决)

matlab 2024&#xff1b;matlab 2023&#xff1b;matlab 2022&#xff1b;matlab 2021&#xff1b;matlab 2020&#xff1b;matlab 2019 matlab 2017一下的 使用magnify.m 进行局部放大图操作是没有问题的。 新版本 采用magnify.m 很难操作。 为什么要局部放大 局部方…

【王树森】Few-Shot Learning (3/3):Pretraining + Fine Tuning(个人向笔记)

Preliminary Few-Shot Learning 很简单&#xff0c;但是却能达到比较高的准确度&#xff0c;相反一些复杂的模型反而不能达到很高的准确率 1. Cosine Similarity 余弦相似度可以衡量两个向量的相似度 假设两个向量的长度都是1&#xff1a;那么它们余弦相似度的计算方法如下…

HarmonyOS开发实战( Beta5版)线程间通信场景最佳实践

简介 在应用开发中&#xff0c;经常会需要处理一些耗时的任务&#xff0c;如果全部放在主线程中执行就会导致阻塞&#xff0c;从而引起卡顿或者掉帧现象&#xff0c;降低用户体验&#xff0c;此时就可以将这些耗时操作放到子线程中处理。通常情况下&#xff0c;子线程可以独立…

bcftools报错|The sequence “chr1“ not defined in the header: chr1.recode.vcf

1、报错信息 The sequence "chr1" not defined in the header: chr1.recode.vcf (Quick workaround: index the file.) 所使用的命令&#xff0c;目的是想合并所提取的特定染色体。 bcftools concat -O v / -o varscan.indel_merged.vcf chr1.recode.vcf chr2.reco…

超好用的图纸加密软件排行榜 | 2024图纸加密软件的七款最优选择!

数字化设计日益普及的今天&#xff0c;图纸作为设计与工程的核心载体&#xff0c;其安全性成为了企业和设计师们最为关注的焦点之一。 面对日益复杂的数据泄露风险&#xff0c;如何有效地保护图纸文件的安全呢&#xff1f; 下面&#xff0c;我们就来探讨一下2024图纸加密软件的…

Python的10个文件对比与合并高效策略

文末赠免费精品编程资料~~ 在日常编程或数据分析工作中&#xff0c;经常需要处理多个文件的对比与合并任务。Python因其强大的文件处理能力和丰富的库支持&#xff0c;成为了处理这类任务的理想选择。下面&#xff0c;我们将逐步探索10种高效的文件对比与合并策略&#xff0c;…

OpenGL/GLUT实践:粒子系统,并添加纹理、动态模糊、边界碰撞(电子科技大学信软图形与动画Ⅱ实验)

源码见GitHub&#xff1a;A-UESTCer-s-Code 文章目录 1 运行效果2 实验过程2.1 基本粒子系统2.1.1 定义粒子结构2.1.2 创建粒子并初始化2.1.2.1 创建粒子2.1.2.2 初始化 2.1.3 粒子状态更新与绘制2.1.3.1 绘制2.1.3.2 更新 2.1.4 实现效果 2.2 添加纹理2.2.1 纹理添加2.2.2 渲染…

PostgreSQL + PostGIS:空间数据存储及管理解决方案

在数据库领域&#xff0c;PostgreSQL 已成为最强大、最通用的选项之一。它管理大量数据的能力、对 SQL 标准的遵守以及可扩展的架构使其受到学术界和工业界的喜爱。然而&#xff0c;真正让 PostgreSQL 脱颖而出的原因之一是它与PostGIS的集成&#xff0c;这是一个允许您有效处理…

第七课,条件表达式与初识分支判断

一&#xff0c;什么是判断 判断&#xff0c;就是在做某件事前&#xff0c;先问问满不满足条件。 进行逻辑判断&#xff0c;是生活中常见的行为。 “今天出门你要带伞吗&#xff1f;” “那得看天气怎么样&#xff0c;如果下雨或者太阳太大就带伞&#xff0c;否则就不带。”…

内存卡乱码问题解析恢复方案

一、内存卡乱码现象探析 在数字化时代&#xff0c;内存卡作为便携式数据存储设备&#xff0c;广泛应用于手机、相机、行车记录仪等多种电子设备中。然而&#xff0c;不少用户在使用过程中会遇到内存卡乱码的问题&#xff0c;即原本有序存储的文件突然变得无法识别&#xff0c;…

【前端面试】设计循环双端队列javascript

题目 https://leetcode.cn/problems/design-circular-deque/description/ 存储循环队列的向量空间是循环的,用通俗的话来讲,就是我们在做next或者prev操作时,不会发生溢出 取模、或者直接判断是否为0/size返回一个值。 数组实现 用函数来实现一个类,定义容量、头尾指针…

青远生态为云南林业规划院定制开发的自然保护地规划智能编制系统顺利通过验收

8月30日&#xff0c;青远生态为云南省林业调查规划院开发的自然保护地规划智能编制系统顺利通过验收。该系统具有智能推荐规划内容、自动生成投资估算表、智能编制规划报告等功能&#xff0c;集合了拉丁名填充、表格制作等丰富实用的工具&#xff0c;显著提升了规划工作的效率和…

电力系统有滤波器还需要装电抗器吗

在电力系统中&#xff0c;滤波器和电抗器各有不同的功能&#xff0c;尽管它们都能改善电力质量。是否需要同时安装滤波器和电抗器&#xff0c;取决于系统的具体需求和现状。以下是一些考虑因素&#xff1a; 1、滤波器的功能&#xff1a; 谐波滤波&#xff1a;滤波器主要用于抑…

基于vue框架的超市会员管理系统设计与实现xeb8c(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;会员,商品分类,商品信息,订单信息,积分等级,礼品信息,礼品兑换 开题报告内容 基于Vue框架的超市会员管理系统设计与实现开题报告 一、研究背景与意义 随着消费者对个性化服务和优惠活动需求的增加&#xff0c;超市会员管理成为提升顾…

Docker安装及验证,小白必备

Docker安装 本教程以centos系统为例 1、Docker安装前准备工作 切换国内源 cp -a /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak #备份设置为华为云的yum wget -O /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository…