大模型微调之 在亚马逊AWS上实战LlaMA案例(三)

news2025/1/16 21:15:58

大模型微调之 在亚马逊AWS上实战LlaMA案例(三)
在这里插入图片描述

使用 QLoRA 增强语言模型:Amazon SageMaker 上 LLaMA 2 的高效微调

语言模型在自然语言处理任务中发挥着关键作用,但训练和微调大型模型可能会占用大量内存且耗时。在本文中,将深入研究一种在 Amazon SageMaker 上使用 QLoRA(量化感知低阶适配器调优)来微调语言模型的方法。具体来说,将集中精力微调 LLaMA 2-70B,这是 LLaMA 语言模型的一个变体,它提供了改进的性能,并支持更大的上下文长度窗口。通过利用 Hugging Face Transformers、Accelerate 和 PEFT,可以在语言任务上取得最先进的结果,同时减少内存需求。

运行以下命令安装必要的库:

!pip install "transformers==4.31.0" "datasets[s3]==2.13.0" sagemaker --upgrade --quiet          

登录 Hugging Face 帐户以访问所需资源

!huggingface-cli login --token YOUR_TOKEN      

如果计划在本地环境中使用 Amazon SageMaker,请确保你拥有具有必要权限的 IAM 角色。

加载和准备数据集📑:
在此示例中, 将使用 Databricks Dolly 数据集,其中包含由 Databricks 员工生成的指令跟踪记录。使用 Hugging Face Datasets 库加载数据集

from datasets import load_dataset  
from random import randrange  
  
# Load dataset from the hub  
dataset = load_dataset("databricks/databricks-dolly-15k", split="train")  
  
print(f"Dataset size: {len(dataset)}")  
print(dataset[randrange(len(dataset))]) 

在这里插入图片描述

在这里插入图片描述

该数据集包括带有说明、上下文和响应的示例。 将使用格式化函数将组件组合成单个提示来格式化这些示例

def format_dolly(sample):  
    instruction = f"### Instruction\n{sample['instruction']}"  
    context = f"### Context\n{sample['context']}" if len(sample["context"]) > 0 else None  
    response = f"### Answer\n{sample['response']}"  
    prompt = "\n\n".join([i for i in [instruction, context, response] if i is not None])  
    return prompt      

将使用 Hugging Face Transformers 库对数据集进行标记和分块,以实现高效训练:

from transformers import AutoTokenizer  
  
model_id = "meta-llama/Llama-2-70b-hf"  
tokenizer = AutoTokenizer.from_pretrained(model_id, use_auth_token=True)  
tokenizer.pad_token = tokenizer.eos_token  

在 Amazon SageMaker 上使用 QLoRA 微调 LLaMA 2-70B:

现在,大家可以深入研究微调过程。将利用 QLoRA(一种高效的微调技术)在 Amazon SageMaker 上训练 LLaMA 2-70B。为了实现这一点, 准备了一个名为 run_clm.py 的训练脚本,它使用 PEFT 实现 QLoRA 技术。

为了创建 SageMaker 训练作业, 将使用 HuggingFace Estimator,它处理端到端训练和部署任务。大家将定义超参数并使用必要的配置初始化估计器


import time  
from sagemaker.huggingface import HuggingFace  
from huggingface_hub import HfFolder  
  
# Define Training Job Name  
job_name = f'huggingface-qlora-{time.strftime("%Y-%m-%d-%H-%M-%S")}'  
role = sagemaker.get_execution_role()  
  
# Define hyperparameters for the training job  
hyperparameters ={  
  'model_id': model_id,  
  'dataset_path': '/opt/ml/input/data/training',  
  'epochs': 3,  
  'per_device_train_batch_size': 2,  
  'lr': 2e-4,  
  'hf_token': HfFolder.get_token(),  
  'merge_weights': True,  
}  
  
# Create the HuggingFace Estimator  
huggingface_estimator = HuggingFace(  
    entry_point='run_clm.py',  
    source_dir='scripts',  
    instance_type='ml.g5.4xlarge',  
    instance_count=1,  
    base_job_name=job_name,  
    role=role,  
    volume_size=300,  
    transformers_version='4.28',  
    pytorch_version='1.9.0',  
    py_version='py3',  
    hyperparameters=hyperparameters,  
    environment={"HUGGINGFACE_HUB_CACHE": "/tmp/.cache"},  
)  
  
