alpaca_dataset¶
- torchtune.datasets.alpaca_dataset(tokenizer: ModelTokenizer, *, source: str = 'tatsu-lab/alpaca', column_map: Optional[Dict[str, str]] = None, train_on_input: bool = True, packed: bool = False, filter_fn: Optional[Callable] = None, split: str = 'train', **load_dataset_kwargs: Dict[str, Any]) Union[SFTDataset, PackedDataset][源代码]¶
支持来自 Hugging Face Datasets 的 Alpaca 风格数据集家族,使用数据输入格式和原始 alpaca 代码库中的提示模板,其中
instruction、input和output是数据集中的字段。此模板会自动应用,独立于分词器中配置的任何提示模板。训练期间对提示的屏蔽由
train_on_input标志控制,该标志默认为True。 - 如果train_on_input为 True,则在训练期间使用提示并计入损失。 - 如果train_on_input为 False,则提示被屏蔽(token 被替换为 -100)。- 参数:
tokenizer (ModelTokenizer) – 模型使用的分词器,实现了
tokenize_messages方法。source (str) – Hugging Face 上数据集仓库的路径。对于本地数据集,将 source 定义为数据文件类型(例如,“json”、“csv”、“text”),并在
data_files中传入文件路径。更多详细信息请参见 Hugging Face 的load_dataset。默认为tatsu-lab/alpaca。column_map (Optional[Dict[str, str]]) – 从消息转换
AlpacaToMessages中期望的列到数据集中新列名的映射。键应为“instruction”、“input”和“output”,值应为实际的列名。如果为 None,则使用tatsu-lab/alpaca中默认的列名"instruction"、"input"和"output"。train_on_input (bool) – 模型是否在提示上训练。默认为 True。
packed (bool) – 是否在训练前将数据集打包到
max_seq_len。默认为 False。filter_fn (Optional[Callable]) – 用于在任何预处理之前过滤数据集的可调用对象。更多详细信息请参见 Hugging Face 文档。
split (str) –
datasets.load_dataset的split参数。你可以使用此参数加载给定 split 的子集,例如split="train[:10%]"。默认为“train”。**load_dataset_kwargs (Dict[str, Any]) – 传递给
load_dataset的额外关键字参数。更多详细信息请参见 Hugging Face 的 API 参考。
- 返回:
使用源数据和转换配置的数据集
- 返回类型:
Union[SFTDataset, PackedDataset]
- 抛出:
ValueError – 如果
packed为 True 且分词器上未设置max_seq_len。
示例
>>> alpaca_ds = alpaca_dataset(tokenizer=tokenizer) >>> for batch in Dataloader(alpaca_ds, batch_size=8): >>> print(f"Batch size: {len(batch)}") >>> Batch size: 8