你应该懂得AI大模型(十二)之 QLoRA
一、显存和算力
1. 基本概念
显存 (Memory)
定义:GPU 用于临时存储数据的高速内存,类似于计算机的 RAM。
作用:
- 存储模型权重、中间激活值、梯度和优化器状态。
- 数据在显存与 GPU 核心之间快速传输以支持计算。
衡量单位:GB (如 8GB、24GB)。
算力 (Computational Power)
定义:GPU 执行计算操作的能力,由 GPU 核心数量和频率决定。
作用:
- 执行矩阵乘法、卷积等计算密集型操作。
衡量单位:
- TFLOPS (万亿次浮点运算 / 秒),如 NVIDIA A100 的 312 TFLOPS (FP16)。
- CUDA 核心数或 Tensor 核心数。
2. 关键区别
| 维度 | 显存 | 算力 |
|---|---|---|
| 瓶颈表现 | 训练时出现 "CUDA out of memory" 错误 | 训练速度慢,GPU 利用率低 |
| 优化方式 | 量化模型、梯度检查点、减少 batch size | 使用更快的 GPU、优化算法复杂度 |
| 典型场景 | 大模型微调(如 13B 参数模型) | 高分辨率图像处理、大 batch 训练 |
| 资源竞争 | 模型权重 vs 激活值 vs 优化器状态 | 计算密集型操作(如矩阵乘法) |
3. 相互关系
显存决定模型规模
模型越大(参数越多),所需显存越多。
- 例如:7B 参数模型在 FP16 精度下需约 14GB 显存存储权重。
量化技术(如 QLoRA 的 4-bit 量化)通过降低精度减少显存需求。
算力决定计算速度
算力越高,单位时间内处理的数据量越大。
- 例如:A100 的算力约为 RTX 3090 的 3 倍,相同任务速度快约 3 倍。
并行计算(如 Data Parallelism)依赖算力提升效率。
显存与算力的平衡
- 小显存 + 高算力:适合小模型高速推理(如手机端 AI)。
- 大显存 + 低算力:适合训练大模型但速度较慢。
- 大显存 + 高算力:理想配置(如 A100、H100),支持大规模训练和推理。
4. 实际应用中的影响
训练阶段
显存不足:
- 无法加载完整模型或 batch,需使用梯度累积、模型并行等技术。
算力不足:
- 训练时间过长,即使显存充足也无法充分利用数据。
推理阶段
显存限制部署规模:
- 边缘设备(如车载 GPU)需压缩模型以适配有限显存。
算力影响响应速度:
- 实时应用(如自动驾驶)需高算力 GPU 保证低延迟。
5. 优化策略
显存优化
- 量化:FP16 → INT8 → 4-bit/2-bit。
- 梯度检查点:牺牲计算速度换取显存。
- 模型架构优化:使用参数效率更高的模型(如 LLaMA 比 GPT-3 参数量少 50%)。
算力优化
- 算法优化:使用 FlashAttention、TensorRT 等加速库。
- 硬件升级:从 RTX 3090 (35 TFLOPS) 升级到 A100 (312 TFLOPS)。
- 并行策略:数据并行、张量并行或流水线并行。
6. 常见误区
"显存越大越好":
- 若算力不足,大显存无法充分发挥作用(如训练小模型时)。
"算力高就能训练大模型":
- 显存不足时,高算力 GPU 仍无法加载大模型。
"量化只影响精度":
- 4-bit 量化不仅减少显存,还能加速计算(如 A100 的 4-bit Tensor Core)。
总结
显存是模型运行的 "空间",决定了你能处理多大的模型。
算力是模型运行的 "速度",决定了你能多快完成计算。
理想的配置需要两者平衡,例如:
- 微调 7B 模型:至少 16GB 显存 + 中等算力(如 RTX 4090)。
- 训练 70B 模型:80GB 显存 + 高算力(如 A100/A800)。
在资源有限时,需根据任务需求优先优化瓶颈资源(显存或算力)。
二、部署量化(打包量化)与训练量化
| 维度 | 训练量化 | 部署量化(打包量化) |
|---|---|---|
| 目标 | 在训练过程中减少显存和计算量 | 在推理时减小模型体积、加速推理速度 |
| 应用阶段 | 模型训练阶段 | 模型部署阶段 |
| 技术重点 | 保持训练稳定性和模型精度 | 最大化推理效率,最小化精度损失 |
| 典型场景 | QLoRA 微调大模型 | 在手机、边缘设备上部署模型 或者 需要极致推理速度(如实时对话系统)。 |
| 精度损失处理 | 通过技术补偿(如双重量化)减少损失 | 通过校准或微调恢复精度 |
部署量化会节约算例但不会节约显存,因为模型推理中间态对显存的占用不会因为量化而变小。但是如果我们想在24G显存的服务器上训练一个8B的模型通过训练量化就可以让开启训练。
训练量化是以量化方式训练模型,核心是在低精度下保持训练稳定性(一般情况下我们建议使用8位QLoRA训练,这时的精度损失是很小的)。
部署量化是对训练好的模型进行压缩加速,核心是在最小精度损失下提升推理效率。
两者可结合使用:例如用 QLoRA 训练,再用 GPTQ 进一步量化部署。选择哪种方法取决于你的具体需求:
- 需要高精度微调 → 训练量化(如 QLoRA)
- 需要极致部署效率 → 部署量化(如 GPTQ+llama.cpp)
三、QLoRA
QLoRA 是 2023 年提出的一种参数高效微调技术,通过将大语言模型量化与 LoRA 低秩适应相结合,大幅降低了微调所需的显存,让普通人也能在消费级 GPU 上微调 7B 甚至 70B 规模的大模型。
四、如何使QLoRA训练效果超越LoRA
以LLamaFactory为例,我们在训练时选择QLoRA,那么我们可以在LoRA参数的配置中提升LoRA秩(一般LoRA缩放参数是秩的两倍)。
在相同显存限制下,高秩 QLoRA 可以达到比 LoRA 更高的准确率。QLoRA 的训练时间更长,但性价比更高(例如 r=32 的 QLoRA 用 12GB 显存达到了 LoRA 需要 24GB 才能达到的效果)。

