使用 AutoTrain 微调 PaliGemma

社区文章 发布于 2024 年 7 月 25 日

在这篇博客中,我们将探讨如何使用 AutoTrain 对 PaliGemma 模型进行微调,以完成视觉问答 (VQA) 和图像描述 (captioning) 任务。

AutoTrain 是一个无代码解决方案,旨在为数据科学家、机器学习工程师和爱好者简化工作流程。它允许您无需编写任何代码即可训练 (几乎) 任何最先进的模型。要开始使用 AutoTrain,请查看 文档Github 仓库

数据集

您可以使用来自 Hub 的数据集或本地数据集。

Hub 数据集

Hub 数据集的格式应如下:

image/png

我们感兴趣的列是:

  • image: 图像 (image)
  • question: 问题 (prompt_text_column)
  • multiple_choice_answer: 答案 (text_column)

注意:对于 VQA 任务,我们使用以上三列。对于图像描述任务,我们只使用 imagetext_column 列。

本地数据集

如果使用本地数据集,其格式应如下:

train/
├── 0001.png
├── 0002.png
├── 0003.png
├── .
├── .
├── .
└── metadata.jsonl

其中 metadata.jsonl 的内容如下:

{"file_name": "0001.jpg", "question": "What vehicles are shown?", "multiple_choice_answer": "motorcycles"}
{"file_name": "0002.jpg", "question": "Is the plane upside down?", "multiple_choice_answer": "no"}
{"file_name": "0003.jpg", "question": "What is the boy doing?", "multiple_choice_answer": "batting"}

metadata.jsonl 必须包含 file_name 列,您可以更改其他列的名称。

如果您有验证数据,可以添加一个与上述格式相同的文件夹。

注意:使用 AutoTrain UI 时,文件夹需要被压缩成 ZIP 文件。当 train.zip 被解压时,它应该包含所有图像和 metadata.jsonl 文件,不能有任何文件夹或子文件夹。

本地训练

在本地,autotrain 可以在 UI 模式或 CLI 模式下使用。

要安装 autotrain,请使用 pip 命令:

$ pip install -U autotrain-advanced

安装完成后,您可以使用以下命令启动 UI:

$ autotrain app

使用 CLI/config 训练

要使用配置文件进行训练,请创建一个名为 config.yml 的文件,内容如下:

task: vlm:vqa
base_model: google/paligemma-3b-pt-224
project_name: autotrain-paligemma-finetuned-vqa
log: tensorboard
backend: local

data:
  path: abhishek/vqa_small
  train_split: train
  valid_split: validation
  column_mapping:
    image_column: image
    text_column: multiple_choice_answer
    prompt_text_column: question

params:
  epochs: 3
  batch_size: 2
  lr: 2e-5
  optimizer: adamw_torch
  scheduler: linear
  gradient_accumulation: 4
  mixed_precision: fp16
  peft: true
  quantization: int4

hub:
  username: ${HF_USERNAME}
  token: ${HF_TOKEN}
  push_to_hub: true

以上配置使用了来自 Hub 的数据集,如果使用本地数据集,请更改以下内容:

data:
  path: local_dataset_folder_path # where training and validation (optional) folders are
  train_split: train # name of training folder
  valid_split: validation # name of validation folder or none
  column_mapping:
    image_column: image
    text_column: multiple_choice_answer
    prompt_text_column: question

请仔细检查列的映射关系!

完成后,运行:

$ export HF_USERNAME=your_hugging_face_username
$ export HF_TOKEN=your_hugging_face_write_token
$ autotrain --config path_to_config.yml

然后等待并观察训练进度 :)

使用 UI 训练

这是使用 HuggingFace Hub 数据集的 UI 截图:

image/png

这是使用本地数据集的截图:

image/png

再次强调,请特别注意列的映射关系 ;)

最后,您的模型可以被推送到 Hub (由您选择),然后就可以使用了。如果遇到任何问题,请在 Github 问题跟踪器上提问:这里

祝您 AutoTraining 愉快!🤗

社区

注册登录 以发表评论