mirror of
https://github.com/modelscope/modelscope.git
synced 2026-07-13 05:48:59 +02:00
Link: https://code.alibaba-inc.com/Ali-MaaS/MaaS-lib/codereview/12643554 * add teardown for tests * add teardown for dialog_modeling_trainer,document_grounded_dialog_generate_trainer,document_grounded_dialog_rerank_trainer,document_grounded_dialog_retrieval_trainer,training_args,translation_evaluation_trainer,translation_trainer
140 lines
4.9 KiB
Python
140 lines
4.9 KiB
Python
# Copyright (c) Alibaba, Inc. and its affiliates.
|
|
|
|
import os
|
|
import shutil
|
|
import unittest
|
|
|
|
from modelscope.hub.snapshot_download import snapshot_download
|
|
from modelscope.metainfo import Trainers
|
|
from modelscope.trainers import build_trainer
|
|
from modelscope.utils.test_utils import test_level
|
|
|
|
|
|
def _setup():
|
|
model_id = 'damo/cv_tinynas_object-detection_damoyolo'
|
|
cache_path = snapshot_download(model_id)
|
|
return cache_path
|
|
|
|
|
|
class TestTinynasDamoyoloTrainerSingleGPU(unittest.TestCase):
|
|
|
|
def setUp(self):
|
|
self.model_id = 'damo/cv_tinynas_object-detection_damoyolo'
|
|
self.cache_path = _setup()
|
|
|
|
def tearDown(self) -> None:
|
|
super().tearDown()
|
|
shutil.rmtree('./workdirs')
|
|
|
|
@unittest.skipUnless(test_level() >= 0, 'skip test in current test level')
|
|
def test_trainer_from_scratch_singleGPU(self):
|
|
kwargs = dict(
|
|
cfg_file=os.path.join(self.cache_path, 'configuration.json'),
|
|
gpu_ids=[
|
|
0,
|
|
],
|
|
batch_size=2,
|
|
max_epochs=3,
|
|
num_classes=80,
|
|
base_lr_per_img=0.001,
|
|
cache_path=self.cache_path,
|
|
train_image_dir='./data/test/images/image_detection/images',
|
|
val_image_dir='./data/test/images/image_detection/images',
|
|
train_ann=
|
|
'./data/test/images/image_detection/annotations/coco_sample.json',
|
|
val_ann=
|
|
'./data/test/images/image_detection/annotations/coco_sample.json',
|
|
work_dir='./workdirs',
|
|
exp_name='damoyolo_s',
|
|
)
|
|
trainer = build_trainer(
|
|
name=Trainers.tinynas_damoyolo, default_args=kwargs)
|
|
trainer.train()
|
|
trainer.evaluate(
|
|
checkpoint_path=os.path.join('./workdirs/damoyolo_s',
|
|
'epoch_3_ckpt.pth'))
|
|
|
|
@unittest.skipUnless(test_level() >= 0, 'skip test in current test level')
|
|
def test_trainer_from_scratch_singleGPU_model_id(self):
|
|
kwargs = dict(
|
|
model=self.model_id,
|
|
gpu_ids=[
|
|
0,
|
|
],
|
|
batch_size=2,
|
|
max_epochs=3,
|
|
num_classes=80,
|
|
load_pretrain=True,
|
|
base_lr_per_img=0.001,
|
|
train_image_dir='./data/test/images/image_detection/images',
|
|
val_image_dir='./data/test/images/image_detection/images',
|
|
train_ann=
|
|
'./data/test/images/image_detection/annotations/coco_sample.json',
|
|
val_ann=
|
|
'./data/test/images/image_detection/annotations/coco_sample.json',
|
|
work_dir='./workdirs',
|
|
exp_name='damoyolo_s',
|
|
)
|
|
trainer = build_trainer(
|
|
name=Trainers.tinynas_damoyolo, default_args=kwargs)
|
|
trainer.train()
|
|
trainer.evaluate(
|
|
checkpoint_path=os.path.join(self.cache_path,
|
|
'damoyolo_tinynasL25_S.pt'))
|
|
|
|
@unittest.skip('multiGPU test is varified offline')
|
|
def test_trainer_from_scratch_multiGPU(self):
|
|
kwargs = dict(
|
|
cfg_file=os.path.join(self.cache_path, 'configuration.json'),
|
|
gpu_ids=[
|
|
0,
|
|
1,
|
|
],
|
|
batch_size=32,
|
|
max_epochs=3,
|
|
num_classes=1,
|
|
cache_path=self.cache_path,
|
|
train_image_dir='./data/test/images/image_detection/images',
|
|
val_image_dir='./data/test/images/image_detection/images',
|
|
train_ann=
|
|
'./data/test/images/image_detection/annotations/coco_sample.json',
|
|
val_ann=
|
|
'./data/test/images/image_detection/annotations/coco_sample.json',
|
|
work_dir='./workdirs',
|
|
exp_name='damoyolo_s',
|
|
)
|
|
trainer = build_trainer(
|
|
name=Trainers.tinynas_damoyolo, default_args=kwargs)
|
|
trainer.train()
|
|
|
|
@unittest.skipUnless(test_level() >= 0, 'skip test in current test level')
|
|
def test_trainer_finetune_singleGPU(self):
|
|
kwargs = dict(
|
|
cfg_file=os.path.join(self.cache_path, 'configuration.json'),
|
|
gpu_ids=[
|
|
0,
|
|
],
|
|
batch_size=16,
|
|
max_epochs=3,
|
|
num_classes=1,
|
|
load_pretrain=True,
|
|
pretrain_model=os.path.join(self.cache_path,
|
|
'damoyolo_tinynasL25_S.pt'),
|
|
cache_path=self.cache_path,
|
|
train_image_dir='./data/test/images/image_detection/images',
|
|
val_image_dir='./data/test/images/image_detection/images',
|
|
train_ann=
|
|
'./data/test/images/image_detection/annotations/coco_sample.json',
|
|
val_ann=
|
|
'./data/test/images/image_detection/annotations/coco_sample.json',
|
|
work_dir='./workdirs',
|
|
exp_name='damoyolo_s',
|
|
)
|
|
trainer = build_trainer(
|
|
name=Trainers.tinynas_damoyolo, default_args=kwargs)
|
|
trainer.train()
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|