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 [源代码]¶
配置一个自定义的视觉问答数据集,其中包含用户问题、图片和模型响应的独立列。
此构建器函数可用于直接从 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"
。更多详细信息请参阅 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]) – 如果指定,则在前面添加一个系统消息。这可以作为指导模型响应的指令。设置此参数将 OVERRIDE(覆盖)数据集中已有的任何系统消息。默认值为 None。
packed (bool) – 是否在训练前将数据集打包到
max_seq_len
。默认值为 False。filter_fn (Optional[Callable]) – 用于在任何预处理之前过滤数据集的可调用对象。更多详细信息请参阅 Hugging Face 文档。
split (str) –
datasets.load_dataset
的split
参数。您可以使用此参数加载给定分割的子集,例如split="train[:10%]"
. 默认值为“train”。**load_dataset_kwargs (Dict[str, Any]) – 传递给
load_dataset
的额外关键字参数,例如data_files
或split
。
示例
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
- 返回类型:
- 引发:
ValueError – 如果
packed
为 True,目前尚不支持多模态数据集的打包。