mindformers.dataset.MultiTurnDataset
- class mindformers.dataset.MultiTurnDataset(dataset_config: dict = None)[源代码]
多轮对话数据集。 生成的数据集有两列 [input_ids, labels] 。列 input_ids 为int32类型。列 labels 为int32类型。
- 参数:
dataset_config (dict) - 必选。数据集配置信息,必须是至少包含以下键值对的字典。
data_loader - 对应值必须是包含data loader配置信息的字典。 data_loader 的键可以是"type"、"dataset_dir"和"shuffle"。
"type"
- 必选。数据集的类型。必须是 str 或 type 类型。"dataset_dir"
- 必选。数据集文件所在路径。"shuffle"
- 必选。指示是否混洗数据集。必须是 bool 类型。
tokenizer - 对应值必须是包含分词器配置信息的字典,或一个分词器实例。
max_seq_length - 序列的最大长度。
batch_size - 每个批次的大小。
drop_remainder - 是否在最后一个批次的数据项数小于批次大小时,丢弃最后一个批次。
num_parallel_workers - 并行执行数据映射处理的进程/线程数。
python_multiprocessing - 是否启用Python的Multi-Process模块以加速映射操作。
repeat - 数据集重复的次数。
seed - 随机数种子。
prefetch_size - 流水线中每个数据处理操作的缓存队列大小。
numa_enable - 是否采用NUMA绑定函数。
- 返回:
MultiTurnDataset 实例。
- 异常:
ValueError - Python版本低于3.9。
ValueError - dataset_config.data_loader 中缺少 dataset_dir 或 dataset_config.data_loader.dataset_dir 指示的路径不存在。
ValueError - 词元数和预测词元的损失掩膜数不一致。
ValueError - 输入词元的索引数和标签数不一致。
样例:
>>> from mindformers import MultiTurnDataset >>> from mindformers.tools.register import MindFormerConfig >>> from mindformers.dataset import check_dataset_config >>> # Note: >>> # `"/path/to/tool_alpaca.jsonl"` should be replaced with the real path of the formatted dataset file. >>> # `"/path/to/tokenizer.model"` should be replaced with the real path of the tokenizer file. >>> # The detailed data setting could refer to >>> # https://gitee.com/mindspore/mindformers/blob/dev/docs/model_cards/glm3.md >>> config_dict = { ... 'data_loader': { ... 'type': 'ToolAlpacaDataLoader', ... 'dataset_dir': "/path/to/tool_alpaca.jsonl", ... 'shuffle': True ... }, ... 'tokenizer': { ... 'type': 'ChatGLM3Tokenizer', ... 'vocab_file': '/path/to/tokenizer.model' ... }, ... 'max_seq_length': 2048, ... 'batch_size': 1, ... 'drop_remainder': True, ... 'num_parallel_workers': 8, ... 'python_multiprocessing': False, ... 'repeat': 1, ... 'seed': 0, ... 'prefetch_size': 1, ... 'numa_enable': False, ... } >>> # Initialize a MindFormerConfig instance with a dict. >>> config = MindFormerConfig(**config_dict) >>> check_dataset_config(config) >>> # use class to build dataset >>> dataset_from_class = MultiTurnDataset(config)