【优质书籍推荐】LoRA微调的技巧和方法

  大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的知识进行总结与归纳,不仅形成深入且独到的理解,而且能够帮助新手快速入门。今天给大家带来的文章是LoRA微调的技巧和方法,希望能对同学们有所帮助。

文章目录

  • 1. 定义
  • 2. LoRA微调参数
  • 3. 书籍推荐
    • 3.1 《从零开始大模型开发与微调:基于PyTorch与ChatGLM》
    • 3.2 内容介绍
    • 3.3 适合人群
    • 3.4 粉丝福利
    • 3.5 自主购买

1. 定义

  对于大语言模型而言,全量微调的代价是比较高的,需要数百GB的显存来训练具有几B参数的模型。为了解决资源不足的问题,大佬们提出了一种新的方法:低秩适应(Low-Rank Adaptation)。与微调OPT-175B相比,LoRA可以将可训练参数数量减少一万倍,并且GPU显存降低3倍以上。详细内容可参考论文《LoRA: Low-Rank Adaptation of Large Language Models》和HuggingFace PEFT博客文章《Parameter-Efficient Fine-Tuning of Billion-Scale Models on Low-Resource Hardware》。

在这里插入图片描述

  LoRA是一种常用的高效微调的训练方法(PEFT),旨在加快大型语言模型的训练过程,同时减少显存的使用。通过引入更新矩阵对现有权重进行操作,LoRA专注于训练新添加的权重。LoRA方法具有以下的几大优点:

  • 保留预训练权重:LoRA保持先前训练权重的冻结状态,最小化了灾难性遗忘的风险。这确保了模型在适应新数据时保留其现有知识。
  • 已训练权重的可移植性:与原始模型相比,LoRA中使用的秩分解矩阵参数明显较少。这个特点使得经过训练的LoRA权重可以轻松地转移到其他环境中,使它们非常易于移植。
  • 与注意力层集成:通常将LoRA矩阵合并到原始模型的注意力层中。此外,自适应缩放参数允许控制模型对新培训数据调整程度。
  • 显存效率:LoRA改进后具有更高效利用显存资源能力,在不到本机微调所需计算量3倍情况下运行微调任务成为可能。

  对于普通用户来说,依然很难满足1/3的显存需求。幸运的是,大佬们又发明了一种新的LoRA训练方法:量化低秩适应(QLoRA)。它利用bitsandbytes库对语言模型进行即时和近无损量化,并将其应用于LoRA训练过程中。这导致显存需求急剧下降,可以在2个3090卡上微调70B的模型。相比之下,要微调同等规模的模型通常需要超过16个A100-80GB GPU,对应的成本将非常巨大。详细内容可参考论文QLoRA: Efficient Finetuning of Quantized LLMs。

在这里插入图片描述

2. LoRA微调参数

  首先最关键的参数为:低秩矩阵对应的秩(rank)。为了减少显存,对权重矩阵应用了低秩分解。在LoRA论文中,建议rank设置不小于8(r = 8)。请记住,较高的rank会导致更好的结果,但需要更多的显存。数据集的数量和复杂度越高,所需的rank就越高。

  除此之外,另外需要设置的参数即为LoRA微调对应的网络层。最基本的训练对象是查询向量(例如q_proj)和值向量(例如v_proj)投影矩阵。不同模型对应的网络层如下所示:

ModelModel sizeDefault module
Baichuan7B/13BW_packbaichuan
Baichuan227B/13BW_packbaichuan2
BLOOM560M/1.1B/1.7B/3B/7.1B/176Bquery_key_value
BLOOMZ560M/1.1B/1.7B/3B/7.1B/176Bquery_key_value
ChatGLM36Bquery_key_value
Falcon7B/40B/180Bquery_key_value
InternLM7B/20Bq_proj,v_proj
LLaMA7B/13B/33B/65Bq_proj,v_proj
LLaMA-27B/13B/70Bq_proj,v_proj
Mistral7Bq_proj,v_proj
Mixtral8x7Bq_proj,v_proj
Phi1.5/21.3B/2.7BWqkv-Q
Qwen1.8B/7B/14B/72Bc_attn
XVERSE7B/13B/65Bq_proj,v_proj
Yi6B/34Bq_proj,v_proj

3. 书籍推荐

  大模型是深度学习自然语言处理皇冠上的一颗明珠,也是当前AI和NLP研究与产业中最重要的方向之一。本书使用PyTorch 2.0作为学习大模型的基本框架,以ChatGLM为例详细讲解大模型的基本理论、算法、程序实现、应用实战以及微调技术,为读者揭示大模型开发技术。

3.1 《从零开始大模型开发与微调:基于PyTorch与ChatGLM》

