text_completion_dataset¶
- torchtune.datasets.text_completion_dataset(tokenizer: ModelTokenizer, source: str, column: str = 'text', add_eos: bool = True, packed: bool = False, split_across_pack: bool = True, split: str = 'train', filter_fn: Optional[Callable] = None, **load_dataset_kwargs: Dict[str, Any]) Union[TextCompletionDataset, PackedDataset] [源代码]¶
从类似于预训练中使用的数据集中类似于自由格式、非结构化文本语料库的可配置数据集中构建数据集。此方法应用于从 yaml 配置中配置自定义文本数据集,而不是直接使用
TextCompletionDataset
,因为它旨在对配置友好。- 参数:
tokenizer (ModelTokenizer) – 模型使用的分词器,该分词器实现了
tokenize_messages
方法。source (str) – Hugging Face 上数据集存储库的路径。对于本地数据集,将 source 定义为数据文件类型(例如“json”、“csv”、“text”),并在
data_files
中传递文件路径。有关更多详细信息,请参阅 Hugging Face 的load_dataset
(https://hugging-face.cn/docs/datasets/en/package_reference/loading_methods#datasets.load_dataset.path)。column (str) – 样本中包含文本数据的列的名称。这通常是 Hugging Face 数据集或表格数据所必需的。对于具有单列的本地数据集(例如非结构化 txt 文件),请使用默认值“text”,Hugging Face 数据集在加载到内存时使用此值。默认为“text”。
add_eos (bool) – 是否在序列末尾添加 EOS 标记。默认为 True。
packed (bool) – 是否在训练前将数据集打包到
max_seq_len
。默认为 False。split_across_pack (bool) – 如果包中的最后一个样本不适合
max_seq_len
,则将样本拆分到下一个包中,或将其完全移动到下一个包的开头。对于预训练,通常将其设置为 True 以进行通用文本补全。对于微调,通常将其设置为 False 以避免在指令微调中截断句子。如果packed=False
,则忽略此参数。默认为 True。split (str) –
datasets.load_dataset
的split
参数。您可以使用此参数加载给定拆分的子集,例如split="train[:10%]"
。默认为“train”。filter_fn (Optional[Callable]) – 在任何预处理之前用于过滤数据集的可调用对象。有关更多详细信息,请参阅 Hugging Face 文档。
**load_dataset_kwargs** (Dict[str, Any]) – 传递给
load_dataset
的其他关键字参数。
示例
>>> from torchtune.datasets import text_completion_dataset >>> dataset = text_completion_dataset( ... tokenizer=tokenizer, ... source="allenai/c4", ... column="text", ... data_dir="realnewslike", ... packed=False, ... split="train", ... )
这也可以通过 yaml 配置来实现
dataset: _component_: torchtune.datasets.text_completion_dataset source: allenai/c4 column: text data_dir: realnewslike packed: False split: train
- 返回值:
- 已配置的
TextCompletionDataset
或
PackedDataset
如果packed=True
- 已配置的
- 返回类型:
Union[TextCompletionDataset, PackedDataset]
- 引发异常:
ValueError – 如果
packed=True
且tokenizer.max_seq_len
未设置。