一、显存和算力

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. 优化策略

显存优化

  1. 量化:FP16 → INT8 → 4-bit/2-bit。
  2. 梯度检查点:牺牲计算速度换取显存。
  3. 模型架构优化:使用参数效率更高的模型(如 LLaMA 比 GPT-3 参数量少 50%)。

算力优化

  1. 算法优化:使用 FlashAttention、TensorRT 等加速库。
  2. 硬件升级:从 RTX 3090 (35 TFLOPS) 升级到 A100 (312 TFLOPS)。
  3. 并行策略:数据并行、张量并行或流水线并行。

6. 常见误区

  1. "显存越大越好":

    • 若算力不足,大显存无法充分发挥作用(如训练小模型时)。
  2. "算力高就能训练大模型":

    • 显存不足时,高算力 GPU 仍无法加载大模型。
  3. "量化只影响精度":

    • 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. 注意事项

    1. 并非秩越高越好:
      对于大多数任务,r=16-32 已足够,过高的秩可能导致过拟合。

    2. 量化误差累积:
      4-bit 量化会引入一定误差,可通过以下方式缓解:

      • 使用 compute_dtype=torch.float16 保持梯度计算的高精度。
      • 在关键层(如注意力机制)保留 FP16 精度。
    3. 推理部署:
      高秩 LoRA 在推理时会增加计算量,可通过以下方式优化:

      • 将 LoRA 参数合并到基础模型中(需更多显存)。
      • 使用 INT8 量化进行推理。

你应该懂得AI大模型(十二)之 QLoRA的更多相关文章

  1. AI大模型学习了解

    # 百度文心 上线时间:2019年3月 官方介绍:https://wenxin.baidu.com/ 发布地点: 参考资料: 2600亿!全球最大中文单体模型鹏城-百度·文心发布 # 华为盘古 上线时 ...

  2. Expo大作战(十二)--expo中的自定义样式Custom font,以及expo中的路由Route&Navigation

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  3. 华为高级研究员谢凌曦:下一代AI将走向何方?盘古大模型探路之旅

    摘要:为了更深入理解千亿参数的盘古大模型,华为云社区采访到了华为云EI盘古团队高级研究员谢凌曦.谢博士以非常通俗的方式为我们娓娓道来了盘古大模型研发的"前世今生",以及它背后的艰难 ...

  4. 保姆级教程:用GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话

    导读 在当今的人工智能时代,大型AI模型已成为获得人工智能应用程序的关键.但是,这些巨大的模型需要庞大的计算资源和存储空间,因此搭建这些模型并对它们进行交互需要强大的计算能力,这通常需要使用云计算服务 ...

  5. PowerDesigner 学习:十大模型及五大分类

    个人认为PowerDesigner 最大的特点和优势就是1)提供了一整套的解决方案,面向了不同的人员提供不同的模型工具,比如有针对企业架构师的模型,有针对需求分析师的模型,有针对系统分析师和软件架构师 ...

  6. PowerDesigner 15学习笔记:十大模型及五大分类

    个人认为PowerDesigner 最大的特点和优势就是1)提供了一整套的解决方案,面向了不同的人员提供不同的模型工具,比如有针对企业架构师的模型,有针对需求分析师的模型,有针对系统分析师和软件架构师 ...

  7. ThinkPHP 关联模型(二十)

    原文:ThinkPHP 关联模型(二十) ThinkPHP关联模型 两表关联查询:Message 和  user  关联条件uid(参考手册:模型->关联模型) 步骤: 一:创建Message表 ...

  8. 从零开始学习html(十二)CSS布局模型——上

    一.css布局模型 清楚了CSS 盒模型的基本概念. 盒模型类型, 我们就可以深入探讨网页布局的基本模型了. 布局模型与盒模型一样都是 CSS 最基本. 最核心的概念. 但布局模型是建立在盒模型基础之 ...

  9. 【腾讯Bugly干货分享】腾讯验证码的十二年

    本文来自于腾讯bugly开发者社区,未经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/581301b146dfb1456904df8d Dev Club 是一个交流移动 ...

  10. PRML读书会第十二章 Continuous Latent Variables(PCA,Principal Component Analysis,PPCA,核PCA,Autoencoder,非线性流形)

    主讲人 戴玮 (新浪微博: @戴玮_CASIA) Wilbur_中博(1954123) 20:00:49 我今天讲PRML的第十二章,连续隐变量.既然有连续隐变量,一定也有离散隐变量,那么离散隐变量是 ...

随机推荐

  1. 简单实现Android的本地文件读写,暨将List数据保存到Json文件中并读出

    一.让我们从引入依赖开始 //将这两行代码添加到以上位置,其他的一般不用管 implementation 'com.google.code.gson:gson:2.8.5' implementatio ...

  2. Ubuntu 分辨率设置不了

    最近换了个显示器,Ubuntu下竟然只能显示低分辨率,瞬间zhuo ji了,解决,留爪. 问题就不多说了,直接记录正题, 主要涉及2个命令cvt和xrandr, 主要注意的一点是:刚刚开始直接用命令写 ...

  3. ThreadPoolExecutor的内部类Worker详细解析

    一.定义 ThreadPoolExecutor 的内部类 Worker 是线程池的核心实现之一,它封装了线程和任务,并负责执行任务.Worker 类继承自 AbstractQueuedSynchron ...

  4. Python 潮流周刊#98:t-string 语法被正式接纳了(摘要)

    本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...

  5. Python实验2 turtle 库绘制进阶图形

    实验任务: 绘制嵌套彩色五角星(大小逐层递减) 设计函数绘制自定义正多边形(边数与颜色参数化) 扩展:实现动态旋转花瓣图案. 源代码:import turtle 绘制嵌套彩色五角星 def neste ...

  6. 解决 Dify 部署中 Podman WSL 容器文件权限问题

    解决 Dify 部署中 Podman WSL 容器文件权限问题 在使用 Podman 进行 Dify 部署时,遇到了一个关键问题:启动服务时出现 initdb: error: could not ch ...

  7. AI Agent核心技术揭秘:从理论到实践(中篇)

    认知是成本最低的对冲. --张三思维进化论 回顾与展望:从认知到技术的桥梁 在上一篇文章中,我们探讨了AI Agent的概念.特征和与传统AI的本质区别.我们认识到,AI Agent不仅是对话工具,更 ...

  8. 点赞背后的技术大冒险:分布式事务与SAGA模式

    title: 点赞背后的技术大冒险:分布式事务与SAGA模式 date: 2025/05/07 00:12:40 updated: 2025/05/07 00:12:40 author: cmdrag ...

  9. docker容器中编辑文件报错bash: vi: command not found问题解决

    一.问题 在docker容器中想编辑mongodb的配置文件,然后用vi就报错了 bash: vi: command not found root@bbbbeb52:/conf# vi mongod. ...

  10. K8stools工具

    简介 K8stools 是一个 Kubernetes 日常运维辅助工具集,旨在提升运维效率,辅助平台治理与资源优化.功能涵盖资源分析.趋势评估.异常检测.行为采集.成本估算等常见场景,适用于 DevO ...