【大模型】微调一个大模型需要多少 GPU 显存?

  • 视频链接:微调一个模型需要多少GPU显存? up 主页:AI老兵
  • tags: #GPU显存 #模型微调 #LoRA #QLoRA #参数计算 本集视频详细介绍了在模型微调过程中 GPU
  • 显存需求的计算方法,包括全量微调和高效微调(如 LoRA)的情况。up 主通过具体示例,说明了如何估算不同规模模型和不同微调方法所需的 GPU 显存大小。

1 全量微调的 GPU 显存需求

1.1 主要显存消耗模块

  • Model Weight: 模型本身的参数
  • Gradient: 用于计算参数更新的梯度
  • Optimizer State: 优化器状态,取决于所使用的优化器类型
  • 其他(如 Activation 等)

1.2 显存需求计算示例(1B 模型,16bit 参数)

微调 1B 模型,16bit = 2byte

  • Model Weight(模型参数): 2GB (10 亿参数 * 2 byte/参数)

训练模型时,通过一系列反向传播的方法,来更新模型参数,涉及以下gradient​和optimizer states​参数。不断计算梯度,以更新模型参数。

  • Gradient(梯度): 2GB (通常与 Model Weight 相当)
  • Optimizer State(优化器): 8GB(保守估计为 Model Weight 的 4 倍)
  • 总计: 12GB(约6倍的model weight​显存)

2 高效微调方法:LoRA

2.1 LoRA 微调原理

  • 保持原有模型不变
  • 学习更少量的参数(如原模型参数的 2.5%)
  • 将学习结果与原模型结合形成新模型

2.2 LoRA 下的显存需求(以 2.5%参数为例)

LORA只对部分参数进行学习,大幅减少显存需求。显存需求计算示例(假设 LoRA 模块为原模型 2.5%):

  • Model Weight(模型参数): 2GB(保持不变)
  • Adapter Weight(适配器参数): 0.05GB (2GB * 2.5%)
  • Gradient + Optimizer State(梯度+优化器): 0.25GB (10GB * 2.5%)
  • 总计: 2.3GB

3 进一步优化:QLoRA

3.1 QLoRA 原理

  • 通过量化(Quantization)方法进一步压缩 Model Weight
  • 可将 16bit 参数压缩至 8bit 或 4bit

3.2 QLoRA 下的显存需求

  • Model Weight(模型参数): 可能降至 1GB 或 0.5GB
  • 其他项目相应减少

4 实际项目中的其他考虑因素

  • 单卡 vs 多卡训练
  • 单节点 vs 多节点训练
  • DeepSpeed 的 Zero3 或 Zero2 等优化策略

5 总结

模型微调所需的 GPU 显存取决于多个因素,包括模型大小、微调方法和优化策略。全量微调需要较大显存,而高效微调方法如 LoRA 和 QLoRA 可以显著减少显存需求。在实际项目中,还需考虑硬件配置和训练策略等因素来更精确地估算 GPU 显存需求。

参考资料

  • 17 微调一个模型需要多少 GPU 显存?
  • 算法冷知识第3期-1B参数的大模型训练需要多少显存?

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

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

相关文章

Lambda 表达式是什么以及如何使用

目录 📌 Kotlin 的 Lambda 表达式详解 🎯 什么是 Lambda 表达式? 🔥 1. Lambda 表达式的基本语法 ✅ 示例 1:Lambda 基本写法 ✅ 示例 2:使用 it 关键字(单参数简化) ✅ 示例 3…

全文 MLIR TOY -- Chapter2: 发出基本的 MLIR——把AST变成SSA的 MLIR Dialect IR

现在我们已经熟悉 Toy 语言和它的AST表示,现在让我们看看 MLIR 是怎样帮助编译 Toy 源程序的。 简介:多层中间表示 其他的编译器,像 LLVM,是提供一个固定的预定义类型和指令(通常是底层的像 RISC的指令)。对…

一个判断A股交易状态的python脚本

最近在做股票数据相关的项目,需要用到判断某一天某个时刻A股的状态,比如休市,收盘,交易中等,发动脑筋想了一下,这个其实还是比较简单的,这里我把实现方法分享给大家。 思路 当天是否休市 对于某…

LLaMA Factory微调后的大模型在vLLM框架中对齐对话模版

LLaMA Factory微调后的大模型Chat对话效果,与该模型使用vLLM推理架构中的对话效果,可能会出现不一致的情况。 下图是LLaMA Factory中的Chat的对话 下图是vLLM中的对话效果。 模型回答不稳定:有一半是对的,有一半是无关的。 1、未…

004 健身房个性化训练计划——金丹期(体态改善)

个人笔记使用。 01 肱骨前移 1.放松肩前束 2.放松肩后束 2.5kg哑铃侧展 泡沫轴上下滚 招财猫 肱二头 02 溜肩 宽距的坐姿划船 上顶

【已开源】UniApp+vue3跨端应用从0到1开发指南、uniapp+vue3模板应用

在跨端开发日益成为主流的今天,如何高效构建规范、可维护的企业级应用?本文以UniAppVue3* *TypeScript**为核心技术栈,手把手带你从零搭建高标准的跨平台项目。 通过本文,你将系统掌握: ✅ 环境配置:Node…

线程池设计