# Define a data input dictionary with the uploaded S3 URIs  
data = {'training': training_input_path}  
  
# Start the training job  
huggingface_estimator.fit(data, wait=True)    

这段代码是用于在Amazon Web Services (AWS) 的机器学习服务平台Amazon SageMaker上创建和启动一个Hugging Face模型训练作业的Python脚本。以下是与AWS相关的代码的总体说明:

  1. import time
    导入Python的time模块,用于获取当前的时间,这将用于生成训练作业的名称。

  2. from sagemaker.huggingface import HuggingFace
    sagemaker库中导入HuggingFace类。sagemaker是AWS提供的一个模块,用于与SageMaker服务进行交互。

  3. from huggingface_hub import HfFolder
    huggingface_hub模块导入HfFolder类,该模块用于与Hugging Face模型仓库交互。

  4. job_name = f'huggingface-qlora-{time.strftime("%Y-%m-%d-%H-%M-%S")}'
    创建一个格式化的字符串,用于定义训练作业的名称。名称中包含了当前的日期和时间,确保每次运行时作业名称的唯一性。

  5. role = sagemaker.get_execution_role()
    调用sagemaker模块的get_execution_role()函数来获取当前环境的执行角色。这个IAM角色将被赋予SageMaker训练作业所需的权限。

6-15. hyperparameters = {...}
定义一个字典,包含了训练作业的超参数。这些参数将传递给训练脚本,用于调整模型训练过程。

16-28. huggingface_estimator = HuggingFace(...)
实例化HuggingFace类,创建一个Hugging Face模型训练的估计器对象。该对象包含了训练作业的所有配置信息:

  • entry_point: 训练脚本的文件名。
  • source_dir: 包含训练脚本和相关文件的目录。
  • instance_type: 训练时使用的AWS实例类型。
  • instance_count: 训练时使用的实例数量。
  • base_job_name: 训练作业的基础名称。
  • role: 用于训练作业的IAM角色。
  • volume_size: 实例的EBS卷大小。
  • transformers_version, pytorch_version, py_version: 分别指定了transformers库、PyTorch框架和Python解释器的版本。
  • hyperparameters: 传递给训练脚本的超参数字典。
  • environment: 设置环境变量,这里指定了Hugging Face Hub的缓存路径。

29-30. data = {'training': training_input_path}
定义一个字典,用于指定训练数据的位置。training_input_path应该是一个S3 URI,指向存储在Amazon S3上的训练数据。

  1. huggingface_estimator.fit(data, wait=True)
    调用fit方法启动训练作业。data参数指定了训练数据的位置,wait=True参数表示脚本将等待训练作业完成。

这段代码展示了如何使用AWS的SageMaker服务和Hugging Face的库来训练机器学习模型。它利用了AWS的云基础设施和Hugging Face的预训练模型和工具来执行训练任务。

在 Amazon SageMaker 上部署微调的 LLM 2-70B:

微调过程完成后, 可以在 Amazon SageMaker 上部署微调后的 LLaMA 2-70B 模型进行推理。按着这些次序:

通过创建 HuggingFace 模型类来准备部署模型:

from sagemaker.huggingface import HuggingFaceModel  
  
# Create the HuggingFace Model class  
huggingface_model = HuggingFaceModel(  
    model_data=huggingface_estimator.model_data,  
    role=role,  
    transformers_version='4.28',  
    pytorch_version='1.9.0',  
    py_version='py3',  
)   

这段代码是用于在Amazon Web Services (AWS) 的机器学习服务平台Amazon SageMaker上创建一个Hugging Face模型的Python脚本。以下是与AWS相关的代码的总体说明:

  1. from sagemaker.huggingface import HuggingFaceModel
    sagemaker.huggingface模块导入HuggingFaceModel类。sagemaker是AWS提供的一个模块,用于与SageMaker服务进行交互,而HuggingFaceModel类是用于创建和管理Hugging Face模型对象的。

