LLaMA-Factory|微调大语言模型初探索(4),64G显存微调13b模型

  上篇文章记录了使用lora微调deepseek-7b,微调成功,但是微调llama3-8b显存爆炸,这次尝试使用qlora微调HQQ方式量化,微调更大参数体量的大语言模型,记录下来微调过程,仅供参考。
对过程不感兴趣的兄弟们可以直接从第3节开始看。

1.量化方法

  重点介绍bitsandbytes、hqq和eetq这三种量化方式,它们通过将模型的权重压缩为低精度格式来减少显存占用,从而使得可以训练更大的模型,或者在有限的显存资源下运行大型模型。

  • bitsandbytes: 专注于权重量化,通过将模型权重表示为更低精度的数据类型,以减少显存占用和提升训练效率
  • hqq: 通常是一种结合了多种量化技术的方法,旨在通过多种策略进一步压缩模型的存储需求,并保持训练过程的性能。
  • eetq: 专注于在训练阶段有效地进行量化,以减少显存占用,并可能采用某些自适应的量化策略来平衡效率和效果。

1.1 在配置文件中的位置:

config.yaml 复制代码
model_name_or_path: meta-llama/Meta-Llama-3-8B-Instruct
quantization_bit: 4
quantization_method: bitsandbytes  # choices: [bitsandbytes (4/8), hqq (2/3/4/5/6/8), eetq (8)]

如上述配置文件所示,量化模型方法有:bitsandbytes、hqq和eetq三种方式,其中bitsandbytes(4/8)是指支持4bit和8bit量化,其他两种同理。

2.微调Meta-Llama-3-8B-Instruct

config.yaml 复制代码
## llama3_lora_sft_otfq.yaml 修改部分
model_name_or_path: models/Meta-Llama-3-8B-Instruct/
quantization_bit: 2
quantization_method: hqq   # choices: [bitsandbytes (4/8), hqq (2/3/4/5/6/8), eetq (8)]
trust_remote_code: true
...
### method
...
lora_target: q_proj,v_proj

运行训练命令:

bash 复制代码
llamafactory-cli train examples/train_qlora/llama3_lora_sft_otfq.yaml

通过修改lora_target,只微调q_proj和v_proj的方式减少显存使用,成功运行,没有OOM,但显存也是几乎全满了,与官网对照表还是对不上。

3.微调Llama-2-13b-chat-hf模型

抱着菜就多练,不会就问的态度,直接在github上问,结果还真得到了答复,问题地址:issue

得到的回复也很简单,微调方式有问题

于是我去官网上去找fsdp + qlora的微调方式,还真让我找到了!!

于是我兴致冲冲的去按照官方命令微调:

bash 复制代码
bash examples/extras/fsdp_qlora/train.sh

# train.sh
#CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 accelerate launch \
#   --config_file examples/accelerate/fsdp_config.yaml \
#    src/train.py examples/extras/fsdp_qlora/llama3_lora_sft.yaml

注意: 运行之前要修改一下fsdp_config.yamlllama3_lora_sft.yaml,其中fsdp_config.yaml第19行num_processes为你GPU数量,llama3_lora_sft.yaml的配置就不赘述。

运行结果显存使用显著下降,但是RAM使用量提高,如图所示:

总结

  • PyTorch的全切片数据并行技术FSDP能让我们处理更多更大的模型,这是微调13b模型成功的关键
  • fsdp_config.yaml中的FULL_SHARD将模型参数、梯度和优化器状态都切分到不同的GPU上,类似ZeRO-3。
  • 使用fsdp + qlora微调方法微调32B模型依旧OOM,后续会继续探索DeepSpeed方式来微调32B模型,验证其可行性。
相关推荐
To_OC31 分钟前
大模型蒸馏是啥?说白了就是大厨带徒弟的学问
人工智能·llm·agent
新手来了@click1 小时前
JAVA+AI 简化开发操作|文章被 AI Agent 技术社区收录分享
人工智能
GuWenyue1 小时前
Cursor黑盒拆解!1套LangChain.js手写Mini编程Agent,自动生成React项目,效率提升60%
前端·数据库·人工智能
GuWenyue1 小时前
传统Agent工具两大痛点!300行代码落地MCP跨语言工具,彻底解耦LLM与工具
前端·人工智能·算法
老云讲算力市场2 小时前
WAIC首日观察:国产算力与机器人加速落地,奇点算力迎来产业新机遇
人工智能·科技
糖果店的幽灵2 小时前
【DeepAgents 从入门到精通】Context Management 上下文管理
java·人工智能·后端·spring·中间件·langgraph·deepagents
小林ixn2 小时前
大模型随机说话的秘密:Temperature 和 Top K 深度解析,LangChain 实战调优
人工智能·langchain
ALINX技术博客2 小时前
ALINX 亮相 2026 WAIC 世界人工智能大会,展示 AI 视觉 FPGA+GPU 异构计算与电子后视镜解决方案
人工智能·ai·fpga·世界人工智能大会·电子后视镜
程序员老猫3 小时前
当 AI 能写 80% 的代码时,后端工程师的核心价值还剩什么?
人工智能
想会飞的蒲公英3 小时前
计算机怎样读取中文文本:编码、清洗与标准化
人工智能·python·自然语言处理