在这里插入图片描述

3.2 内容介绍

  大模型是深度学习自然语言处理皇冠上的一颗明珠,也是当前AI和NLP研究与产业中最重要的方向之一。本书使用PyTorch 2.0作为学习大模型的基本框架,以ChatGLM为例详细讲解大模型的基本理论、算法、程序实现、应用实战以及微调技术,为读者揭示大模型开发技术。本书配套示例源代码、PPT课件。

  《从零开始大模型开发与微调:基于PyTorch与ChatGLM》共18章,内容包括人工智能与大模型、PyTorch 2.0深度学习环境搭建、从零开始学习PyTorch 2.0、深度学习基础算法详解、基于PyTorch卷积层的MNIST分类实战、PyTorch数据处理与模型展示、ResNet实战、有趣的词嵌入、基于PyTorch循环神经网络的中文情感分类实战、自然语言处理的编码器、预训练模型BERT、自然语言处理的解码器、强化学习实战、只具有解码器的GPT-2模型、实战训练自己的ChatGPT、开源大模型ChatGLM使用详解、ChatGLM高级定制化应用实战、对ChatGLM进行高级微调。

from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True, device='cuda')
model = model.eval()
response, history = model.chat(tokenizer, "你好", history=[])
print(response)

3.3 适合人群

  《从零开始大模型开发与微调:基于PyTorch与ChatGLM》适合PyTorch深度学习初学者、大模型开发初学者、大模型开发人员学习,也适合高等院校人工智能、智能科学与技术、数据科学与大数据技术、计算机科学与技术等专业的师生作为教学参考书。

3.4 粉丝福利

  • 本次送书两本
  • 活动时间:截止到2023-12-27 9:00
  • 参与方式:关注博主、并在此文章下面点赞、收藏并任意评论。
  • 一本送给所有粉丝抽奖,另外一本送给购买专栏的同学们,购买专栏并且没有送过书的同学们可私信联系,先到先得,仅限一本

3.5 自主购买

  小伙伴也可以访问链接进行自主购买哦~

  直达京东购买链接🔗:《从零开始大模型开发与微调:基于PyTorch与ChatGLM》

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

论文推荐:大型语言模型能自我解释吗?

这篇论文的研究主要贡献是对LLM生成解释的优缺点进行了调查。详细介绍了两种方法,一种是做出预测,然后解释它,另一种是产生解释,然后用它来做出预测。 最近的研究发现,即使LLM是在特定数据上训练的,也不能认…

【华为数据之道学习笔记】6-4 打造数据供应的“三个1”

数据服务改变了传统的数据集成方式,所有数据都通过服务对外提供,用户不再直接集成数据,而是通过服务获取。因此,数据服务应该拉动数据供应链条的各个节点,以方便用户能准确地获取数据为重要目标。 数据供应到消费的完整…

【C语言】打印内存数据

C语言,用函数封装:16进制打印unsigned char *p指向的内存,长度为int l。16个字节,换一次行。16个字节用一个字符串缓存,一次打印。 以下是一个使用函数封装的C语言代码,用于以16进制格式打印unsigned char …

汽车级EEPROM 存储器 M24C64-DRMN3TP/K是电可擦除可编程只读存储器?它的功能特性有哪些?

M24C64-DRMN3TP/K是一款64 Kbit串行EEPROM汽车级设备,工作温度高达125C。符合汽车标准AEC-Q100 1级规定的极高可靠性。 该设备可通过一个高达1MHz的简单串行I2C兼容接口访问。 存储器阵列基于先进的真EEPROM技术(电可擦除可编程存储器)。M2…

java String转asc码,然后ascII再转四位的16进制数。

理论知识补充: char是Java中的保留字,表示一种数据类型。与别的语言不同的是,char在Java中是16位的,因为Java用的是Unicode编码。不过8位的ASCII码包含在Unicode编码中,其值对应十进制的表示范围是0~127。 char是Java八…

React学习计划-React16--React基础(五)脚手架创建项目、todoList案例、配置代理、消息订阅与发布

一、使用脚手架create-react-app创建项目 react脚手架 xxx脚手架:用来帮助程序员快速创建一个基于xxx库的模板项目 包含了所有需要的配置(语法检查、jsx编译、devServe…)下载好了所有相关的依赖可以直接运行一个简单的效果 react提供了一个…

Ignite数据流处理

数据流处理 #1.概述 Ignite提供了一个数据流API,可用于将大量连续的数据流注入Ignite集群,数据流API支持容错和线性扩展,并为注入Ignite的数据提供了至少一次保证,这意味着每个条目至少会被处理一次。 数据通过与缓存关联的数据…