2-7. huggingface_model = HuggingFaceModel( ... )
实例化HuggingFaceModel类,创建一个Hugging Face模型对象。这个对象包含了加载和部署Hugging Face模型所需的配置信息:

  • model_data: 这是指向模型数据的位置的URI,通常是在Amazon S3上的一个路径。huggingface_estimator.model_data是先前训练过程中生成的模型数据, 是一个指向S3上模型文件位置的URI。
  • role: 这是用于模型的AWS Identity and Access Management (IAM) 角色。此角色需要有权限访问S3上的模型数据以及其他任何需要的AWS资源。
  • transformers_version: 指定了Hugging Face的transformers库的版本,这里是’4.28’。这个版本需要与训练模型时使用的版本相匹配。
  • pytorch_version: 指定了PyTorch框架的版本,这里是’1.9.0’。模型需要与特定版本的PyTorch兼容。
  • py_version: 指定了Python解释器的版本,这里是’py3’,表示使用Python 3。

通过创建HuggingFaceModel对象,你可以在SageMaker上部署Hugging Face模型,以便进行推断(inference)。这个对象可以用于创建SageMaker的Endpoint,从而允许应用程序通过这个端点发送数据并接收模型推断结果。

使用 HuggingFace 模型类将模型部署到 SageMaker 端点:

# Deploy the model to a SageMaker endpoint  
predictor = huggingface_model.deploy(  
    initial_instance_count=1,  
    instance_type='ml.m5.large',  
)      

这段代码是用于在Amazon Web Services (AWS) 的机器学习服务平台Amazon SageMaker上部署一个训练好的Hugging Face模型,并创建一个可用于进行实时预测的端点(endpoint)。以下是与AWS相关的代码的详细说明:

  1. predictor = huggingface_model.deploy( ... )
    调用HuggingFaceModel对象的deploy方法来部署模型。这会创建一个SageMaker端点,该端点可以接收输入数据,使用部署的模型进行推断,并返回预测结果。

  2. initial_instance_count=1
    此参数指定了要使用的初始实例数量。在这个例子中,设置为1意味着将启动一个实例来响应预测请求。根据预测负载的需求,可以调整此值以扩展或缩减实例数量。

  3. instance_type='ml.m5.large'
    此参数指定了用于部署模型的EC2实例的类型。在这个例子中,选择了ml.m5.large,这是SageMaker提供的计算优化型实例之一,适合运行机器学习工作负载。实例类型可以根据模型的计算需求和预算进行选择。

部署完成后,predictor对象将代表SageMaker端点,可以通过它来执行预测。通常,这个端点可以被任何可以发送HTTP请求的客户端访问,使得模型的推断服务可以集成到不同的应用程序中。

此外,部署模型到SageMaker端点还涉及一些成本,因为AWS会根据实例的使用时间和存储的数据量来收费。因此,在部署模型时,需要考虑这些因素以优化成本。

需要注意的是,这段代码假定huggingface_model是之前创建的HuggingFaceModel对象,且已经包含了所有必要的配置信息,如模型数据、IAM角色、依赖库版本等。此外,还需要确保所使用的IAM角色具有创建和操作SageMaker端点所需的权限。

通过发送输入文本和接收预测,利用部署的模型进行推理:

# Perform inference using the deployed model  
input_text = "What is the meaning of life?"  
response = predictor.predict(input_text)  
print(response)      

本文 探索了一种在 Amazon SageMaker 上使用 QLoRA 微调语言模型的有效方法。通过利用 Hugging Face Transformers、Accelerate 和 PEFT 的强大功能, 在降低内存需求的同时提高了性能。使用 QLoRA 微调 LLaMA 2-70B 能够在语言任务上取得最先进的结果,同时减少训练时间和成本💰。体验一下,释放微调大型语言模型的潜力!

大模型技术分享

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

《企业级生成式人工智能LLM大模型技术、算法及案例实战》线上高级研修讲座

