快捷方式

instruct_dataset

torchtune.datasets.instruct_dataset(tokenizer: ModelTokenizer, *, source: str, column_map: Optional[Dict[str, str]] = None, train_on_input: bool = False, new_system_prompt: Optional[str] = None, packed: bool = False, **load_dataset_kwargs: Dict[str, Any]) Union[SFTDataset, PackedDataset][源代码]

使用用户指令提示和模型响应配置自定义数据集。

此构建器函数可用于直接从 yaml 配置中配置自定义指令数据集,作为 SFTDataset 的替代方案,因为它可以进行配置友好。

数据集应遵循以下格式

|  input          |  output          |
|-----------------|------------------|
| "user prompt"   | "model response" |

如果您的列名不同,您可以使用 column_map 参数更改预期的列名。例如,如果您的数据集包含 "question""answer" 列,您可以使用

column_map = {"input": "question", "output": "answer"}

训练期间提示的屏蔽由 train_on_input 标志控制,默认情况下设置为 False - 如果 train_on_input 为 True,则在训练期间使用提示并对损失做出贡献。 - 如果 train_on_input 为 False,则提示会被屏蔽(标记替换为 -100)

参数:
  • tokenizer (ModelTokenizer) – 模型使用的分词器,该分词器实现了 tokenize_messages 方法。

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

  • column_map (Optional[Dict[str, str]]) – 用于将预期的“input”和“output”列名更改为数据集中实际列名的映射。键应为“input”和“output”,值应为实际列名。默认为 None,保留默认的“input”和“output”列名。

  • train_on_input (bool) – 模型是否在用户提示上进行训练。默认为 False。

  • new_system_prompt (Optional[str]) – 如果指定,则添加系统消息。这可以作为指导模型响应的说明。默认为 None。

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

  • **load_dataset_kwargs (Dict[str, Any]) – 传递给 load_dataset 的其他关键字参数,例如 data_filessplit

示例

my_dataset.json
[
    {
        "question": "What time is it in London?",
        "answer": "It is 10:00 AM in London.",
    },
    {
        ...
    },
    ...,
]
>>> from torchtune.datasets import instruct_dataset
>>> dataset = instruct_dataset(
...     tokenizer=tokenizer,
...     source="json",
...     data_files="my_dataset.json",
...     column_map={
...         "input": "question",
...         "output": "answer",
...     },
...     train_on_input=False,
...     packed=False,
...     split="train",
... )
>>> tokens = dataset[0]["tokens"]
>>> tokenizer.decode(tokens)
"What time is it in London?It is 10:00 AM in London."

这也可以通过 yaml 配置来实现

dataset:
  _component_: torchtune.datasets.instruct_dataset
  source: json
  data_files: my_dataset.json
  column_map:
    input: question
    output: answer
  train_on_input: False
  packed: False
  split: train
返回值:

配置的 SFTDataset

PackedDataset 如果 packed=True

返回类型:

Union[SFTDataset, PackedDataset]

引发:

ValueError – 如果 packed=Truetokenizer.max_seq_len 未设置。

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

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

查看教程

资源

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

查看资源