change sentiment-classification branch

Link: https://code.alibaba-inc.com/Ali-MaaS/MaaS-lib/codereview/9662406

    * bug fix for nlp backbone-head trainers
This commit is contained in:
zhangzhicheng.zzc
2022-08-06 22:00:26 +08:00
committed by yingda.chen
parent 7a5ba8e017
commit 0874089f6c
3 changed files with 12 additions and 88 deletions

View File

@@ -3,7 +3,8 @@ import unittest
from modelscope.hub.snapshot_download import snapshot_download
from modelscope.models import Model
from modelscope.models.nlp import SbertForSequenceClassification
from modelscope.models.nlp.task_models.sequence_classification import \
SequenceClassificationModel
from modelscope.pipelines import pipeline
from modelscope.pipelines.nlp import SingleSentenceClassificationPipeline
from modelscope.preprocessors import SingleSentenceClassificationPreprocessor
@@ -11,15 +12,15 @@ from modelscope.utils.constant import Tasks
from modelscope.utils.test_utils import test_level
class SentimentClassificationTest(unittest.TestCase):
model_id = 'damo/nlp_structbert_sentiment-classification_chinese-tiny'
class SentimentClassificationTaskModelTest(unittest.TestCase):
model_id = 'damo/nlp_structbert_sentiment-classification_chinese-base'
sentence1 = '启动的时候很大声音然后就会听到1.2秒的卡察的声音,类似齿轮摩擦的声音'
@unittest.skipUnless(test_level() >= 2, 'skip test in current test level')
def test_run_with_direct_file_download(self):
cache_path = snapshot_download(self.model_id)
tokenizer = SingleSentenceClassificationPreprocessor(cache_path)
model = SbertForSequenceClassification.from_pretrained(
model = SequenceClassificationModel.from_pretrained(
self.model_id, num_labels=2)
pipeline1 = SingleSentenceClassificationPipeline(
model, preprocessor=tokenizer)
@@ -32,10 +33,6 @@ class SentimentClassificationTest(unittest.TestCase):
print()
print(f'sentence1: {self.sentence1}\n'
f'pipeline1: {pipeline2(input=self.sentence1)}')
self.assertTrue(
isinstance(pipeline1.model, SbertForSequenceClassification))
self.assertTrue(
isinstance(pipeline2.model, SbertForSequenceClassification))
@unittest.skipUnless(test_level() >= 2, 'skip test in current test level')
def test_run_with_model_from_modelhub(self):
@@ -47,23 +44,22 @@ class SentimentClassificationTest(unittest.TestCase):
preprocessor=tokenizer)
print(pipeline_ins(input=self.sentence1))
self.assertTrue(
isinstance(pipeline_ins.model, SbertForSequenceClassification))
isinstance(pipeline_ins.model, SequenceClassificationModel))
@unittest.skipUnless(test_level() >= 0, 'skip test in current test level')
def test_run_with_model_name(self):
pipeline_ins = pipeline(
task=Tasks.sentiment_classification, model=self.model_id)
print(pipeline_ins(input=self.sentence1))
print(pipeline_ins.model.__class__)
self.assertTrue(
isinstance(pipeline_ins.model, SbertForSequenceClassification))
isinstance(pipeline_ins.model, SequenceClassificationModel))
@unittest.skipUnless(test_level() >= 2, 'skip test in current test level')
@unittest.skipUnless(test_level() >= 0, 'skip test in current test level')
def test_run_with_default_model(self):
pipeline_ins = pipeline(task=Tasks.sentiment_classification)
print(pipeline_ins(input=self.sentence1))
self.assertTrue(
isinstance(pipeline_ins.model, SbertForSequenceClassification))
isinstance(pipeline_ins.model, SequenceClassificationModel))
if __name__ == '__main__':

View File

