add training args support and image classification fintune example
design doc: https://yuque.antfin.com/pai/rwqgvl/khy4uw5dgi39s6ke
usage:
```python
from modelscope.trainers.training_args import (ArgAttr, MSArgumentParser,
training_args)
training_args.topk = ArgAttr(cfg_node_name=['train.evaluation.metric_options.topk',
'evaluation.metric_options.topk'],
default=(1,), help='evaluation using topk, tuple format, eg (1,), (1,5)')
training_args.train_data = ArgAttr(type=str, default='tany0699/cats_and_dogs', help='train dataset')
training_args.validation_data = ArgAttr(type=str, default='tany0699/cats_and_dogs', help='validation dataset')
training_args.model_id = ArgAttr(type=str, default='damo/cv_vit-base_image-classification_ImageNet-labels', help='model name')
parser = MSArgumentParser(training_args)
cfg_dict = parser.get_cfg_dict()
args = parser.args
train_dataset = create_dataset(args.train_data, split='train')
val_dataset = create_dataset(args.validation_data, split='validation')
def cfg_modify_fn(cfg):
cfg.merge_from_dict(cfg_dict)
return cfg
kwargs = dict(
model=args.model_id, # model id
train_dataset=train_dataset, # training dataset
eval_dataset=val_dataset, # validation dataset
cfg_modify_fn=cfg_modify_fn # callback to modify configuration
)
trainer = build_trainer(name=Trainers.image_classification, default_args=kwargs)
# start to train
trainer.train()
```
Link: https://code.alibaba-inc.com/Ali-MaaS/MaaS-lib/codereview/11225071
2022-12-30 07:35:15 +08:00
|
|
|
import os
|
2023-02-10 05:32:21 +00:00
|
|
|
from dataclasses import dataclass, field
|
2023-01-11 10:43:56 +08:00
|
|
|
|
2023-05-22 10:53:18 +08:00
|
|
|
from modelscope import MsDataset, TrainingArgs
|
add training args support and image classification fintune example
design doc: https://yuque.antfin.com/pai/rwqgvl/khy4uw5dgi39s6ke
usage:
```python
from modelscope.trainers.training_args import (ArgAttr, MSArgumentParser,
training_args)
training_args.topk = ArgAttr(cfg_node_name=['train.evaluation.metric_options.topk',
'evaluation.metric_options.topk'],
default=(1,), help='evaluation using topk, tuple format, eg (1,), (1,5)')
training_args.train_data = ArgAttr(type=str, default='tany0699/cats_and_dogs', help='train dataset')
training_args.validation_data = ArgAttr(type=str, default='tany0699/cats_and_dogs', help='validation dataset')
training_args.model_id = ArgAttr(type=str, default='damo/cv_vit-base_image-classification_ImageNet-labels', help='model name')
parser = MSArgumentParser(training_args)
cfg_dict = parser.get_cfg_dict()
args = parser.args
train_dataset = create_dataset(args.train_data, split='train')
val_dataset = create_dataset(args.validation_data, split='validation')
def cfg_modify_fn(cfg):
cfg.merge_from_dict(cfg_dict)
return cfg
kwargs = dict(
model=args.model_id, # model id
train_dataset=train_dataset, # training dataset
eval_dataset=val_dataset, # validation dataset
cfg_modify_fn=cfg_modify_fn # callback to modify configuration
)
trainer = build_trainer(name=Trainers.image_classification, default_args=kwargs)
# start to train
trainer.train()
```
Link: https://code.alibaba-inc.com/Ali-MaaS/MaaS-lib/codereview/11225071
2022-12-30 07:35:15 +08:00
|
|
|
from modelscope.metainfo import Trainers
|
|
|
|
|
from modelscope.trainers.builder import build_trainer
|
2023-02-10 05:32:21 +00:00
|
|
|
|
|
|
|
|
|
2023-05-22 10:53:18 +08:00
|
|
|
@dataclass(init=False)
|
2023-02-10 05:32:21 +00:00
|
|
|
class ImageClassificationTrainingArgs(TrainingArgs):
|
|
|
|
|
num_classes: int = field(
|
|
|
|
|
default=None,
|
|
|
|
|
metadata={
|
|
|
|
|
'cfg_node': [
|
|
|
|
|
'model.mm_model.head.num_classes',
|
|
|
|
|
'model.mm_model.train_cfg.augments.0.num_classes',
|
|
|
|
|
'model.mm_model.train_cfg.augments.1.num_classes'
|
|
|
|
|
],
|
|
|
|
|
'help':
|
|
|
|
|
'number of classes',
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
topk: tuple = field(
|
|
|
|
|
default=None,
|
|
|
|
|
metadata={
|
|
|
|
|
'cfg_node': [
|
|
|
|
|
'train.evaluation.metric_options.topk',
|
|
|
|
|
'evaluation.metric_options.topk'
|
|
|
|
|
],
|
|
|
|
|
'help':
|
|
|
|
|
'evaluation using topk, tuple format, eg (1,), (1,5)',
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
warmup_iters: str = field(
|
|
|
|
|
default=None,
|
|
|
|
|
metadata={
|
|
|
|
|
'cfg_node': 'train.lr_config.warmup_iters',
|
|
|
|
|
'help': 'The warmup iters',
|
|
|
|
|
})
|
add training args support and image classification fintune example
design doc: https://yuque.antfin.com/pai/rwqgvl/khy4uw5dgi39s6ke
usage:
```python
from modelscope.trainers.training_args import (ArgAttr, MSArgumentParser,
training_args)
training_args.topk = ArgAttr(cfg_node_name=['train.evaluation.metric_options.topk',
'evaluation.metric_options.topk'],
default=(1,), help='evaluation using topk, tuple format, eg (1,), (1,5)')
training_args.train_data = ArgAttr(type=str, default='tany0699/cats_and_dogs', help='train dataset')
training_args.validation_data = ArgAttr(type=str, default='tany0699/cats_and_dogs', help='validation dataset')
training_args.model_id = ArgAttr(type=str, default='damo/cv_vit-base_image-classification_ImageNet-labels', help='model name')
parser = MSArgumentParser(training_args)
cfg_dict = parser.get_cfg_dict()
args = parser.args
train_dataset = create_dataset(args.train_data, split='train')
val_dataset = create_dataset(args.validation_data, split='validation')
def cfg_modify_fn(cfg):
cfg.merge_from_dict(cfg_dict)
return cfg
kwargs = dict(
model=args.model_id, # model id
train_dataset=train_dataset, # training dataset
eval_dataset=val_dataset, # validation dataset
cfg_modify_fn=cfg_modify_fn # callback to modify configuration
)
trainer = build_trainer(name=Trainers.image_classification, default_args=kwargs)
# start to train
trainer.train()
```
Link: https://code.alibaba-inc.com/Ali-MaaS/MaaS-lib/codereview/11225071
2022-12-30 07:35:15 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def create_dataset(name, split):
|
|
|
|
|
namespace, dataset_name = name.split('/')
|
2023-01-11 10:43:56 +08:00
|
|
|
return MsDataset.load(
|
|
|
|
|
dataset_name, namespace=namespace, subset_name='default', split=split)
|
add training args support and image classification fintune example
design doc: https://yuque.antfin.com/pai/rwqgvl/khy4uw5dgi39s6ke
usage:
```python
from modelscope.trainers.training_args import (ArgAttr, MSArgumentParser,
training_args)
training_args.topk = ArgAttr(cfg_node_name=['train.evaluation.metric_options.topk',
'evaluation.metric_options.topk'],
default=(1,), help='evaluation using topk, tuple format, eg (1,), (1,5)')
training_args.train_data = ArgAttr(type=str, default='tany0699/cats_and_dogs', help='train dataset')
training_args.validation_data = ArgAttr(type=str, default='tany0699/cats_and_dogs', help='validation dataset')
training_args.model_id = ArgAttr(type=str, default='damo/cv_vit-base_image-classification_ImageNet-labels', help='model name')
parser = MSArgumentParser(training_args)
cfg_dict = parser.get_cfg_dict()
args = parser.args
train_dataset = create_dataset(args.train_data, split='train')
val_dataset = create_dataset(args.validation_data, split='validation')
def cfg_modify_fn(cfg):
cfg.merge_from_dict(cfg_dict)
return cfg
kwargs = dict(
model=args.model_id, # model id
train_dataset=train_dataset, # training dataset
eval_dataset=val_dataset, # validation dataset
cfg_modify_fn=cfg_modify_fn # callback to modify configuration
)
trainer = build_trainer(name=Trainers.image_classification, default_args=kwargs)
# start to train
trainer.train()
```
Link: https://code.alibaba-inc.com/Ali-MaaS/MaaS-lib/codereview/11225071
2022-12-30 07:35:15 +08:00
|
|
|
|
|
|
|
|
|
2023-05-22 10:53:18 +08:00
|
|
|
training_args = ImageClassificationTrainingArgs(
|
|
|
|
|
model='damo/cv_vit-base_image-classification_ImageNet-labels',
|
|
|
|
|
max_epochs=1,
|
|
|
|
|
lr=1e-4,
|
|
|
|
|
optimizer='AdamW',
|
|
|
|
|
warmup_iters=1,
|
|
|
|
|
topk=(1, )).parse_cli()
|
|
|
|
|
config, args = training_args.to_config()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def cfg_modify_fn(cfg):
|
|
|
|
|
if args.use_model_config:
|
|
|
|
|
cfg.merge_from_dict(config)
|
2023-02-10 05:32:21 +00:00
|
|
|
else:
|
2023-05-22 10:53:18 +08:00
|
|
|
cfg = config
|
|
|
|
|
return cfg
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def train():
|
|
|
|
|
train_dataset = create_dataset(
|
|
|
|
|
training_args.train_dataset_name, split=training_args.train_split)
|
|
|
|
|
val_dataset = create_dataset(
|
|
|
|
|
training_args.val_dataset_name, split=training_args.val_split)
|
add training args support and image classification fintune example
design doc: https://yuque.antfin.com/pai/rwqgvl/khy4uw5dgi39s6ke
usage:
```python
from modelscope.trainers.training_args import (ArgAttr, MSArgumentParser,
training_args)
training_args.topk = ArgAttr(cfg_node_name=['train.evaluation.metric_options.topk',
'evaluation.metric_options.topk'],
default=(1,), help='evaluation using topk, tuple format, eg (1,), (1,5)')
training_args.train_data = ArgAttr(type=str, default='tany0699/cats_and_dogs', help='train dataset')
training_args.validation_data = ArgAttr(type=str, default='tany0699/cats_and_dogs', help='validation dataset')
training_args.model_id = ArgAttr(type=str, default='damo/cv_vit-base_image-classification_ImageNet-labels', help='model name')
parser = MSArgumentParser(training_args)
cfg_dict = parser.get_cfg_dict()
args = parser.args
train_dataset = create_dataset(args.train_data, split='train')
val_dataset = create_dataset(args.validation_data, split='validation')
def cfg_modify_fn(cfg):
cfg.merge_from_dict(cfg_dict)
return cfg
kwargs = dict(
model=args.model_id, # model id
train_dataset=train_dataset, # training dataset
eval_dataset=val_dataset, # validation dataset
cfg_modify_fn=cfg_modify_fn # callback to modify configuration
)
trainer = build_trainer(name=Trainers.image_classification, default_args=kwargs)
# start to train
trainer.train()
```
Link: https://code.alibaba-inc.com/Ali-MaaS/MaaS-lib/codereview/11225071
2022-12-30 07:35:15 +08:00
|
|
|
|
|
|
|
|
kwargs = dict(
|
2023-02-10 05:32:21 +00:00
|
|
|
model=args.model, # model id
|
add training args support and image classification fintune example
design doc: https://yuque.antfin.com/pai/rwqgvl/khy4uw5dgi39s6ke
usage:
```python
from modelscope.trainers.training_args import (ArgAttr, MSArgumentParser,
training_args)
training_args.topk = ArgAttr(cfg_node_name=['train.evaluation.metric_options.topk',
'evaluation.metric_options.topk'],
default=(1,), help='evaluation using topk, tuple format, eg (1,), (1,5)')
training_args.train_data = ArgAttr(type=str, default='tany0699/cats_and_dogs', help='train dataset')
training_args.validation_data = ArgAttr(type=str, default='tany0699/cats_and_dogs', help='validation dataset')
training_args.model_id = ArgAttr(type=str, default='damo/cv_vit-base_image-classification_ImageNet-labels', help='model name')
parser = MSArgumentParser(training_args)
cfg_dict = parser.get_cfg_dict()
args = parser.args
train_dataset = create_dataset(args.train_data, split='train')
val_dataset = create_dataset(args.validation_data, split='validation')
def cfg_modify_fn(cfg):
cfg.merge_from_dict(cfg_dict)
return cfg
kwargs = dict(
model=args.model_id, # model id
train_dataset=train_dataset, # training dataset
eval_dataset=val_dataset, # validation dataset
cfg_modify_fn=cfg_modify_fn # callback to modify configuration
)
trainer = build_trainer(name=Trainers.image_classification, default_args=kwargs)
# start to train
trainer.train()
```
Link: https://code.alibaba-inc.com/Ali-MaaS/MaaS-lib/codereview/11225071
2022-12-30 07:35:15 +08:00
|
|
|
train_dataset=train_dataset, # training dataset
|
2023-01-11 10:43:56 +08:00
|
|
|
eval_dataset=val_dataset, # validation dataset
|
2023-05-22 10:53:18 +08:00
|
|
|
cfg_modify_fn=cfg_modify_fn # callback to modify configuration
|
add training args support and image classification fintune example
design doc: https://yuque.antfin.com/pai/rwqgvl/khy4uw5dgi39s6ke
usage:
```python
from modelscope.trainers.training_args import (ArgAttr, MSArgumentParser,
training_args)
training_args.topk = ArgAttr(cfg_node_name=['train.evaluation.metric_options.topk',
'evaluation.metric_options.topk'],
default=(1,), help='evaluation using topk, tuple format, eg (1,), (1,5)')
training_args.train_data = ArgAttr(type=str, default='tany0699/cats_and_dogs', help='train dataset')
training_args.validation_data = ArgAttr(type=str, default='tany0699/cats_and_dogs', help='validation dataset')
training_args.model_id = ArgAttr(type=str, default='damo/cv_vit-base_image-classification_ImageNet-labels', help='model name')
parser = MSArgumentParser(training_args)
cfg_dict = parser.get_cfg_dict()
args = parser.args
train_dataset = create_dataset(args.train_data, split='train')
val_dataset = create_dataset(args.validation_data, split='validation')
def cfg_modify_fn(cfg):
cfg.merge_from_dict(cfg_dict)
return cfg
kwargs = dict(
model=args.model_id, # model id
train_dataset=train_dataset, # training dataset
eval_dataset=val_dataset, # validation dataset
cfg_modify_fn=cfg_modify_fn # callback to modify configuration
)
trainer = build_trainer(name=Trainers.image_classification, default_args=kwargs)
# start to train
trainer.train()
```
Link: https://code.alibaba-inc.com/Ali-MaaS/MaaS-lib/codereview/11225071
2022-12-30 07:35:15 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# in distributed training, specify pytorch launcher
|
|
|
|
|
if 'MASTER_ADDR' in os.environ:
|
|
|
|
|
kwargs['launcher'] = 'pytorch'
|
|
|
|
|
|
2023-01-11 10:43:56 +08:00
|
|
|
trainer = build_trainer(
|
|
|
|
|
name=Trainers.image_classification, default_args=kwargs)
|
add training args support and image classification fintune example
design doc: https://yuque.antfin.com/pai/rwqgvl/khy4uw5dgi39s6ke
usage:
```python
from modelscope.trainers.training_args import (ArgAttr, MSArgumentParser,
training_args)
training_args.topk = ArgAttr(cfg_node_name=['train.evaluation.metric_options.topk',
'evaluation.metric_options.topk'],
default=(1,), help='evaluation using topk, tuple format, eg (1,), (1,5)')
training_args.train_data = ArgAttr(type=str, default='tany0699/cats_and_dogs', help='train dataset')
training_args.validation_data = ArgAttr(type=str, default='tany0699/cats_and_dogs', help='validation dataset')
training_args.model_id = ArgAttr(type=str, default='damo/cv_vit-base_image-classification_ImageNet-labels', help='model name')
parser = MSArgumentParser(training_args)
cfg_dict = parser.get_cfg_dict()
args = parser.args
train_dataset = create_dataset(args.train_data, split='train')
val_dataset = create_dataset(args.validation_data, split='validation')
def cfg_modify_fn(cfg):
cfg.merge_from_dict(cfg_dict)
return cfg
kwargs = dict(
model=args.model_id, # model id
train_dataset=train_dataset, # training dataset
eval_dataset=val_dataset, # validation dataset
cfg_modify_fn=cfg_modify_fn # callback to modify configuration
)
trainer = build_trainer(name=Trainers.image_classification, default_args=kwargs)
# start to train
trainer.train()
```
Link: https://code.alibaba-inc.com/Ali-MaaS/MaaS-lib/codereview/11225071
2022-12-30 07:35:15 +08:00
|
|
|
# start to train
|
|
|
|
|
trainer.train()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
2023-02-10 05:32:21 +00:00
|
|
|
train()
|