👁️视觉微调

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

对视觉模型进行微调可以使模型在某些任务上表现出色,而普通大型语言模型在这些任务(如物体/运动检测)上可能不如视觉模型。 你也可以训练 带有强化学习的视觉-语言模型(VLMs). 我们有许多用于视觉微调的免费笔记本:

circle-info

最好确保你的数据集中的所有图像具有相同的大小/尺寸。使用300-1000像素的尺寸可确保训练不会花费过多时间或消耗过多资源。

禁用视觉/仅文本微调

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

model = FastVisionModel.get_peft_model(
    model,
    finetune_vision_layers     = True, # 如果不微调视觉层则为 False
    finetune_language_layers   = True, # 如果不微调语言层则为 False
    finetune_attention_modules = True, # 如果不微调注意力层则为 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,               # 我们支持秩稳定的 LoRA
    loftq_config = None,               # 以及 LoftQ
    target_modules = "all-linear",    # 现在可选!如有需要可指定列表
    modules_to_save=[
        "lm_head",
        "embed_tokens",
    ],
)

视觉数据整理器

我们为视觉数据集准备了一个特殊的数据整理器:

数据整理器的参数如下:

视觉微调数据集

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

我们将使用 ROCO 放射影像数据集的抽样版本。你可以访问该数据集 这里arrow-up-right。该数据集包含展示医疗状况和疾病的 X 光、CT 扫描和超声图像。每张图像都有专家撰写的描述性标题。目标是微调一个视觉-语言模型,使其成为医疗专业人员有用的分析工具。

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

图像
标题

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

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

我们将制定一个自定义指令,要求视觉-语言模型成为专家放射技师。注意,除了只使用一条指令外,你还可以添加多轮对话,使其成为动态对话。

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

第一个示例现在的结构如下:

在我们进行任何微调之前,也许视觉模型已经知道如何分析这些图像?让我们检查是否是这种情况!

结果:

更多细节请查看我们在 笔记本中的数据集部分arrow-up-right.

多图像训练

为了对像 Qwen3-VL 这样的 VLM 进行多图像微调或训练,最直接的更改是替换

为:

使用 map 会触发数据集标准化和 Arrow 处理规则,这些规则可能更严格且更难定义。

🔎仅在视觉模型(VLMs)上对助理回复进行训练

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

例如对于 Llama 3.2 视觉:

最后更新于

这有帮助吗?