@@ -1,70 +0,0 @@
# Copyright (c) Alibaba, Inc. and its affiliates.
import unittest
from modelscope.hub.snapshot_download import snapshot_download
from modelscope.models import Model
from modelscope.models.nlp.task_models.sequence_classification import \
SequenceClassificationModel
from modelscope.pipelines import pipeline
from modelscope.pipelines.nlp import SingleSentenceClassificationPipeline
from modelscope.preprocessors import SingleSentenceClassificationPreprocessor
from modelscope.utils.constant import Tasks
from modelscope.utils.test_utils import test_level
class SentimentClassificationTaskModelTest(unittest.TestCase):
model_id = 'damo/nlp_structbert_sentiment-classification_chinese-base'
sentence1 = '启动的时候很大声音然后就会听到1.2秒的卡察的声音,类似齿轮摩擦的声音'
@unittest.skip
def test_run_with_direct_file_download(self):
cache_path = snapshot_download(self.model_id)
tokenizer = SingleSentenceClassificationPreprocessor(cache_path)
model = SequenceClassificationModel.from_pretrained(
self.model_id, num_labels=2)
pipeline1 = SingleSentenceClassificationPipeline(
model, preprocessor=tokenizer)
pipeline2 = pipeline(
Tasks.sentiment_classification,
model=model,
preprocessor=tokenizer,
model_revision='beta')
print(f'sentence1: {self.sentence1}\n'
f'pipeline1:{pipeline1(input=self.sentence1)}')
print()
print(f'sentence1: {self.sentence1}\n'
f'pipeline1: {pipeline2(input=self.sentence1)}')
@unittest.skip
def test_run_with_model_from_modelhub(self):
model = Model.from_pretrained(self.model_id, revision='beta')
tokenizer = SingleSentenceClassificationPreprocessor(model.model_dir)
pipeline_ins = pipeline(
task=Tasks.sentiment_classification,
model=model,
preprocessor=tokenizer)
print(pipeline_ins(input=self.sentence1))
self.assertTrue(
isinstance(pipeline_ins.model, SequenceClassificationModel))
@unittest.skip
def test_run_with_model_name(self):
pipeline_ins = pipeline(
task=Tasks.sentiment_classification,
model=self.model_id,
model_revision='beta')
print(pipeline_ins(input=self.sentence1))
self.assertTrue(
isinstance(pipeline_ins.model, SequenceClassificationModel))
@unittest.skip
def test_run_with_default_model(self):
pipeline_ins = pipeline(
task=Tasks.sentiment_classification, model_revision='beta')
print(pipeline_ins(input=self.sentence1))
self.assertTrue(
isinstance(pipeline_ins.model, SequenceClassificationModel))
if __name__ == '__main__':
unittest.main()

View File

@@ -53,8 +53,7 @@ class TestTrainerWithNlp(unittest.TestCase):
model=model_id,
train_dataset=self.dataset,
eval_dataset=self.dataset,
work_dir=self.tmp_dir,
model_revision='beta')
work_dir=self.tmp_dir)
trainer = build_trainer(default_args=kwargs)
trainer.train()
@@ -70,7 +69,7 @@ class TestTrainerWithNlp(unittest.TestCase):
@unittest.skipUnless(test_level() >= 1, 'skip test in current test level')
def test_trainer_with_user_defined_config(self):
model_id = 'damo/nlp_structbert_sentiment-classification_chinese-base'
cfg = read_config(model_id, revision='beta')
cfg = read_config(model_id)
cfg.train.max_epochs = 20
cfg.train.work_dir = self.tmp_dir
cfg_file = os.path.join(self.tmp_dir, 'config.json')
@@ -79,8 +78,7 @@ class TestTrainerWithNlp(unittest.TestCase):
model=model_id,
train_dataset=self.dataset,
eval_dataset=self.dataset,
cfg_file=cfg_file,
model_revision='beta')
cfg_file=cfg_file)
trainer = build_trainer(default_args=kwargs)
trainer.train()