AdaSeq目前使用配置文件来控制模型的组装、训练和评估,配置文件支持yaml json jsonline格式。
以resume.yaml为例,一个配置文件通常包括下面几个域:
experiment: ...
task: ...
dataset: ...
preprocessor: ...
data_collator: ...
model: ...
train: ...
evaluation: ...注:默认值为/表示该参数为必填项。
| 参数 | 说明 | 参数类型 | 默认值 |
|---|---|---|---|
| exp_dir | 实验目录 | str | experiments |
| exp_name | 实验名称,所有输出将会保存到./${exp_dir}/${exp_name}/${datetime}/ |
str | unknown |
| seed | 随机数种子 | int | 42 |
task无子参数,目前支持下列值(也可见metainfo):
- word-segmentation
- part-of-speech
- named-entity-recognition
- relation-extraction
- entity-typing
数据集参数组合较复杂,建议参考自定义数据集。
| 参数 | 说明 | 参数类型 | 默认值 |
|---|---|---|---|
| task | 任务类型 | str | None |
| name | modelscope数据集名称,如damo/resume_ner |
str | None |
| path | huggingface数据集名称,如conll2003 |
str | None |
| data_file | 数据文件,可以是url、本地目录或本地压缩包,也可以是一个包含train valid test的字典 |
str/dict | None |
| data_type | 数据格式,用于指定数据读取方法 | str | None |
| transform | 数据后处理,可包含name key scheme等字段 |
dict | None |
| labels | 标签集,可以直接传入标签列表labels: ['O', 'B-ORG', ...],或传入标签文件或urllabels: PATH_OR_URL,或设置函数从数据集中统计 |
str/list/dict | None |
| access_token | 用于访问modelscope或huggingface的私有数据仓库 | str | None |
| 参数 | 说明 | 参数类型 | 默认值 |
|---|---|---|---|
| type | preprocessor类型 | str | / |
| model_dir | tokenizer名称或目录 | str | / |
| is_word2vec | 是否使用Lookup Table | bool | False |
| tokenizer_kwargs | tokenizer其他参数 | dict | None |
| max_length | 最大句子长度(subtoken-level) | int | 512 |
data_collator无子参数,目前支持下列值(也可见metainfo):
- DataCollatorWithPadding
- SequenceLabelingDataCollatorWithPadding
- SpanExtractionDataCollatorWithPadding
- MultiLabelSpanTypingDataCollatorWithPadding
- MultiLabelConcatTypingDataCollatorWithPadding
| 参数 | 子参数 | 说明 | 参数类型 | 默认值 |
|---|---|---|---|---|
| type | 模型类型 | str | / | |
| embedder | 表征学习器,通常是一个预训练模型 | dict | None | |
| └ | type | embedder类型,使用ms/hf时可不填 | str | None |
| └ | model_name_or_path | 预训练模型名称或路径,支持ms&hf | str | / |
| encoder | 对句子表征做进一步encode,如LSTM等 |
dict | None | |
| └ | type | encoder类型 | str | / |
| decoder | 开发中 | dict | None |
| 参数 | 子参数 | 说明 | 参数类型 | 默认值 |
|---|---|---|---|---|
| trainer | 训练器类型 | str | None | |
| max_epochs | 最大epoch数 | int | / | |
| dataloader | 数据读取器 | dict | / | |
| └ | batch_size_per_gpu | 每块gpu上的batch size | int | / |
| └ | workers_per_gpu | 每块gpu上的数据读取进程数 | int | 0 |
| optimizer | 优化器 | dict | None | |
| └ | type | 优化器类型 | str | / |
| └ | lr | 学习率 | float | / |
| └ | options | 可指定优化器其他参数,如grad_clip: max_norm: 2.0 |
dict | None |
| └ | param_groups | 模型参数组,支持正则表达式自定义学习率 | list | None |
| └ | └ regex | 正则表达式,用于指定模型参数组 | str | / |
| └ | └ lr | 特定模型参数组的学习率 | float | / |
| lr_scheduler | 学习率规划器 | dict | None | |
| └ | type | 学习率规划器类型,支持pytorch所有lr_scheduler(注意pytorch版本是否包含该lr_scheduler) | str | / |
| └ | options | 学习率规划器其他参数 | dict | None |
| hooks | 回调函数,详见ModelScope官方文档 | list | None |
| 参数 | 子参数 | 说明 | 参数类型 | 默认值 |
|---|---|---|---|---|
| dataloader | 数据读取器 | dict | / | |
| └ | batch_size_per_gpu | 每块gpu上的batch size | int | / |
| └ | workers_per_gpu | 每块gpu上的数据读取进程数 | int | 0 |
| metrics | 评价指标 | list | None | |
| └ | type | 评价指标类型 | str | / |