Files
modelscope/docs/source/tutorials/trainer.md
wenmeng.zwm b3f4ac8acc [to #43115042] add trainer usage doc
1. add trainer doc
2. support local configuration file for trainer
3. update nlp trainer test

Link: https://code.alibaba-inc.com/Ali-MaaS/MaaS-lib/codereview/9541239
2022-07-29 10:28:50 +08:00

2.3 KiB
Raw Blame History

Trainer使用教程

Modelscope提供了众多预训练模型你可以使用其中任意一个利用公开数据集或者私有数据集针对特定任务进行模型训练在本篇文章中将介绍如何使用Modelscope的Trainer模块进行Finetuning和评估。

环境准备

详细步骤可以参考 快速开始

准备数据集

在开始Finetuning前需要准备一个数据集用以训练和评估详细可以参考数据集使用教程。

临时写法我们通过数据集接口创建一个虚假的dataset

from datasets import Dataset
dataset_dict = {
    'sentence1': [
        'This is test sentence1-1', 'This is test sentence2-1',
        'This is test sentence3-1'
    ],
    'sentence2': [
        'This is test sentence1-2', 'This is test sentence2-2',
        'This is test sentence3-2'
    ],
    'label': [0, 1, 1]
}
train_dataset = MsDataset.from_hf_dataset(Dataset.from_dict(dataset_dict))
eval_dataset = MsDataset.from_hf_dataset(Dataset.from_dict(dataset_dict))

训练

ModelScope把所有训练相关的配置信息全部放到了模型仓库下的configuration.json因此我们只需要创建Trainer加载配置文件传入数据集即可完成训练。

首先通过工厂方法创建Trainer 需要传入模型仓库路径, 训练数据集对象,评估数据集对象,训练目录

kwargs = dict(
    model='damo/nlp_structbert_sentiment-classification_chinese-base',
    train_dataset=train_dataset,
    eval_dataset=eval_dataset,
    work_dir='work_dir')

trainer = build_trainer(default_args=kwargs)

启动训练。

trainer.train()

如果需要调整训练参数,可以在模型仓库页面下载configuration.json文件到本地修改参数后指定配置文件路径创建trainer

kwargs = dict(
    model='damo/nlp_structbert_sentiment-classification_chinese-base',
    train_dataset=train_dataset,
    eval_dataset=eval_dataset,
    cfg_file='你的配置文件路径'
    work_dir='work_dir')

trainer = build_trainer(default_args=kwargs)
trainer.train()

评估

训练过程中会定期使用验证集进行评估测试, Trainer模块也支持指定特定轮次保存的checkpoint路径进行单次评估。

eval_results = trainer.evaluate('work_dir/epoch_10.pth')
print(eval_results)