👁️视觉微调

了解如何使用 Unsloth 微调视觉/多模态 LLM

微调视觉模型可使模型在某些任务上表现更出色,而普通 LLM 在这些任务上不会那么擅长,例如目标/运动检测。 你还可以训练 带有 RL 的 VLM. 我们有许多用于视觉微调的免费笔记本:

  • Qwen3-VL (8B)视觉: 笔记本

  • Ministral 3:用于通用问答的视觉微调: 笔记本 可以将通用问答数据集与更细分的数据集拼接起来,使微调不会忘记基础模型的能力。

  • Gemma 3(4B)视觉: 笔记本

  • Llama 3.2 Vision 用于放射影像的微调: 笔记本 我们如何帮助医疗专业人员更快地分析 X 光、CT 扫描和超声?

  • Qwen2.5 VL 用于将手写转换为 LaTeX 的微调: 笔记本 这使得复杂的数学公式可以轻松转写为 LaTeX,而无需手动编写。

最好确保你的数据集中的图像都具有相同的尺寸/分辨率。使用 300-1000px 的尺寸,以确保训练不会花费太长时间或使用过多资源。

禁用视觉 / 仅文本微调

为了微调视觉模型,我们现在允许你选择要微调模型的哪些部分。你可以只微调视觉层,或只微调语言层,或者微调注意力 / MLP 层!默认情况下我们全部开启!

model = FastVisionModel.get_peft_model(
    model,
    finetune_vision_layers     = True, # 如果不微调视觉层则设为 False
    finetune_language_layers   = True, # 如果不微调语言层则设为 False
    finetune_attention_modules = True, # 如果不微调 attention 层则设为 False
    finetune_mlp_modules       = True, # 如果不微调 MLP 层则设为 False

    r = 16# 越大准确率越高,但可能过拟合
    lora_alpha = 16# 推荐 alpha 至少等于 r
    lora_dropout = 0,
    bias = "none",
    random_state = 3407,
    use_rslora = False,               # 我们支持 rank stabilized LoRA
    loftq_config = None,               # 以及 LoftQ
    target_modules = "all-linear",    # 现在是可选的!如有需要可以指定一个列表
    modules_to_save=[
        "lm_head",
        "embed_tokens",
    ],
)

视觉数据整理器

我们有一个专门用于视觉数据集的数据整理器:

而数据整理器的参数是:

多图像训练

为了使用多图像对模型进行微调或训练,最直接的改动是将:

替换为:

使用 map 会触发数据集标准化和 arrow 处理规则,而这些规则可能比较严格且更复杂。

用于视觉微调的数据集

用于微调视觉或多模态模型的数据集,与标准问答对类似 datasets ,但这次还包含图像输入。例如, Llama 3.2 Vision 笔记本 使用一个放射影像案例来展示 AI 如何帮助医疗专业人员更高效地分析 X 光、CT 扫描和超声。

我们将使用 ROCO 放射影像数据集的一个采样版本。你可以访问该数据集 这里。该数据集包含 X 光、CT 扫描和超声图像,展示医疗状况和疾病。每张图像都有专家撰写的说明文字。目标是微调一个 VLM,使其成为医疗专业人员有用的分析工具。

让我们看看这个数据集,并检查第一个示例展示了什么:

图像
说明文字

全景放射影像显示右侧后上颌骨存在溶骨性病灶,并伴有上颌窦底吸收(箭头所示)。

为了格式化数据集,所有视觉微调任务都应按如下方式格式化:

我们将编写一个自定义指令,要求 VLM 扮演放射影像专家。另请注意,除了仅 1 条指令外,你还可以添加多个轮次,使其成为动态对话。

让我们将数据集转换为用于微调的“正确”格式:

第一个示例如下所示:

在开始任何微调之前,也许视觉模型已经知道如何分析图像了?让我们检查一下是否如此!

结果如下:

有关更多详细信息,请查看我们的数据集部分在 此处的笔记本.

🔎仅对视觉模型、VLM 训练助手响应

对于语言模型,我们可以使用 from unsloth.chat_templates import train_on_responses_only 如前所述。对于视觉模型,请使用额外参数作为 UnslothVisionDataCollator 的一部分,就像之前一样!请参阅 视觉微调 以获取有关如何使用视觉数据整理器的更多详细信息。

例如,对于 Llama 3.2 Vision:

最后更新于

这有帮助吗?