基于LoRA训练图像分类模型
《基于LoRA训练图像分类模型》共 0.2 万字,通篇围绕 LoRA、数据集、微调、预训练 展开,归在「训练、微调与数据」这一层。
适合要自己训模型、或者判断这一版该不该训的人
目录骨架(3 节)
- 示例代码
- 分享你的模型
- PEFT 配置和模型
示例代码
📎 附件:lora-train.zip(zip, 22KB)
原文链接:https://www.yuque.com/attachments/yuque/0/2025/zip/2424104/1746582257175-1f7d444b-3357-4950-bdd3-d86e210bc372.zip
前言
一种有效训练大型模型的常用方法是插入(通常在注意力模块中)较小的可训练矩阵,这些矩阵是在微调期间要学习的增量权重矩阵的低秩分解。预训练模型的原始权重矩阵被冻结,只有较小的矩阵在训练期间更新。这减少了可训练参数的数量,从而减少了内存使用和训练时间,对于大型模型来说,这可能非常昂贵。
有几种不同的方法可以将权重矩阵表示为低秩分解,但低秩自适应 (LoRA)是最常用的方法。PEFT 库支持其他几种 LoRA 变体,例如低秩哈达玛积 (LoHa)、低秩克罗内克积 (LoKr)和自适应低秩自适应 (AdaLoRA)。您可以在适配器指南中了解有关这些方法在概念上如何工作的更多信息。如果您有兴趣将这些方法应用于其他任务和用例,例如语义分割、token 分类,请查看我们的notebook 合集!
此外,PEFT 支持 X-LoRA LoRA 专家混合方法。
本指南将向您展示如何使用低秩分解方法快速训练图像分类模型,以识别图像中显示的食物类别。

熟悉图像分类模型训练的一般过程将非常有帮助,并使您能够专注于低秩分解方法。如果您是新手,我们建议您首先查看 Transformers 文档中的图像分类指南。当您准备好后,请回来看看将 PEFT 融入您的训练有多么容易!
在开始之前,请确保您已安装所有必要的库。
pip install -q peft transformers datasets
数据集
在本指南中,您将使用包含 101 个食物类别的图像的 Food-101 数据集(查看数据集查看器,以更好地了解数据集的外观)。
使用 load_dataset 函数加载数据集。
from datasets import load_dataset
ds = load_dataset("food101")
每个食物类别都用一个整数标记,为了更容易理解这些整数代表什么,您将创建一个 label2id 和 id2label 字典,将整数映射到其类别标签。
labels = ds["train"].features["label"].names
label2id, id2label = dict(), dict()
for i, label in enumerate(labels):
label2id[label] = i
id2label[i] = label