type
status
date
slug
summary
tags
category
icon
password
环境安装
推理环境安装
如果flash-attn==2.3.6安装失败,可能是flash-attn找不到对应nvcc版本。
如果版本不对,重新安装nvcc
安装后续库
微调环境安装
注意的是,可以将xtuner的分支改到最新tag,这样pip安装才会出现可执行的xtuner。
建议微调和推理环境分开。
数据集处理
如果需要输入坐标信息,可以将坐标信息归一化到[0, 1000]之间的整型,token中有0到1000的数字,这样文本的token数量不会太多
微调
关键设计决策(先说结论)
- 视觉 LoRA 而非解冻全部视觉参数:你当前
freeze_visual_encoder=True,配合visual_encoder_lora是正确的方向 —— 冻结 base 参数、只训练 LoRA adapter,适合少样本场景且显存友好。
- target_modules 用子串匹配就够:你列出的模块里,视觉的 attention 是
attn.qkv,mlp 是mlp.fc1/fc2,用["attn.qkv","mlp.fc1","mlp.fc2"]即可匹配所有层。
- 少样本时减小 LoRA 容量、再加低 LR 与更多 epoch:把视觉 LoRA 的
r/alpha调小(例如 r=32, alpha=32),学习率降到1e-5 ~ 5e-6,并增加 epoch(3~10,视样本数)或用更多gradient_accumulation_steps。
- 把 bbox 显式写入训练 prompt:训练样本的文本(context)应包含 bbox 信息(格式化为
boxes: [[x1,y1,x2,y2,label], ...]或自然语言描述),模型依据该 context 学习把视觉特征和 bbox 对齐。
- 数据量小 -> 强正则/数据增强/重复采样:对图片做轻微 augment(翻转/色彩 jitter)、使用重复采样或 upsampling 生成足够 batch。
遇到问题
报错信息
明白了,你
_llm_forward 里已经把视觉模型和语言模型都混合在一起了,但问题是 PEFT 封装会把 input_ids、attention_mask 等参数传给整个模型,导致 InternVisionModel.forward() 报错。核心思路是:视觉模型只接受
pixel_values,语言模型只接受 inputs_embeds 或 input_ids,两者不要混用参数。你可以这样改
_llm_forward:✅ 改动重点:
- 视觉模型单独前向,不传
input_ids、attention_mask等。
- 文本模型单独使用
inputs_embeds前向。
- LoRA/PEFT 调用
_llm_forward时不会把不需要的参数传给视觉模型。
推理
对于多边形的推理和微调
- LoRA 可以让模型学会 polygon 推理,但需要大量高质量 polygon 标注 + 格式约束,且训练难度高。
- 更实用的办法 是用 InternVL3 做 bbox 检测,再接 SAM / 语义分割网络 → polygon。
- 如果你只是想快速落地,建议优先用 检测 + SAM + mask2polygon,而不是直接逼 LLM 输出 polygon。