|
3 | 3 | import torch
|
4 | 4 |
|
5 | 5 | from allennlp.common import Params
|
6 |
| -from allennlp.common.testing import AllenNlpTestCase |
| 6 | +from allennlp.common.testing import AllenNlpTestCase, requires_gpu |
7 | 7 | from allennlp.data import Vocabulary
|
8 | 8 | from allennlp.data.batch import Batch
|
9 | 9 | from allennlp.data.fields import TextField
|
|
15 | 15 |
|
16 | 16 |
|
17 | 17 | class TestPretrainedTransformerEmbedder(AllenNlpTestCase):
|
| 18 | + @requires_gpu |
18 | 19 | def test_forward_runs_when_initialized_from_params(self):
|
19 | 20 | # This code just passes things off to `transformers`, so we only have a very simple
|
20 | 21 | # test.
|
21 | 22 | params = Params({"model_name": "bert-base-uncased"})
|
22 |
| - embedder = PretrainedTransformerEmbedder.from_params(params) |
| 23 | + embedder = PretrainedTransformerEmbedder.from_params(params).cuda() |
23 | 24 | token_ids = torch.randint(0, 100, (1, 4))
|
24 | 25 | mask = torch.randint(0, 2, (1, 4)).bool()
|
25 |
| - output = embedder(token_ids=token_ids, mask=mask) |
| 26 | + output = embedder(token_ids=token_ids.cuda(), mask=mask.cuda()) |
26 | 27 | assert tuple(output.size()) == (1, 4, 768)
|
27 | 28 |
|
28 | 29 | @pytest.mark.parametrize(
|
@@ -169,22 +170,24 @@ def test_end_to_end_t5(
|
169 | 170 | assert bert_vectors.size() == (2, 8, 64)
|
170 | 171 | assert bert_vectors.requires_grad == (train_parameters or not last_layer_only)
|
171 | 172 |
|
| 173 | + @requires_gpu |
172 | 174 | def test_big_token_type_ids(self):
|
173 |
| - token_embedder = PretrainedTransformerEmbedder("roberta-base") |
| 175 | + token_embedder = PretrainedTransformerEmbedder("roberta-base").cuda() |
174 | 176 | token_ids = torch.LongTensor([[1, 2, 3], [2, 3, 4]])
|
175 | 177 | mask = torch.ones_like(token_ids).bool()
|
176 | 178 | type_ids = torch.zeros_like(token_ids)
|
177 | 179 | type_ids[1, 1] = 1
|
178 | 180 | with pytest.raises(ValueError):
|
179 |
| - token_embedder(token_ids, mask, type_ids) |
| 181 | + token_embedder(token_ids.cuda(), mask.cuda(), type_ids.cuda()) |
180 | 182 |
|
| 183 | + @requires_gpu |
181 | 184 | def test_xlnet_token_type_ids(self):
|
182 |
| - token_embedder = PretrainedTransformerEmbedder("xlnet-base-cased") |
| 185 | + token_embedder = PretrainedTransformerEmbedder("xlnet-base-cased").cuda() |
183 | 186 | token_ids = torch.LongTensor([[1, 2, 3], [2, 3, 4]])
|
184 | 187 | mask = torch.ones_like(token_ids).bool()
|
185 | 188 | type_ids = torch.zeros_like(token_ids)
|
186 | 189 | type_ids[1, 1] = 1
|
187 |
| - token_embedder(token_ids, mask, type_ids) |
| 190 | + token_embedder(token_ids.cuda(), mask.cuda(), type_ids.cuda()) |
188 | 191 |
|
189 | 192 | def test_long_sequence_splitting_end_to_end(self):
|
190 | 193 | # Mostly the same as the end_to_end test (except for adding max_length=4),
|
@@ -310,11 +313,14 @@ def test_unfold_long_sequences(self):
|
310 | 313 | )
|
311 | 314 | assert (unfolded_embeddings_out == unfolded_embeddings).all()
|
312 | 315 |
|
| 316 | + @requires_gpu |
313 | 317 | def test_encoder_decoder_model(self):
|
314 |
| - token_embedder = PretrainedTransformerEmbedder("facebook/bart-large", sub_module="encoder") |
| 318 | + token_embedder = PretrainedTransformerEmbedder( |
| 319 | + "facebook/bart-large", sub_module="encoder" |
| 320 | + ).cuda() |
315 | 321 | token_ids = torch.LongTensor([[1, 2, 3], [2, 3, 4]])
|
316 | 322 | mask = torch.ones_like(token_ids).bool()
|
317 |
| - token_embedder(token_ids, mask) |
| 323 | + token_embedder(token_ids.cuda(), mask.cuda()) |
318 | 324 |
|
319 | 325 | def test_embeddings_resize(self):
|
320 | 326 | regular_token_embedder = PretrainedTransformerEmbedder("bert-base-cased")
|
|
0 commit comments