Browse Source

change sentiment-classification branch

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

    * bug fix for nlp backbone-head trainers
master
zhangzhicheng.zzc yingda.chen 3 years ago
parent
commit
0874089f6c
3 changed files with 12 additions and 88 deletions
  1. +9
    -13
      tests/pipelines/test_sentiment_classification.py
  2. +0
    -70
      tests/pipelines/test_sentiment_classification_task_model.py
  3. +3
    -5
      tests/trainers/test_trainer_with_nlp.py

+ 9
- 13
tests/pipelines/test_sentiment_classification.py 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__':


+ 0
- 70
tests/pipelines/test_sentiment_classification_task_model.py 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()

+ 3
- 5
tests/trainers/test_trainer_with_nlp.py 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()


Loading…
Cancel
Save