Upload ms-swift/docs/source/Customization/自定义数据集.md with huggingface_hub
Browse files
ms-swift/docs/source/Customization/自定义数据集.md
ADDED
|
@@ -0,0 +1,232 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# 自定义数据集
|
| 2 |
+
|
| 3 |
+
自定义数据集的接入方法有三种,对预处理函数的控制能力逐渐加强,但接入难度逐步增加。例如,方案一最为方便,但对预处理函数的控制能力最弱,需要预先对数据集进行转换,传入特定格式的数据集:
|
| 4 |
+
1. 【推荐】直接使用命令行传参的方式接入,即`--dataset <dataset_path1> <dataset_path2>`。这将使用AutoPreprocessor将数据集转换为标准格式(支持4种数据集格式,具体查看下面对AutoPreprocessor的介绍)。你可以使用`--columns`进行列名转换。支持传入csv、json、jsonl、txt、文件夹(例如git clone开源数据集)。该方案不需要修改dataset_info.json,适合刚接触ms-swift的用户,下面两种方案适合对ms-swift进行拓展的开发者。
|
| 5 |
+
2. 添加数据集到`dataset_info.json`中,可以参考ms-swift内置的[dataset_info.json](https://github.com/modelscope/ms-swift/blob/main/swift/llm/dataset/data/dataset_info.json)。该方案也将使用AutoPreprocessor将数据集转换为标准格式。dataset_info.json为数据集元信息的list,每一项元信息必填ms_dataset_id/hf_dataset_id/dataset_path中的一项,通过`columns`字段进行列名转换。添加到`dataset_info.json`或者注册的数据集在运行[run_dataset_info.py](https://github.com/modelscope/ms-swift/blob/main/scripts/utils/run_dataset_info.py)时将自动产生[支持的数据集文档](https://swift.readthedocs.io/zh-cn/latest/Instruction/%E6%94%AF%E6%8C%81%E7%9A%84%E6%A8%A1%E5%9E%8B%E5%92%8C%E6%95%B0%E6%8D%AE%E9%9B%86.html)。此外,你可以采用外接`dataset_info.json`的方式,使用`--custom_dataset_info xxx.json`解析json文件(方便pip install而非git clone的用户),然后指定`--dataset <dataset_id/dataset_dir/dataset_path>`。
|
| 6 |
+
3. 手动注册数据集,具有最灵活的预处理函数定制能力,支持使用函数对数据集进行预处理,但难度较高。可以参考[内置数据集](https://github.com/modelscope/ms-swift/blob/main/swift/llm/dataset/dataset/llm.py)或者[examples](https://github.com/modelscope/swift/blob/main/examples/custom)中的样例。你可以通过指定`--custom_register_path xxx.py`解析外置注册内容(方便pip install而非git clone的用户)。
|
| 7 |
+
- 方案一和二在实现中借助了方案三,只是注册的过程为自动发生。
|
| 8 |
+
|
| 9 |
+
以下将对`AutoPreprocessor`可以处理的数据集格式进行介绍:
|
| 10 |
+
|
| 11 |
+
ms-swift的标准数据集格式可接受的keys包括: 'messages'、'rejected_response'、'label'、'images'、'videos'、'audios'、'tools'和'objects'。其中'messages'是必需的key,'rejected_response'用于DPO等RLHF训练,'label'用于KTO训练和分类模型训练,'images'、'videos'、'audios'用于存储多模态数据的路径或者url,'tools'用于Agent任务,'objects'用于grounding任务。
|
| 12 |
+
|
| 13 |
+
ms-swift中存在三种核心预处理器:`MessagesPreprocessor`、`AlpacaPreprocessor`、`ResponsePreprocessor`。MessagesPreprocessor用于将类messages和sharegpt格式的数据集转换为标准格式,AlpacaPreprocessor则转换alpaca格式的数据集,ResponsePreprocessor则转换类query/response格式的数据集。`AutoPreprocessor`则自动选择合适的预处理进行处理。
|
| 14 |
+
|
| 15 |
+
以下四种格式在`AutoPreprocessor`处理下都会转换成ms-swift标准格式中的messages字段,即都可以直接使用`--dataset <dataset-path>`接入:
|
| 16 |
+
|
| 17 |
+
messages格式(标准格式):
|
| 18 |
+
```jsonl
|
| 19 |
+
{"messages": [{"role": "system", "content": "<system>"}, {"role": "user", "content": "<query1>"}, {"role": "assistant", "content": "<response1>"}, {"role": "user", "content": "<query2>"}, {"role": "assistant", "content": "<response2>"}]}
|
| 20 |
+
```
|
| 21 |
+
- 注意:system部分是可选的。数据集中的system优先级高于命令行传入的`--system`,最后是定义在template中的`default_system`。
|
| 22 |
+
|
| 23 |
+
sharegpt格式:
|
| 24 |
+
```jsonl
|
| 25 |
+
{"system": "<system>", "conversation": [{"human": "<query1>", "assistant": "<resonse1>"}, {"human": "<query2>", "assistant": "<resonse2>"}]}
|
| 26 |
+
```
|
| 27 |
+
|
| 28 |
+
alpaca格式:
|
| 29 |
+
```jsonl
|
| 30 |
+
{"system": "<system>", "instruction": "<query-inst>", "input": "<query-input>", "output": "<response>"}
|
| 31 |
+
```
|
| 32 |
+
|
| 33 |
+
query-response格式:
|
| 34 |
+
```jsonl
|
| 35 |
+
{"system": "<system>", "query": "<query2>", "response": "<response2>", "history": [["<query1>", "<response1>"]]}
|
| 36 |
+
```
|
| 37 |
+
|
| 38 |
+
## 标准数据集格式
|
| 39 |
+
|
| 40 |
+
以下给出ms-swift的标准数据集格式,其中system字段是可选的,默认使用template中定义的`default_system`。之前介绍的4种数据集格式也可以被AutoPreprocessor处理成标准数据集格式。
|
| 41 |
+
|
| 42 |
+
### 预训练
|
| 43 |
+
|
| 44 |
+
```jsonl
|
| 45 |
+
{"messages": [{"role": "assistant", "content": "I love music"}]}
|
| 46 |
+
{"messages": [{"role": "assistant", "content": "教练我要打篮球"}]}
|
| 47 |
+
{"messages": [{"role": "assistant", "content": "西红柿鸡蛋盖饭和地三鲜盖饭哪个更权威"}]}
|
| 48 |
+
```
|
| 49 |
+
|
| 50 |
+
### 监督微调
|
| 51 |
+
|
| 52 |
+
```jsonl
|
| 53 |
+
{"messages": [{"role": "system", "content": "你是个有用无害的助手"}, {"role": "user", "content": "告诉我明天��天气"}, {"role": "assistant", "content": "明天天气晴朗"}]}
|
| 54 |
+
{"messages": [{"role": "system", "content": "你是个有用无害的数学计算器"}, {"role": "user", "content": "1+1等于几"}, {"role": "assistant", "content": "等于2"}, {"role": "user", "content": "再加1呢"}, {"role": "assistant", "content": "等于3"}]}
|
| 55 |
+
```
|
| 56 |
+
|
| 57 |
+
### RLHF
|
| 58 |
+
|
| 59 |
+
#### DPO/ORPO/CPO/SimPO/RM
|
| 60 |
+
|
| 61 |
+
```jsonl
|
| 62 |
+
{"messages": [{"role": "system", "content": "你是个有用无害的助手"}, {"role": "user", "content": "告诉我明天的天气"}, {"role": "assistant", "content": "明天天气晴朗"}], "rejected_response": "我不知道"}
|
| 63 |
+
{"messages": [{"role": "system", "content": "你是个有用无害的数学计算器"}, {"role": "user", "content": "1+1等于几"}, {"role": "assistant", "content": "等于2"}, {"role": "user", "content": "再加1呢"}, {"role": "assistant", "content": "等于3"}], "rejected_response": "我不知道"}
|
| 64 |
+
```
|
| 65 |
+
|
| 66 |
+
#### KTO
|
| 67 |
+
|
| 68 |
+
```jsonl
|
| 69 |
+
{"messages": [{"role": "system", "content": "你是个有用无害的助手"}, {"role": "user", "content": "告诉我明天的天气"}, {"role": "assistant", "content": "我不知道"}], "label": false}
|
| 70 |
+
{"messages": [{"role": "system", "content": "你是个有用无害的数学计算器"}, {"role": "user", "content": "1+1等于几"}, {"role": "assistant", "content": "等于2"}, {"role": "user", "content": "再加1呢"}, {"role": "assistant", "content": "等于3"}], "label": true}
|
| 71 |
+
```
|
| 72 |
+
|
| 73 |
+
#### PPO/GRPO
|
| 74 |
+
|
| 75 |
+
```jsonl
|
| 76 |
+
{"messages": [{"role": "system", "content": "你是个有用无害的助手"}, {"role": "user", "content": "告诉我明天的天气"}]}
|
| 77 |
+
{"messages": [{"role": "system", "content": "你是个有用无害的数学计算器"}, {"role": "user", "content": "1+1等于几"}, {"role": "assistant", "content": "等于2"}, {"role": "user", "content": "再加1呢"}]}
|
| 78 |
+
{"messages": [{"role": "user", "content": "你的名字是什么"}]}
|
| 79 |
+
```
|
| 80 |
+
- 注意:GRPO会透传所有额外的字段内容给ORM,而不像其他训练方法,默认将额外的字段删除。例如: 你可以额外传入'solution'。自定义的ORM需要包含一个位置参数completions,其他为关键词参数,由数据集额外字段透传。
|
| 81 |
+
|
| 82 |
+
|
| 83 |
+
### 序列分类
|
| 84 |
+
|
| 85 |
+
**单标签任务**:
|
| 86 |
+
```jsonl
|
| 87 |
+
{"messages": [{"role": "user", "content": "今天天气真好呀"}], "label": 1}
|
| 88 |
+
{"messages": [{"role": "user", "content": "今天真倒霉"}], "label": 0}
|
| 89 |
+
{"messages": [{"role": "user", "content": "好开心"}], "label": 1}
|
| 90 |
+
```
|
| 91 |
+
**多标签任务**:
|
| 92 |
+
```jsonl
|
| 93 |
+
{"messages": [{"role": "user", "content": "<sentence>"}], "label": [1, 3, 5]}
|
| 94 |
+
```
|
| 95 |
+
|
| 96 |
+
**单回归任务**:
|
| 97 |
+
```jsonl
|
| 98 |
+
{"messages": [{"role": "user", "content": "求两句话的相似度,范围为0-1。\nsentence1: <sentence1>\nsentence2: <sentence2>"}], "label": 0.8}
|
| 99 |
+
```
|
| 100 |
+
**多回归任务**:
|
| 101 |
+
|
| 102 |
+
```jsonl
|
| 103 |
+
{"messages": [{"role": "user", "content": "<sentence>"}], "label": [1.2, -0.6, 0.8]}
|
| 104 |
+
```
|
| 105 |
+
|
| 106 |
+
### Embedding
|
| 107 |
+
|
| 108 |
+
请参考[embedding训练文档](../BestPractices/Embedding训练.md#数据集格式)
|
| 109 |
+
|
| 110 |
+
### 多模态
|
| 111 |
+
|
| 112 |
+
对于多模态数据集,和上述任务的格式相同。区别在于增加了`images`, `videos`, `audios`几个key,分别代表多模态资源的url或者path(推荐使用绝对路径),`<image>` `<video>` `<audio>`标签代表了插入图片/视频/音频的位置,ms-swift支持多图片/视频/音频的情况。这些特殊tokens将在预处理的时候进行替换,参考[这里](https://github.com/modelscope/ms-swift/blob/main/swift/llm/template/template/qwen.py#L198)。下面给出的四条示例分别展示了纯文本,以及包含图像、视频和音频数据的数据格式。
|
| 113 |
+
|
| 114 |
+
预训练:
|
| 115 |
+
```
|
| 116 |
+
{"messages": [{"role": "assistant", "content": "预训练的文本在这里"}]}
|
| 117 |
+
{"messages": [{"role": "assistant", "content": "<image>是一只小狗,<image>是一只小猫"}], "images": ["/xxx/x.jpg", "/xxx/x.png"]}
|
| 118 |
+
{"messages": [{"role": "assistant", "content": "<audio>描述了今天天气真不错"}], "audios": ["/xxx/x.wav"]}
|
| 119 |
+
{"messages": [{"role": "assistant", "content": "<image>是一个大象,<video>是一只狮子在跑步"}], "images": ["/xxx/x.jpg"], "videos": ["/xxx/x.mp4"]}
|
| 120 |
+
```
|
| 121 |
+
|
| 122 |
+
微调:
|
| 123 |
+
```jsonl
|
| 124 |
+
{"messages": [{"role": "user", "content": "浙江的省会在哪?"}, {"role": "assistant", "content": "浙江的省会在杭州。"}]}
|
| 125 |
+
{"messages": [{"role": "user", "content": "<image><image>两张图片有什么区别"}, {"role": "assistant", "content": "前一张是小猫,后一张是小狗"}], "images": ["/xxx/x.jpg", "/xxx/x.png"]}
|
| 126 |
+
{"messages": [{"role": "user", "content": "<audio>语音说了什么"}, {"role": "assistant", "content": "今天天气真好呀"}], "audios": ["/xxx/x.mp3"]}
|
| 127 |
+
{"messages": [{"role": "system", "content": "你是个有用无害的助手"}, {"role": "user", "content": "<image>图片中是什么,<video>视频中是什么"}, {"role": "assistant", "content": "图片中是一个大象,视频中是一只小狗在草地上奔跑"}], "images": ["/xxx/x.jpg"], "videos": ["/xxx/x.mp4"]}
|
| 128 |
+
```
|
| 129 |
+
|
| 130 |
+
多模态模型的RLHF和序列分类的数据格式可以参考���文本大模型的格式,并在此基础上增加`images`等字段。
|
| 131 |
+
|
| 132 |
+
#### grounding
|
| 133 |
+
|
| 134 |
+
如果是grounding(物体检测)任务,SWIFT支持两种方式:
|
| 135 |
+
1. 直接使用对应模型grounding任务的数据集格式,例如qwen2-vl的格式如下:
|
| 136 |
+
|
| 137 |
+
```jsonl
|
| 138 |
+
{"messages": [{"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "<image>描述图像"}, {"role": "assistant", "content": "<|object_ref_start|>一只狗<|object_ref_end|><|box_start|>(221,423),(569,886)<|box_end|>和<|object_ref_start|>一个女人<|object_ref_end|><|box_start|>(451,381),(733,793)<|box_end|>正在沙滩上玩耍"}], "images": ["/xxx/x.jpg"]}
|
| 139 |
+
{"messages": [{"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "<image>找到图像中的<|object_ref_start|>羊<|object_ref_end|>"}, {"role": "assistant", "content": "<|box_start|>(101,201),(150,266)<|box_end|><|box_start|>(401,601),(550,666)<|box_end|>"}], "images": ["/xxx/x.jpg"]}
|
| 140 |
+
{"messages": [{"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "<image>帮我打开谷歌浏览器"}, {"role": "assistant", "content": "Action: click(start_box='<|box_start|>(246,113)<|box_end|>')"}], "images": ["/xxx/x.jpg"]}
|
| 141 |
+
```
|
| 142 |
+
使用这种类型的数据需要注意:
|
| 143 |
+
- 不同模型grounding任务的特殊字符和数据集格式不同。
|
| 144 |
+
- 不同模型对bbox是否归一化的处理不同。例如:qwen2.5-vl使用绝对坐标,而qwen2-vl、internvl2.5需要对bbox的坐标进行千分位坐标归一化。
|
| 145 |
+
|
| 146 |
+
2. 使用SWIFT的grounding数据格式:
|
| 147 |
+
|
| 148 |
+
```jsonl
|
| 149 |
+
{"messages": [{"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "<image>描述图像"}, {"role": "assistant", "content": "<ref-object><bbox>和<ref-object><bbox>正在沙滩上玩耍"}], "images": ["/xxx/x.jpg"], "objects": {"ref": ["一只狗", "一个女人"], "bbox": [[331.5, 761.4, 853.5, 1594.8], [676.5, 685.8, 1099.5, 1427.4]]}}
|
| 150 |
+
{"messages": [{"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "<image>找到图像中的<ref-object>"}, {"role": "assistant", "content": "<bbox><bbox>"}], "images": ["/xxx/x.jpg"], "objects": {"ref": ["羊"], "bbox": [[90.9, 160.8, 135, 212.8], [360.9, 480.8, 495, 532.8]]}}
|
| 151 |
+
{"messages": [{"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "<image>帮我打开谷歌浏览器"}, {"role": "assistant", "content": "Action: click(start_box='<bbox>')"}], "images": ["/xxx/x.jpg"], "objects": {"ref": [], "bbox": [[615, 226]]}}
|
| 152 |
+
```
|
| 153 |
+
该格式将自动转换数据集格式为对应模型的grounding任务格式,且选择对应模型的bbox归一化方式。该格式比通用格式多了objects字段,该字段包含的字段有:
|
| 154 |
+
- ref: 用于替换`<ref-object>`。
|
| 155 |
+
- bbox: 用于替换`<bbox>`。若bbox中每个box长度为2,则代表x和y坐标,若box长度为4,则代表2个点的x和y坐标。
|
| 156 |
+
- bbox_type: 可选项为'real','norm1'。默认为'real',即bbox为真实bbox值。若是'norm1',则bbox已经归一化为0~1。
|
| 157 |
+
- image_id: 该参数只有当bbox_type为'real'时生效。代表bbox对应的图片是第几张,用于缩放bbox。索引从0开始,默认全为第0张。
|
| 158 |
+
|
| 159 |
+
### 文生图格式
|
| 160 |
+
|
| 161 |
+
```jsonl
|
| 162 |
+
{"messages": [{"role": "system", "content": "你是个有用无害的助手"}, {"role": "user", "content": "给我画出一个苹果"}, {"role": "assistant", "content": "<image>"}], "images": ["/xxx/x.jpg"]}
|
| 163 |
+
```
|
| 164 |
+
|
| 165 |
+
### Agent格式
|
| 166 |
+
|
| 167 |
+
Agent格式请参考[Agent文档](../Instruction/智能体的支持.md)。
|
| 168 |
+
|
| 169 |
+
|
| 170 |
+
## dataset_info.json
|
| 171 |
+
|
| 172 |
+
可以参考ms-swift内置的[dataset_info.json](https://github.com/modelscope/ms-swift/blob/main/swift/llm/dataset/data/dataset_info.json)。该方案使用AutoPreprocessor预处理函数将数据集转换为标准格式。dataset_info.json文件中包含了数据集元信息的list,以下为一些例子:
|
| 173 |
+
|
| 174 |
+
```json
|
| 175 |
+
[
|
| 176 |
+
{
|
| 177 |
+
"ms_dataset_id": "xxx/xxx"
|
| 178 |
+
},
|
| 179 |
+
{
|
| 180 |
+
"dataset_path": "<dataset_dir/dataset_path>"
|
| 181 |
+
},
|
| 182 |
+
{
|
| 183 |
+
"ms_dataset_id": "<dataset_id>",
|
| 184 |
+
"subsets": ["v1"],
|
| 185 |
+
"split": ["train", "validation"],
|
| 186 |
+
"columns": {
|
| 187 |
+
"input": "query",
|
| 188 |
+
"output": "response"
|
| 189 |
+
}
|
| 190 |
+
},
|
| 191 |
+
{
|
| 192 |
+
"ms_dataset_id": "<dataset_id>",
|
| 193 |
+
"hf_dataset_id": "<hf_dataset_id>",
|
| 194 |
+
"subsets": [{
|
| 195 |
+
"subset": "subset1",
|
| 196 |
+
"columns": {
|
| 197 |
+
"problem": "query",
|
| 198 |
+
"content": "response"
|
| 199 |
+
}
|
| 200 |
+
},
|
| 201 |
+
{
|
| 202 |
+
"subset": "subset2",
|
| 203 |
+
"columns": {
|
| 204 |
+
"messages": "_",
|
| 205 |
+
"new_messages": "messages"
|
| 206 |
+
}
|
| 207 |
+
}]
|
| 208 |
+
}
|
| 209 |
+
]
|
| 210 |
+
```
|
| 211 |
+
|
| 212 |
+
支持以下参数:
|
| 213 |
+
- ms_dataset_id: 参考DatasetMeta参数。
|
| 214 |
+
- hf_dataset_id: 参考DatasetMeta参数。
|
| 215 |
+
- dataset_path: 参考DatasetMeta参数。
|
| 216 |
+
- dataset_name: 参考DatasetMeta参数。
|
| 217 |
+
- subsets: 参考DatasetMeta参数。
|
| 218 |
+
- split: 参考DatasetMeta参数。
|
| 219 |
+
- columns: 在数据集进行预处理前,对数据集进行列名转换。
|
| 220 |
+
|
| 221 |
+
|
| 222 |
+
## 数据集注册
|
| 223 |
+
|
| 224 |
+
register_dataset会在`DATASET_MAPPING`中注册数���集,调用函数`register_dataset(dataset_meta)`即可完成数据集注册,其中dataset_meta将存储模型的元信息。DatasetMeta的参数列表如下:
|
| 225 |
+
- ms_dataset_id: ModelScope的dataset_id,默认为None。
|
| 226 |
+
- hf_dataset_id: HuggingFace的dataset_id,默认为None。
|
| 227 |
+
- dataset_path: dataset的本地路径(推荐使用绝对路径)。默认为None。
|
| 228 |
+
- dataset_name: 数据集别名,可以通过`--dataset <dataset_name>`指定数据集,这在dataset_path很长时很方便。默认为None。
|
| 229 |
+
- subsets: 子数据集的名字列表或者`SubsetDataset`对象的列表,默认为`['default']`。(只有dataset_id或者dataset_dir(git clone开源数据集)有子数据集和split的概念)。
|
| 230 |
+
- split: 默认为`['train']`。
|
| 231 |
+
- preprocess_func: 预处理函数或可调用对象,默认为`AutoPreprocessor()`。该预处理函数接口为传入`HfDataset`,并返回满足标准格式的`HfDataset`。
|
| 232 |
+
- load_function: 默认为`DatasetLoader.load`。若需要自定义载入函数,则该载入函数需返回满足标准格式的`HfDataset`,这将抛弃ms-swift的数据集载入机制,提供给用户最大的自由度。通常该参数不需要进行修改。
|