模块一:Generative AI 原理本质、技术内核及工程实践周期详解
模块二:工业级 Prompting 技术内幕及端到端的基于LLM 的会议助理实战
模块三:三大 Llama 2 模型详解及实战构建安全可靠的智能对话系统
模块四:生产环境下 GenAI/LLMs 的五大核心问题及构建健壮的应用实战
模块五:大模型应用开发技术:Agentic-based 应用技术及案例实战
模块六:LLM 大模型微调及模型 Quantization 技术及案例实战
模块七:大模型高效微调 PEFT 算法、技术、流程及代码实战进阶
模块八:LLM 模型对齐技术、流程及进行文本Toxicity 分析实战
模块九:构建安全的 GenAI/LLMs 核心技术Red Teaming 解密实战
模块十:构建可信赖的企业私有安全大模型Responsible AI 实战 

Llama3关键技术深度解析与构建Responsible AI、算法及开发落地实战

1、Llama开源模型家族大模型技术、工具和多模态详解:学员将深入了解Meta Llama 3的创新之处,比如其在语言模型技术上的突破,并学习到如何在Llama 3中构建trust and safety AI。他们将详细了解Llama 3的五大技术分支及工具,以及如何在AWS上实战Llama指令微调的案例。
2、解密Llama 3 Foundation Model模型结构特色技术及代码实现:深入了解Llama 3中的各种技术,比如Tiktokenizer、KV Cache、Grouped Multi-Query Attention等。通过项目二逐行剖析Llama 3的源码,加深对技术的理解。
3、解密Llama 3 Foundation Model模型结构核心技术及代码实现:SwiGLU Activation Function、FeedForward Block、Encoder Block等。通过项目三学习Llama 3的推理及Inferencing代码,加强对技术的实践理解。
4、基于LangGraph on Llama 3构建Responsible AI实战体验:通过项目四在Llama 3上实战基于LangGraph的Responsible AI项目。他们将了解到LangGraph的三大核心组件、运行机制和流程步骤,从而加强对Responsible AI的实践能力。
5、Llama模型家族构建技术构建安全可信赖企业级AI应用内幕详解:深入了解构建安全可靠的企业级AI应用所需的关键技术,比如Code Llama、Llama Guard等。项目五实战构建安全可靠的对话智能项目升级版,加强对安全性的实践理解。
6、Llama模型家族Fine-tuning技术与算法实战:学员将学习Fine-tuning技术与算法,比如Supervised Fine-Tuning(SFT)、Reward Model技术、PPO算法、DPO算法等。项目六动手实现PPO及DPO算法,加强对算法的理解和应用能力。
7、Llama模型家族基于AI反馈的强化学习技术解密:深入学习Llama模型家族基于AI反馈的强化学习技术,比如RLAIF和RLHF。项目七实战基于RLAIF的Constitutional AI。
8、Llama 3中的DPO原理、算法、组件及具体实现及算法进阶:学习Llama 3中结合使用PPO和DPO算法,剖析DPO的原理和工作机制,详细解析DPO中的关键算法组件,并通过综合项目八从零开始动手实现和测试DPO算法,同时课程将解密DPO进阶技术Iterative DPO及IPO算法。
9、Llama模型家族Safety设计与实现:在这个模块中,学员将学习Llama模型家族的Safety设计与实现,比如Safety in Pretraining、Safety Fine-Tuning等。构建安全可靠的GenAI/LLMs项目开发。
10、Llama 3构建可信赖的企业私有安全大模型Responsible AI系统:构建可信赖的企业私有安全大模型Responsible AI系统,掌握Llama 3的Constitutional AI、Red Teaming。

解码Sora架构、技术及应用

一、为何Sora通往AGI道路的里程碑?
1,探索从大规模语言模型(LLM)到大规模视觉模型(LVM)的关键转变,揭示其在实现通用人工智能(AGI)中的作用。
2,展示Visual Data和Text Data结合的成功案例,解析Sora在此过程中扮演的关键角色。
3,详细介绍Sora如何依据文本指令生成具有三维一致性(3D consistency)的视频内容。 4,解析Sora如何根据图像或视频生成高保真内容的技术路径。
5,探讨Sora在不同应用场景中的实践价值及其面临的挑战和局限性。