线程池实际上也是一个生产者消费者模型&#xff0c;线程池可以让多个线程去任务队列中取任务&#xff0c;执行任务&#xff0c;适用于需要大量的线程来完成任务且完成任务的时间较短。 #include "log.hpp" #include <mutex> #include <condition_variable&…

黑盒测试的正交实验法

背景: 利用因果图法、判定表法可以帮助我们对于输入数据的组合情况进行用例设计&#xff0c;但当输入数据的组合数量巨大时&#xff0c;由于不太可能覆盖到每个输入组合的测试情况&#xff0c;因果图法或判定表法可能就不太适用了&#xff0c;可以采用正交实验法、来合理地减少…

Linux内核编程

linux 系 统 在 2 4 4 0 上 的 启 动 过 程 分 三个 阶 段 u-boot的启动 1.先分清寄存器的分类 RAM的分类 ROM的分类 Mini2440开发板的存 储器配置 Mini2440开发板板载: 1. 64MB sdram; 2. 256MB nand-flash; 3. 2MB nor-flash; 4. s3c2440内部还有4KB iram; Mini2440的启…

黑盒测试的判定表法(能对多条件依赖关系进行设计测试点)

定义: 判定表是分析和表达多逻辑条件下执行不同操作的工具。就是指把所有的输入条件、所有可能采取的动作按表格列出来&#xff0c;每一种条件和动作的组合构成一条规则&#xff0c;也即一条用例。 1.判定表法的引用 等价类边界值分析法主要关注单个输入类条件的测试并未考虑…

从零构建大语言模型全栈开发指南:第四部分:工程实践与部署-4.1.2ONNX格式转换与TensorRT部署

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 从零构建大语言模型全栈开发指南-第四部分:工程实践与部署4.1.2 ONNX格式转换与TensorRT部署1. 模型部署的核心挑战与价值2. ONNX格式转换技术详解2.1 ONNX技术栈组成2.2 转换流程与关键技术2.3 转换常…

免费下载 | 2025年网络安全报告

报告总结了2024年的网络安全态势&#xff0c;并对2025年的安全趋势进行了预测和分析。报告涵盖了勒索软件、信息窃取软件、云安全、物联网设备安全等多个领域的安全事件和趋势&#xff0c;并提供了安全建议和最佳实践。 一、报告背景与目的 主题&#xff1a;2024企业信息安全峰…

基于Real-Sim-Real循环框架的机器人策略迁移方法

编辑&#xff1a;陈萍萍的公主一点人工一点智能 基于Real-Sim-Real循环框架的机器人策略迁移方法本文通过严谨的理论推导和系统的实验验证&#xff0c;构建了一个具有普适性的sim-to-real迁移框架。https://mp.weixin.qq.com/s/cRRI2VYHYQUUhHhP3bw4lA 01 摘要 本文提出的Rea…

语义分析(编译原理)

1.什么是语义分析: 前两个阶段&#xff0c;词法分析是从字符到单词的一级识别&#xff0c;保证了每个单词的形式是正确的&#xff0c; 语法分析是由单词到语法树的一级识别&#xff0c;如果不符合语法规则就不能建树&#xff0c;因此保证了各个语法成分的构成是正确的 词法分…

蓝桥杯备考---》贪心算法之矩阵消除游戏

我们第一次想到的贪心策略一定是找出和最大的行或者列来删除&#xff0c;每次都更新行和列 比如如图这种情况&#xff0c;这种情况就不如直接删除两行的多&#xff0c;所以本贪心策略有误 so我们可以枚举选的行的情况&#xff0c;然后再贪心的选择列和最大的列来做 #include …

LeetCode hot 100—二叉搜索树中第K小的元素

题目 给定一个二叉搜索树的根节点 root &#xff0c;和一个整数 k &#xff0c;请你设计一个算法查找其中第 k 小的元素&#xff08;从 1 开始计数&#xff09;。 示例 示例 1&#xff1a; 输入&#xff1a;root [3,1,4,null,2], k 1 输出&#xff1a;1示例 2&#xff1a; …

【Java SE】Arrays类

参考笔记&#xff1a; Java中Arrays类(操作数组的工具)_java arrays-CSDN博客 Java——Arrays 类详解_java arrays类-CSDN博客 目录 1.Arrays类简介 2.Arrays.toString 2.1 使用示例 2.2 源码 3. Arrays.copyOf 3.1 使用示例 3.2 源码 4.Arrays.sort 4.1 默认排序使…

git命令简陋版本

git push git pull 临时仓库暂存区 ##############创建提交################ git init #创建git地址 git config --global user.name "***YQ1007" git config --global user.email "***gmail.com" git remote…

6. 王道_网络协议

1 网络协议和网络模型 2 TCP/IP协议族概览 2.1 四层模型的各层实体 2.2 协议数据单元的转换 2.3 常见协议以及分层 2.4 ifconfig 2.5 本地环回设备 3 以太网 3.1 以太网和交换机 3.2 以太网帧 MAC地址大小 48位 6字节 IP地址 32位 4字节 port 16位 2字节 3.3 ARP协议 4 IP协…

minecraft.service 文件配置

minecraft.service 文件配置 # /etc/systemd/system/minecraft.service [Unit] DescriptionMinecraft Fabric Server Afternetwork.target Wantsnetwork-online.target[Service] Usermcfabricuser Groupmcfabricuser WorkingDirectory/minecraft/1.21.1-fabric-server ExecStar…