快捷方式

vqa_dataset

torchtune.datasets.multimodal.vqa_dataset(model_transform: Transform, *, source: str, image_dir: str = None, column_map: Optional[Dict[str, str]] = None, new_system_prompt: Optional[str] = None, packed: bool = False, filter_fn: Optional[Callable] = None, split: str = 'train', **load_dataset_kwargs: Dict[str, Any]) SFTDataset[source]

配置一个自定义视觉问答数据集,其中包含用户问题、图像和模型响应的单独列。

此构建器函数可用于直接从 yaml 配置文件配置自定义视觉问答数据集,作为 SFTDataset 的替代方案,因为它旨在方便配置。

数据集应遵循以下格式

|  input          |  image          |  output          |
|-----------------|-----------------|------------------|
| "user prompt"   | images/1.jpg    | "model response" |

如果您的列名不同,您可以使用 column_map 参数来更改预期的列名。例如,如果您的数据集具有列 "question""answer""picture",您可以使用

column_map = {“input”: “question”, “output”: “answer”, “image”: “picture”}

参数:
  • model_transform (Transform) – 应用于样本的模型特定预处理的可调用对象。这包括分词和任何特定模态的转换。预计至少返回 "tokens""mask" 键。

  • source (str) – Hugging Face 上数据集存储库的路径。对于本地数据集,将 source 定义为数据文件类型(例如“json”、“csv”、“text”),在 data_files 中传入文件路径,并将 split="train" 设置为“train”。有关更多详细信息,请参阅 Hugging Face 的 load_dataset

  • image_dir (str) – 包含图像的目录的路径,该路径将前置到数据集中的所有图像路径。例如,如果 image_dir="/home/user/dataset/"` 并且 样本 图像 路径 ``"images/1.jpg"``,则将加载的最终图像路径为 "/home/user/dataset/images/1.jpg"。如果为 None,则假定图像在当前工作目录中可用或位于远程 URL 上。对于仅文本,请保留为 None。默认为 None。

  • column_map (Optional[Dict[str, str]]) – 用于将预期的“input”、“output”和“image”列名更改为数据集中的实际列名的映射。键应为“input”、“output”和“image”,值应为实际列名。默认为 None,保留默认的“input”和“output”以及“image”列名。

  • new_system_prompt (Optional[str]) – 如果指定,则前置系统消息。这可以用作指导模型响应的说明。设置此项将覆盖数据集中已存在的任何系统消息。默认为 None。

  • packed (bool) – 是否在训练前将数据集打包到 max_seq_len。默认为 False。

  • filter_fn (Optional[Callable]) – 用于在任何预处理之前过滤数据集的可调用对象。有关更多详细信息,请参阅 Hugging Face 文档

  • split (str) – datasets.load_datasetsplit 参数。您可以使用此参数加载给定拆分的子集,例如 split="train[:10%]"。默认为“train”。

  • **load_dataset_kwargs (Dict[str, Any]) – 要传递给 load_dataset 的其他关键字参数,例如 data_filessplit

示例

my_dataset.json
[
    {
        "question": "What is presented on the image?",
        "answer": "PyTorch logo.",
        "picture": "rgb_pytorch.png"
    },
    {
        ...
    },
    ...,
]
>>> from torchtune.datasets.multimodal import vqa_dataset
>>> dataset = vqa_dataset(
...     model_transform=model_transform,
...     source="json",
...     data_files="my_dataset.json",
...     column_map={
...         "input": "question",
...         "output": "answer",
...         "image": "picture"
...     },
...     split="train",
... )
>>> tokens = dataset[0]["tokens"]
>>> model_transform.decode(tokens)
"What is presented on the image?PyTorch logo."

这也可以通过 yaml 配置文件完成

dataset:
  _component_: torchtune.datasets.multimodal.vqa_dataset
  source: json
  data_files: my_dataset.json
  column_map:
    input: question
    output: answer
    image: picture
  split: train
返回:

配置的 SFTDataset

返回类型:

SFTDataset

引发:

ValueError – 如果 packed 为 True,则尚不支持多模态数据集。

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

获取面向初学者和高级开发者的深入教程

查看教程

资源

查找开发资源并获得问题解答

查看资源