Midjourney V6来袭,是放大招还是挤牙膏?

赶在2023年的尾巴,Midjourney终于迎来升级,目前处于测试阶段,那么它的升级之处在哪里,与之前版本提升又有多大,跟着我,带你一起看MidjourneyV6. 图像质量更上一层楼 对于AI绘画工具而言,目前最…

Win7如何修改MAC地址

MAC地址,又叫做物理地址、硬件地址,是用来定义网络设备的位置,一般情况下,MAC地址在网卡中是固定的,但不排除有人手动去修改自己的MAC地址。win7如何修改MAC地址?其实修改MAC地址的方法很简单,可以通过硬件…

DSC2803X,DSP Pin2Pin with Ti Parts

一,产品特性 高能效 32 位处理器(H28x 内核)  主频 120MHz(周期 8.33ns)  哈佛(Harvard) 总线架构  硬件乘法/除法单元  4/6 通道高速 DMA  快速中断响应和处理  统一存储器编程模型  高效代码(使用 C/C和汇编语言&…

通过 Higress Wasm 插件 3 倍性能实现 Spring-cloud-gateway 功能

作者:韦鑫,Higress Committer,来自南京航空航天大学分布式系统实验室 导读:本文将和大家一同回顾 Spring Cloud Gateway 是如何满足 HTTP 请求/响应转换需求场景的,并为大家介绍在这种场景下使用 Higress 云原生网关的…

2024应届大学生,为云计算高薪岗位做好准备了吗?

云计算正处于快速发展阶段,对于企业和个人来说,云计算提供了方便、灵活和智能的解决方案,对各行各业都有着重要的影响和推动作用。 随着云计算新市场、新业务、新应用的不断出现,人力需求迅猛。国家相继出台一系列政策大力扶持云…

集群部署1.27.4(高可用)

一、简介 二、环境准备 HostsIPmaster01172.16.100.21master02172.16.100.22master03172.16.100.23node01172.16.100.11node02172.16.100.12 VIP:172.16.100.21 Service虚拟IP地址段:10.0.0.0/24 kubernetes内网地址:10.244.0.0/16 三、初…

2. 行为模式 - 命令模式

亦称: 动作、事务、Action、Transaction、Command 意图 命令模式是一种行为设计模式, 它可将请求转换为一个包含与请求相关的所有信息的独立对象。 该转换让你能根据不同的请求将方法参数化、 延迟请求执行或将其放入队列中, 且能实现可撤销…

27.Java程序设计-基于Springboot的在线考试系统小程序设计与实现

1. 引言 随着数字化教育的发展,在线考试系统成为教育领域的一项重要工具。本论文旨在介绍一个基于Spring Boot框架的在线考试系统小程序的设计与实现。在线考试系统的开发旨在提高考试的效率,简化管理流程,并提供更好的用户体验。 2. 系统设…

高级数据结构 <二叉搜索树>

本文已收录至《数据结构(C/C语言)》专栏! 作者:ARMCSKGT 目录 前言正文二叉搜索树的概念二叉搜索树的基本功能实现二叉搜索树的基本框架插入节点删除节点查找函数中序遍历函数析构函数和销毁函数(后序遍历销毁)拷贝构造和赋值重载(前序遍历创建)其他函数…

爬虫概念简述

爬虫简述 ⼀、什么是爬虫?二、爬虫有什么用?三、爬虫的分类四、所谓的“爬虫学的好,牢饭吃到饱 !”五、爬虫的大致流程 ⼀、什么是爬虫? ​ 简言之,爬虫可以帮助我们把网站上的信息快速提取并保存下来。 ​ 我们可以把互联网比…

仅操作一台设备,如何实现本地访问另一个相同网段的私网?

正文共:1034 字 8 图,预估阅读时间:4 分钟 书接上文(地址重叠时,用户如何通过NAT访问对端IP网络?),我们已经通过两台设备的组合配置实现了通过IP地址进行访问。但一般场景中&#xf…

浏览器原理篇—渲染阻塞

渲染阻塞 1.DOM 的解析 html 文档 边加载边解析 的;网络进程和渲染进程之间会建立一个共享数据的管道,网络进程接收到数据实时传递给渲染进程,渲染进程的 HTML 解析器,它会动态接收字节流,并将其解析为 DOM 2.字节流…

SpringMVC系列之技术点定向爆破二

SpringMVC的运行流程 客户端发送请求 tomcat接收对应的请求 SpringMVC的核心调度器DispatcherServlet接收到所有请求 请求地址与RequestMapping注解进行匹配,定位到具体的类和具体的处理方法(封装在Handler中) 核心调度器找到Handler后交…