快捷方式

the_cauldron_dataset

torchtune.datasets.multimodal.the_cauldron_dataset(model_transform: Transform, *, subset: str, source: str = 'HuggingFaceM4/the_cauldron', column_map: Optional[Dict[str, str]] = None, new_system_prompt: Optional[str] = None, packed: bool = False, split: str = 'train', **load_dataset_kwargs: Dict[str, Any]) SFTDataset[源代码]

支持与来自 Hugging Face 数据集的 The Cauldron 类似的一系列图像 + 文本数据集。

The Cauldron 包含多个数据集。您必须使用 subset 参数指定其中一个数据集。

模型转换应该是一个可调用对象,它应用于模型特定的预处理步骤。对于多模态数据集,这至少应该包含分词器和图像转换。在数据集转换为 Message 列表后,分词器将文本序列转换为令牌 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

参数:
  • model_transform (Transform) – 模型特定的转换类,接受样本字典并对键应用自定义转换。它应该至少包含两个部分:文本分词(调用“messages”字段)和图像转换(调用“images”字段)。模型转换返回的键应与模型预期输入保持一致。

  • subset (str) – 要加载的数据集子集的名称。有关选项,请参阅 数据集卡片

  • source (str) – Hugging Face 上数据集存储库的路径。对于本地数据集,将源定义为数据文件类型(例如,“json”、“csv”、“text”)并在 data_files 中传递文件路径。有关更多详细信息,请参阅 Hugging Faceload_dataset。默认值为 HuggingFaceM4/the_cauldron

  • column_map (可选[Dict[str, str]]) – 用于将预期“图像”和“文本”列名称映射到数据集中的实际列名称的映射。默认值为 None,保留默认列名称。

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

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

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

  • **load_dataset_kwargs (Dict[str, Any]) – 传递给 load_dataset 的额外关键字参数。有关更多详细信息,请参阅 Hugging Face 的 API 参考

返回:

使用源数据和变换配置的数据集

返回类型:

SFTDataset

引发:

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

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

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

查看教程

资源

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

查看资源