the_cauldron_dataset¶
- torchtune.datasets.multimodal.the_cauldron_dataset(model_transform: 转换, *, subset: str, source: str = 'HuggingFaceM4/the_cauldron', 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]¶
支持类似于来自Hugging Face数据集的The Cauldron的图像+文本数据集系列。
大锅由众多数据集组成。您必须使用
subset参数指定其中一个数据集。模型转换应是一个可调用的对象,用于应用特定于模型的预处理步骤。对于多模态数据集,这至少应包含一个分词器和一个图像转换器。分词器将在数据集转换为
消息列表后将文本序列转换为标记ID。图像转换器将加载图像并根据模型的要求进行处理。这里是一个用于说明的最小示例:
from torchtune.models.llama3 import llama3_tokenizer from torchtune.models.clip import CLIPImageTransform from torchtune.modules.transforms import Transform class MyModelTransform(Transform): def __init__( self, tokenizer_path: str, max_seq_len: Optional[int] = None, ): self.tokenizer = llama3_tokenizer(tokenizer_path) self.image_transform = CLIPImageTransform() def __call__(self, sample: Mapping[str, Any]) -> Mapping[str, Any]: tokens, mask = self.tokenizer.tokenize_messages(sample["messages"]) images = self.image_transform(sample["images"]) return { "tokens": tokens, "mask": mask, "images": images, }
有关模型转换和消息转换的更多详细信息,请参见
SFTDataset。- Parameters:
model_transform (Transform) – 模型特定的转换类,它接收一个样本字典并对键应用自定义转换。它至少应包含两个组件:文本分词(在“messages”字段上调用)和图像转换(在“images”字段上调用)。模型转换返回的键应与模型预期的输入对齐。
source (str) – Hugging Face 上数据集仓库的路径。对于本地数据集,将 source 定义为数据文件类型(例如“json”、“csv”、“text”),并在
data_files中传递文件路径。有关更多详细信息,请参阅 Hugging Face 的load_dataset。默认值为HuggingFaceM4/the_cauldron。column_map (可选[字典[str, str]]) – 一个映射,用于将预期的“images”和“texts”列名更改为数据集中实际的列名。默认值为None,保持默认列名。
new_system_prompt (可选[str]) – 如果指定,将预置一条系统消息。这可以作为指导模型响应的指令。设置此选项将覆盖数据集中已存在的任何系统消息。默认值为 None。
packed (bool) – 是否在训练前将数据集打包到
max_seq_len。默认值为False。filter_fn (可选[Callable]) – 用于在预处理之前过滤数据集的可调用对象。有关更多详细信息,请参阅Hugging Face的文档。
split (str) –
split参数用于datasets.load_dataset。您可以使用此参数加载给定拆分的子集,例如split="train[:10%]"。默认值为“train”。**load_dataset_kwargs (Dict[str, Any]) – 传递给
load_dataset的额外关键字参数。有关更多详细信息,请参阅 Hugging Face 的 API 参考。
- Returns:
数据集配置了源数据和转换
- Return type:
- Raises:
ValueError – 如果
packed为 True,目前还不支持多模态数据集。
示例
>>> cauldron_ds = the_cauldron_dataset(model_transform=model_transform, subset="ai2d") >>> for batch in Dataloader(cauldron_ds, batch_size=8): >>> print(f"Batch size: {len(batch)}") >>> Batch size: 8