二、解码Sora架构原理
1,DiT (Diffusion Transformer)架构详解
2,DiT是如何帮助Sora实现Consistent、Realistic、Imaginative视频内容的?
3,探讨为何选用Transformer作为Diffusion的核心网络,而非技术如U-Net。
4,DiT的Patchification原理及流程,揭示其在处理视频和图像数据中的重要性。
5,Conditional Diffusion过程详解,及其在内容生成过程中的作用。
三、解码Sora关键技术解密
1,Sora如何利用Transformer和Diffusion技术理解物体间的互动,及其对模拟复杂互动场景的重要性。
2,为何说Space-time patches是Sora技术的核心,及其对视频生成能力的提升作用。
3,Spacetime latent patches详解,探讨其在视频压缩和生成中的关键角色。
4,Sora Simulator如何利用Space-time patches构建digital和physical世界,及其对模拟真实世界变化的能力。
5,Sora如何实现faithfully按照用户输入文本而生成内容,探讨背后的技术与创新。
6,Sora为何依据abstract concept而不是依据具体的pixels进行内容生成,及其对模型生成质量与多样性的影响。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

华为数据之道第二部分导读

目录 导读 第二部分 第4章 面向“业务交易”的信息架构建设 信息架构的四个组件 数据资产目录 数据标准 数据模型 数据分布 信息架构原则:建立企业层面的共同行为准则 信息架构建设核心要素:基于业务对象进行设计和落地 按业务对象进行架构设…

十分钟掌握Java集合之List接口

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一…

Day 28 MySQL的数据备份与恢复

数据备份及恢复 1.概述 ​ 所有备份数据都应放在非数据库本地,而且建议有多份副本 备份: 能够防止由于机械故障以及人为误操作带来的数据丢失,例如将数据库文件保存在了其它地方 冗余: 数据有多份冗余,但不等备份&…

GNU Radio FFT模块窗函数对比

文章目录 前言一、grc 图二、窗函数及对应的运行结果1、矩形窗2、汉明窗3、汉宁窗4、黑曼窗5、黑曼-哈里斯窗6、凯泽窗7、巴特利特窗8、平顶窗 前言 GNU Radio 中 FFT 模块的窗函数包括以下几种:矩形窗(Rectangular Window)、汉明窗&#xf…

分割模型Maskformer系列

maskformer:Per-Pixel Classification is Not All You Need for Semantic Segmentation 论文地址:https://arxiv.org/pdf/2107.06278 1.概述 传统的语义分割方法通常采用逐像素分类(per-pixel classification),而实…

邦注科技 模具保护器 CCD电子眼 专业工业视觉检测设备

模具保护器是一种用于保护模具的设备,可以在塑料压铸和冲床等加工过程中起到保护模具的作用。以下是关于模具保护器在保护塑料压铸和冲床模具方面的应用: 塑料压铸模具保护器: 防止碰撞:在塑料压铸过程中,模具可能会…

【CSS基础--CSS选择器的常见用法】

CSS选择器的常见用法 1.CSS介绍1.1 基本语法规范1.2 引入样式1.3 规范 2. CSS选择器2.1 标签选择器2.2 类选择器2.3 ID选择器2.4 复合选择器 1.CSS介绍 CSS(Cascading Style Sheet),层叠样式表,由于控制页面的样式。CSS能够对网页…

【已解决】‘pip‘ 不是内部或外部命令问题

😎 作者介绍:我是程序员行者孙,一个热爱分享技术的制能工人。计算机本硕,人工制能研究生。公众号:AI Sun,视频号:AI-行者Sun 🎈 本文专栏:本文收录于《AI实战中的各种bug…

Linux网站服务

