test_examples.py 4.22 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# coding=utf-8
# Copyright 2018 HuggingFace Inc..
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
Aymeric Augustin's avatar
Aymeric Augustin committed
15

16
17

import argparse
18
import logging
Aymeric Augustin's avatar
Aymeric Augustin committed
19
20
import sys
import unittest
Aymeric Augustin's avatar
Aymeric Augustin committed
21
from unittest.mock import patch
Aymeric Augustin's avatar
Aymeric Augustin committed
22
23
24

import run_generation
import run_glue
Julien Chaumond's avatar
Julien Chaumond committed
25
import run_language_modeling
Aymeric Augustin's avatar
Aymeric Augustin committed
26
27
import run_squad

28

29
30
31
logging.basicConfig(level=logging.DEBUG)

logger = logging.getLogger()
32

33

34
35
def get_setup_file():
    parser = argparse.ArgumentParser()
36
    parser.add_argument("-f")
37
38
39
40
    args = parser.parse_args()
    return args.f


41
class ExamplesTests(unittest.TestCase):
42
43
44
45
    def test_run_glue(self):
        stream_handler = logging.StreamHandler(sys.stdout)
        logger.addHandler(stream_handler)

46
47
48
49
50
51
52
53
54
55
56
57
58
59
        testargs = [
            "run_glue.py",
            "--data_dir=./examples/tests_samples/MRPC/",
            "--task_name=mrpc",
            "--do_train",
            "--do_eval",
            "--output_dir=./examples/tests_samples/temp_dir",
            "--per_gpu_train_batch_size=2",
            "--per_gpu_eval_batch_size=1",
            "--learning_rate=1e-4",
            "--max_steps=10",
            "--warmup_steps=2",
            "--overwrite_output_dir",
            "--seed=42",
Julien Chaumond's avatar
Julien Chaumond committed
60
            "--max_seq_length=128",
61
        ]
Julien Chaumond's avatar
Julien Chaumond committed
62
63
        model_name = "--model_name_or_path=bert-base-uncased"
        with patch.object(sys, "argv", testargs + [model_name]):
64
            result = run_glue.main()
Julien Chaumond's avatar
Julien Chaumond committed
65
            del result["loss"]
66
67
            for value in result.values():
                self.assertGreaterEqual(value, 0.75)
68

Julien Chaumond's avatar
Julien Chaumond committed
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
    def test_run_language_modeling(self):
        stream_handler = logging.StreamHandler(sys.stdout)
        logger.addHandler(stream_handler)

        testargs = """
            run_language_modeling.py
            --model_name_or_path distilroberta-base
            --model_type roberta
            --mlm
            --line_by_line
            --train_data_file ./tests/fixtures/sample_text.txt
            --eval_data_file ./tests/fixtures/sample_text.txt
            --output_dir ./tests/fixtures
            --overwrite_output_dir
            --do_train
            --do_eval
            --num_train_epochs=1
            --no_cuda
            """.split()
        with patch.object(sys, "argv", testargs):
            result = run_language_modeling.main()
            self.assertLess(result["perplexity"], 35)

92
93
94
95
    def test_run_squad(self):
        stream_handler = logging.StreamHandler(sys.stdout)
        logger.addHandler(stream_handler)

96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
        testargs = [
            "run_squad.py",
            "--data_dir=./examples/tests_samples/SQUAD",
            "--model_name=bert-base-uncased",
            "--output_dir=./examples/tests_samples/temp_dir",
            "--max_steps=10",
            "--warmup_steps=2",
            "--do_train",
            "--do_eval",
            "--version_2_with_negative",
            "--learning_rate=2e-4",
            "--per_gpu_train_batch_size=2",
            "--per_gpu_eval_batch_size=1",
            "--overwrite_output_dir",
            "--seed=42",
        ]
        model_type, model_name = ("--model_type=bert", "--model_name_or_path=bert-base-uncased")
        with patch.object(sys, "argv", testargs + [model_type, model_name]):
114
            result = run_squad.main()
115
116
            self.assertGreaterEqual(result["f1"], 30)
            self.assertGreaterEqual(result["exact"], 30)
117

118
119
120
121
    def test_generation(self):
        stream_handler = logging.StreamHandler(sys.stdout)
        logger.addHandler(stream_handler)

122
123
124
        testargs = ["run_generation.py", "--prompt=Hello", "--length=10", "--seed=42"]
        model_type, model_name = ("--model_type=openai-gpt", "--model_name_or_path=openai-gpt")
        with patch.object(sys, "argv", testargs + [model_type, model_name]):
125
            result = run_generation.main()
126
            self.assertGreaterEqual(len(result[0]), 10)