LoRA 秩 (rank) 是控制可训练参数数量和模型表达能力的关键参数。理论上,调高 LoRA 秩可以增强 QLoRA 的表达能力。
通过QLoRA量化大幅降低基础模型的显存占用,从而允许使用更高的 LoRA 秩。
例如:
- 传统 LoRA(FP16)在 24GB GPU 上最多使用 r=16(否则显存溢出)。
- QLoRA(4-bit)在同样 GPU 上可使用 r=32 甚至更高,获得更强表达能力。
1.如何通过高秩 QLoRA 获得更好效果?
(1) 硬件与参数配置
GPU 显存:
- 24GB GPU:推荐 r≤32
- 48GB GPU:可尝试 r=64
(2) 训练策略优化
- 学习率调整:
高秩 LoRA 需要更高学习率,推荐范围 5e-5 至 1e-4。 - 梯度累积:
使用较大的梯度累积步数(如 8-16),模拟更大 batch size。 - 更长训练时间:
高秩模型需要更多训练步数收敛,可将 max_steps 增加 50-100%。
(3) 量化技术选择
- 双重量化:
启用bnb_4bit_use_double_quant=True以节省额外显存。 - NF4 量化:
使用bnb_4bit_quant_type="nf4"而非默认的 FP4,减少精度损失。
2. 注意事项
并非秩越高越好:
对于大多数任务,r=16-32 已足够,过高的秩可能导致过拟合。量化误差累积:
4-bit 量化会引入一定误差,可通过以下方式缓解:- 使用
compute_dtype=torch.float16保持梯度计算的高精度。 - 在关键层(如注意力机制)保留 FP16 精度。
- 使用
推理部署:
高秩 LoRA 在推理时会增加计算量,可通过以下方式优化:- 将 LoRA 参数合并到基础模型中(需更多显存)。
- 使用 INT8 量化进行推理。
你应该懂得AI大模型(十二)之 QLoRA的更多相关文章
- AI大模型学习了解
# 百度文心 上线时间:2019年3月 官方介绍:https://wenxin.baidu.com/ 发布地点: 参考资料: 2600亿!全球最大中文单体模型鹏城-百度·文心发布 # 华为盘古 上线时 ...
- Expo大作战(十二)--expo中的自定义样式Custom font,以及expo中的路由Route&Navigation
简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...
- 华为高级研究员谢凌曦:下一代AI将走向何方?盘古大模型探路之旅
摘要:为了更深入理解千亿参数的盘古大模型,华为云社区采访到了华为云EI盘古团队高级研究员谢凌曦.谢博士以非常通俗的方式为我们娓娓道来了盘古大模型研发的"前世今生",以及它背后的艰难 ...
- 保姆级教程:用GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话
导读 在当今的人工智能时代,大型AI模型已成为获得人工智能应用程序的关键.但是,这些巨大的模型需要庞大的计算资源和存储空间,因此搭建这些模型并对它们进行交互需要强大的计算能力,这通常需要使用云计算服务 ...
- PowerDesigner 学习:十大模型及五大分类
个人认为PowerDesigner 最大的特点和优势就是1)提供了一整套的解决方案,面向了不同的人员提供不同的模型工具,比如有针对企业架构师的模型,有针对需求分析师的模型,有针对系统分析师和软件架构师 ...
- PowerDesigner 15学习笔记:十大模型及五大分类
个人认为PowerDesigner 最大的特点和优势就是1)提供了一整套的解决方案,面向了不同的人员提供不同的模型工具,比如有针对企业架构师的模型,有针对需求分析师的模型,有针对系统分析师和软件架构师 ...
- ThinkPHP 关联模型(二十)
原文:ThinkPHP 关联模型(二十) ThinkPHP关联模型 两表关联查询:Message 和 user 关联条件uid(参考手册:模型->关联模型) 步骤: 一:创建Message表 ...
- 从零开始学习html(十二)CSS布局模型——上
一.css布局模型 清楚了CSS 盒模型的基本概念. 盒模型类型, 我们就可以深入探讨网页布局的基本模型了. 布局模型与盒模型一样都是 CSS 最基本. 最核心的概念. 但布局模型是建立在盒模型基础之 ...
- 【腾讯Bugly干货分享】腾讯验证码的十二年
本文来自于腾讯bugly开发者社区,未经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/581301b146dfb1456904df8d Dev Club 是一个交流移动 ...
- PRML读书会第十二章 Continuous Latent Variables(PCA,Principal Component Analysis,PPCA,核PCA,Autoencoder,非线性流形)
主讲人 戴玮 (新浪微博: @戴玮_CASIA) Wilbur_中博(1954123) 20:00:49 我今天讲PRML的第十二章,连续隐变量.既然有连续隐变量,一定也有离散隐变量,那么离散隐变量是 ...
随机推荐
- 简单实现Android的本地文件读写,暨将List数据保存到Json文件中并读出
一.让我们从引入依赖开始 //将这两行代码添加到以上位置,其他的一般不用管 implementation 'com.google.code.gson:gson:2.8.5' implementatio ...
- Ubuntu 分辨率设置不了
最近换了个显示器,Ubuntu下竟然只能显示低分辨率,瞬间zhuo ji了,解决,留爪. 问题就不多说了,直接记录正题, 主要涉及2个命令cvt和xrandr, 主要注意的一点是:刚刚开始直接用命令写 ...
- ThreadPoolExecutor的内部类Worker详细解析
一.定义 ThreadPoolExecutor 的内部类 Worker 是线程池的核心实现之一,它封装了线程和任务,并负责执行任务.Worker 类继承自 AbstractQueuedSynchron ...
- Python 潮流周刊#98:t-string 语法被正式接纳了(摘要)
本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...
- Python实验2 turtle 库绘制进阶图形
实验任务: 绘制嵌套彩色五角星(大小逐层递减) 设计函数绘制自定义正多边形(边数与颜色参数化) 扩展:实现动态旋转花瓣图案. 源代码:import turtle 绘制嵌套彩色五角星 def neste ...
- 解决 Dify 部署中 Podman WSL 容器文件权限问题
解决 Dify 部署中 Podman WSL 容器文件权限问题 在使用 Podman 进行 Dify 部署时,遇到了一个关键问题:启动服务时出现 initdb: error: could not ch ...
- AI Agent核心技术揭秘:从理论到实践(中篇)
认知是成本最低的对冲. --张三思维进化论 回顾与展望:从认知到技术的桥梁 在上一篇文章中,我们探讨了AI Agent的概念.特征和与传统AI的本质区别.我们认识到,AI Agent不仅是对话工具,更 ...
- 点赞背后的技术大冒险:分布式事务与SAGA模式
title: 点赞背后的技术大冒险:分布式事务与SAGA模式 date: 2025/05/07 00:12:40 updated: 2025/05/07 00:12:40 author: cmdrag ...
- docker容器中编辑文件报错bash: vi: command not found问题解决
一.问题 在docker容器中想编辑mongodb的配置文件,然后用vi就报错了 bash: vi: command not found root@bbbbeb52:/conf# vi mongod. ...
- K8stools工具
简介 K8stools 是一个 Kubernetes 日常运维辅助工具集,旨在提升运维效率,辅助平台治理与资源优化.功能涵盖资源分析.趋势评估.异常检测.行为采集.成本估算等常见场景,适用于 DevO ...