1.概念:HTML:超级文本编辑语言 网页:使用HTML,PHP,JAVA语言格式书写的文件。 主页:网页中呈现用户的第一个界面。 网站:多个网页组合而成的一台网站服务器。 URL:统一资源定位符,访问网站的地址。 网站架构:LAMP: LinuxApacheMYSQLPHP(系统服务器程序数据管理…

【JAVA语言-第20话】多线程详细解析(二)——线程安全,非线程安全的集合转换成线程安全

目录 线程安全 1.1 概述 1.2 案例分析 1.3 解决线程安全 1.3.1 synchronized关键字 1.3.1.1 同步代码块 1.3.1.2 同步方法 1.3.2 使用Lock锁 1.3.2.1 概述 代码示例 1.4 线程安全的类 1.4.1 非线程安全集合转换成线程安全集合 线程安全 1.1 概述 指如果有多…

外贸企业邮箱怎么注册?五款外贸企业邮箱注册步骤

专业的公司邮箱不但能提高企业形象,也能保证商业沟通的流畅与信息安全性。本文将详解五种常见的外贸企业邮箱——Zoho Mail公司邮箱、腾讯公司邮箱、阿里公司邮箱、网易公司邮箱以及Gmail公司邮箱的注册流程,协助外贸企业轻松完成邮箱注册,打…

安装Nox夜神模拟器关闭了HyperV后Docker运行不了怎么办?

1.背景 为了模拟真机,尝试安装了Nox夜神模拟器, 安装过程要求关闭Hyper-V。当时只是在程序安装卸载中关闭了系统服务。以为到时勾选上就好了。操作路径:控制面板\所有控制面板项\程序和功能\启用或关闭Windows功能\Hyper-V。 后来卸载掉了夜神…

代码随想录第四十七天|打家劫舍、打家劫舍Ⅱ、打家劫舍Ⅲ

题目链接:. - 力扣(LeetCode) 代码如下: 打家劫舍问题需要注意相邻房子不能偷,因此在偷与不偷的选择上可以归类为: 偷当前(i)的房子,则子问题变为前i-2个房子的偷取金额…

VMware虚拟机提示内存不足

VMware虚拟机,k8s集群搭建内存不足的问题 疑问:我的电脑是8G8G双通道的内存,当我在搭建k8s集群时给master-2G内存,node1-3G内存,node2-3G内存; 当依次打开虚拟机到node2时VM提示“物理内存不足,…

【第14章】spring-mvc之ajax

文章目录 前言一、准备二、单个值1.前端2.后端3. 结果 三、对象1.前端2.后端3. 结果 四、JSON对象1.前端2.后端3. 结果 五、JSON数组1.前端2.后端3. 结果 总结 前言 AJAX(Asynchronous JavaScript and XML)是一种用于创建快速动态网页的技术&#xff0c…

大模型微调实战之强化学习 贝尔曼方程及价值函数(一)

大模型微调实战之强化学习 贝尔曼方程及价值函数 强化学习(RL)是机器学习中一个话题,不仅在人工智能方面。它解决问题的方式与人类类似,我们每天都在学习并在生活中变得更好。 作为一名大模型学习者,当开始深入研究强…

2024蓝桥杯网络安全部分赛题wp

爬虫协议 题目给了提示访问robots.txt 会出三个目录 访问最后一个 点进去就flag{22560c15-577c-4c8b-9944-815473758bad} packet 下载附件,这个是流量包 放wireshark流量分析 搜http协议 发现有cat flag命令,直接看他返回的流量 最后base64解码即可…

Web服务器和Tomcat

Web介绍 对于http协议操作进行封装、简化web程序开发 部署web项目,对外提供上网信息浏览 Tomcat介绍 一个轻量级的web服务器 也称为web容器 Tomcat的文件夹介绍 下载地址:Apache Tomcat - Apache Tomcat 9 Software Downloads 安装:直…

嵌入式数据库SQLite 3配置使用详细笔记教程

0、惨痛教训 随着管理开发的项目体积越来越庞大,产品系统涉及的数据量也越来越多,并且伴随着项目不久就要交付给甲方了。如果项目的数据信息没有被妥善管理,后期设备的运行状态、操作状况等数据流信息不能被溯源,当出现了一些特殊…

typescript的入门到吐槽:看了typescript,发现前端真的卷,

typescript TypeScript 是一种由微软开发的自由和开源的编程语言。它是 JavaScript 的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。 TypeScript 与 JavaScript 的区别 其实就是对JavaScript的封装,把一个弱类型语言封…