FinGPT在RTX 4070上:问题与修复 | AI生成和翻译

首页 2026.06

以下是完整情况:


GPU 状态

RTX 4070  |  12GB VRAM (12,282 MiB)  |  230MiB 已用  |  CUDA 13.0

余量充足,只有 Xorg 在使用。


代码 — 功能说明

FinGPT 是一个用于金融大语言模型的 LoRA 微调框架。它封装了 HuggingFace Trainer + PEFT + DeepSpeed。关键子项目:

子项目 功能
FinGPT_Benchmark 在 7B 模型上进行多任务训练(情感分析、NER、标题信息抽取、关系抽取、ConvFinQA)
FinGPT_Forecaster 基于新闻的股票走势预测 — Llama-2-7B,max_length 4096
FinGPT_Sentiment_Analysis 金融情感分类器
FinGPT_RAG / MultiAgentsRAG 用于金融问答的 RAG 流水线
FinGPT_FinancialReportAnalysis PDF 报告分析

支持的模型大小:

模型 大小 (fp16) 8-bit 4-bit
ChatGLM2-6B / Falcon-7B / Qwen-7B / Llama-2-7B ~13-14 GB ~6.5 GB ~3.5 GB
Llama-2-13B ~26 GB ~13 GB ~7 GB

训练使用 LoRA(非全参数微调)——适配器权重极小(约几 MB)。


我发现的问题

1. load_in_8bit=True 被注释掉了(两个 train_lora.py 文件中第 50 行)

model = AutoModelForCausalLM.from_pretrained(
    model_name,
    # load_in_8bit=True,       <-- 被注释掉
    # device_map="auto",
    trust_remote_code=True
)

这意味着模型以完整的 fp16 加载——7B 模型约 13GB 无法装进 12GB VRAM。除非取消注释或使用 4-bit,否则必然遇到 CUDA OOM。

2. 设计用于 4 张 GPU,而非 1 张

3. 需要本地模型文件

4. 依赖版本过时


你实际能在 RTX 4070 12GB 上做什么

✅ 轻松容纳 —— 很宽裕

任务 配置
情感分析 / NER / 标题 微调 7B 模型 4-bit QLoRA,batch_size 4,max_length 512 → ~5-6 GB
Forecaster 微调 7B 模型 4-bit,batch_size 1,max_length 4096 → ~6-7 GB
推理 任意 7B 模型 fp16 或 8-bit,轻松容纳
推理 13B 模型 4-bit 量化 → ~7-8 GB

⚠️ 勉强可用 —— 需要调优

任务 配置
Forecaster 微调 7B 模型(8-bit) batch_size 1,grad_accum 16(与原版一致),max_length 2048
13B 模型 LoRA 微调 仅 4-bit QLoRA,极小 batch_size 1,max_length 512

❌ 无法运行

任务 原因
任何 7B+ 模型的完整 fp16 微调 13GB > 12GB
13B 模型以 8-bit 运行 ~13GB 刚超 12GB,没有余量给激活值
任何需要 fp32(无混合精度)的操作 每个 7B 模型需要 26GB+

快速修复使其运行

train_lora.py 中取消注释 load_in_8bit=True 并添加 device_map="auto"。或者升级为 4-bit QLoRA:

from transformers import BitsAndBytesConfig
bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_use_double_quant=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=torch.bfloat16
)
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    quantization_config=bnb_config,
    device_map="auto",
    trust_remote_code=True
)

然后去掉 DeepSpeed(单 GPU 上过于冗余),直接使用 HuggingFace Trainer。对于 Forecaster,还需启用梯度检查点并设置 batch_size=1gradient_accumulation_steps=16

需要我进行这些修改并设置一个测试运行吗?


AI生成和翻译,但整理分享仍需精力。如果觉得有帮助,欢迎 捐助支持。 微信:@lzwjavaWeChat QR · X: @lzwjava · 打个招呼 👋

返回 捐助