Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
chenpangpang
transformers
Commits
02bdfc02
Unverified
Commit
02bdfc02
authored
Nov 10, 2020
by
Stas Bekman
Committed by
GitHub
Nov 10, 2020
Browse files
using multi_gpu consistently (#8446)
* s|multiple_gpu|multi_gpu|g; s|multigpu|multi_gpu|g' * doc
parent
b9356945
Changes
22
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
112 additions
and
112 deletions
+112
-112
.github/workflows/self-push.yml
.github/workflows/self-push.yml
+8
-8
.github/workflows/self-scheduled.yml
.github/workflows/self-scheduled.yml
+12
-12
docs/source/testing.rst
docs/source/testing.rst
+16
-16
examples/bert-loses-patience/test_run_glue_with_pabee.py
examples/bert-loses-patience/test_run_glue_with_pabee.py
+2
-2
examples/deebert/test_glue_deebert.py
examples/deebert/test_glue_deebert.py
+2
-2
examples/rag/test_distributed_retriever.py
examples/rag/test_distributed_retriever.py
+4
-4
examples/seq2seq/test_bash_script.py
examples/seq2seq/test_bash_script.py
+6
-6
examples/seq2seq/test_datasets.py
examples/seq2seq/test_datasets.py
+8
-8
examples/seq2seq/test_fsmt_bleu_score.py
examples/seq2seq/test_fsmt_bleu_score.py
+2
-2
examples/seq2seq/test_make_student.py
examples/seq2seq/test_make_student.py
+6
-6
examples/seq2seq/test_seq2seq_examples.py
examples/seq2seq/test_seq2seq_examples.py
+13
-13
examples/seq2seq/test_seq2seq_examples_multi_gpu.py
examples/seq2seq/test_seq2seq_examples_multi_gpu.py
+3
-3
examples/seq2seq/test_tatoeba_conversion.py
examples/seq2seq/test_tatoeba_conversion.py
+3
-3
examples/test_examples.py
examples/test_examples.py
+8
-8
examples/test_xla_examples.py
examples/test_xla_examples.py
+3
-3
examples/token-classification/test_ner_examples.py
examples/token-classification/test_ner_examples.py
+3
-3
src/transformers/testing_utils.py
src/transformers/testing_utils.py
+5
-5
tests/test_modeling_common.py
tests/test_modeling_common.py
+3
-3
tests/test_modeling_rag.py
tests/test_modeling_rag.py
+2
-2
tests/test_modeling_reformer.py
tests/test_modeling_reformer.py
+3
-3
No files found.
.github/workflows/self-push.yml
View file @
02bdfc02
...
...
@@ -135,7 +135,7 @@ jobs:
name
:
run_all_tests_tf_gpu_test_reports
path
:
reports
run_tests_torch_multi
ple
_gpu
:
run_tests_torch_multi_gpu
:
runs-on
:
[
self-hosted
,
multi-gpu
]
steps
:
-
uses
:
actions/checkout@v2
...
...
@@ -154,7 +154,7 @@ jobs:
id
:
cache
with
:
path
:
.env
key
:
v1.1-tests_torch_multi
ple
_gpu-${{ hashFiles('setup.py') }}
key
:
v1.1-tests_torch_multi_gpu-${{ hashFiles('setup.py') }}
-
name
:
Create new python env (on self-hosted runners we have to handle isolation ourselves)
run
:
|
...
...
@@ -181,11 +181,11 @@ jobs:
OMP_NUM_THREADS
:
1
run
:
|
source .env/bin/activate
python -m pytest -n 2 --dist=loadfile -s --make-reports=tests_torch_multi
ple
_gpu tests
python -m pytest -n 2 --dist=loadfile -s --make-reports=tests_torch_multi_gpu tests
-
name
:
Failure short reports
if
:
${{ always() }}
run
:
cat reports/tests_torch_multi
ple
_gpu_failures_short.txt
run
:
cat reports/tests_torch_multi_gpu_failures_short.txt
-
name
:
Test suite reports artifacts
if
:
${{ always() }}
...
...
@@ -194,7 +194,7 @@ jobs:
name
:
run_all_tests_torch_multi_gpu_test_reports
path
:
reports
run_tests_tf_multi
ple
_gpu
:
run_tests_tf_multi_gpu
:
runs-on
:
[
self-hosted
,
multi-gpu
]
steps
:
-
uses
:
actions/checkout@v2
...
...
@@ -213,7 +213,7 @@ jobs:
id
:
cache
with
:
path
:
.env
key
:
v1.1-tests_tf_multi
ple
_gpu-${{ hashFiles('setup.py') }}
key
:
v1.1-tests_tf_multi_gpu-${{ hashFiles('setup.py') }}
-
name
:
Create new python env (on self-hosted runners we have to handle isolation ourselves)
run
:
|
...
...
@@ -240,11 +240,11 @@ jobs:
OMP_NUM_THREADS
:
1
run
:
|
source .env/bin/activate
python -m pytest -n 2 --dist=loadfile -s --make-reports=tests_tf_multi
ple
_gpu tests
python -m pytest -n 2 --dist=loadfile -s --make-reports=tests_tf_multi_gpu tests
-
name
:
Failure short reports
if
:
${{ always() }}
run
:
cat reports/tests_tf_multi
ple
_gpu_failures_short.txt
run
:
cat reports/tests_tf_multi_gpu_failures_short.txt
-
name
:
Test suite reports artifacts
if
:
${{ always() }}
...
...
.github/workflows/self-scheduled.yml
View file @
02bdfc02
...
...
@@ -187,7 +187,7 @@ jobs:
name
:
run_all_tests_tf_gpu_test_reports
path
:
reports
run_all_tests_torch_multi
ple
_gpu
:
run_all_tests_torch_multi_gpu
:
runs-on
:
[
self-hosted
,
multi-gpu
]
steps
:
-
uses
:
actions/checkout@v2
...
...
@@ -238,11 +238,11 @@ jobs:
RUN_SLOW
:
yes
run
:
|
source .env/bin/activate
python -m pytest -n 1 --dist=loadfile -s --make-reports=tests_torch_multi
ple
_gpu tests
python -m pytest -n 1 --dist=loadfile -s --make-reports=tests_torch_multi_gpu tests
-
name
:
Failure short reports
if
:
${{ always() }}
run
:
cat reports/tests_torch_multi
ple
_gpu_failures_short.txt
run
:
cat reports/tests_torch_multi_gpu_failures_short.txt
-
name
:
Run examples tests on multi-GPU
env
:
...
...
@@ -250,11 +250,11 @@ jobs:
RUN_SLOW
:
yes
run
:
|
source .env/bin/activate
python -m pytest -n 1 --dist=loadfile -s --make-reports=examples_torch_multi
ple
_gpu examples
python -m pytest -n 1 --dist=loadfile -s --make-reports=examples_torch_multi_gpu examples
-
name
:
Failure short reports
if
:
${{ always() }}
run
:
cat reports/examples_torch_multi
ple
_gpu_failures_short.txt
run
:
cat reports/examples_torch_multi_gpu_failures_short.txt
-
name
:
Run all pipeline tests on multi-GPU
if
:
${{ always() }}
...
...
@@ -265,11 +265,11 @@ jobs:
RUN_PIPELINE_TESTS
:
yes
run
:
|
source .env/bin/activate
python -m pytest -n 1 --dist=loadfile -s -m is_pipeline_test --make-reports=tests_torch_pipeline_multi
ple
_gpu tests
python -m pytest -n 1 --dist=loadfile -s -m is_pipeline_test --make-reports=tests_torch_pipeline_multi_gpu tests
-
name
:
Failure short reports
if
:
${{ always() }}
run
:
cat reports/tests_torch_pipeline_multi
ple
_gpu_failures_short.txt
run
:
cat reports/tests_torch_pipeline_multi_gpu_failures_short.txt
-
name
:
Test suite reports artifacts
if
:
${{ always() }}
...
...
@@ -278,7 +278,7 @@ jobs:
name
:
run_all_tests_torch_multi_gpu_test_reports
path
:
reports
run_all_tests_tf_multi
ple
_gpu
:
run_all_tests_tf_multi_gpu
:
runs-on
:
[
self-hosted
,
multi-gpu
]
steps
:
-
uses
:
actions/checkout@v2
...
...
@@ -329,11 +329,11 @@ jobs:
RUN_SLOW
:
yes
run
:
|
source .env/bin/activate
python -m pytest -n 1 --dist=loadfile -s --make-reports=tests_tf_multi
ple
_gpu tests
python -m pytest -n 1 --dist=loadfile -s --make-reports=tests_tf_multi_gpu tests
-
name
:
Failure short reports
if
:
${{ always() }}
run
:
cat reports/tests_tf_multi
ple
_gpu_failures_short.txt
run
:
cat reports/tests_tf_multi_gpu_failures_short.txt
-
name
:
Run all pipeline tests on multi-GPU
if
:
${{ always() }}
...
...
@@ -344,11 +344,11 @@ jobs:
RUN_PIPELINE_TESTS
:
yes
run
:
|
source .env/bin/activate
python -m pytest -n 1 --dist=loadfile -s -m is_pipeline_test --make-reports=tests_tf_pipelines_multi
ple
_gpu tests
python -m pytest -n 1 --dist=loadfile -s -m is_pipeline_test --make-reports=tests_tf_pipelines_multi_gpu tests
-
name
:
Failure short reports
if
:
${{ always() }}
run
:
cat reports/tests_tf_multi
ple
_gpu_pipelines_failures_short.txt
run
:
cat reports/tests_tf_multi_gpu_pipelines_failures_short.txt
-
name
:
Test suite reports artifacts
if
:
${{ always() }}
...
...
docs/source/testing.rst
View file @
02bdfc02
...
...
@@ -405,32 +405,32 @@ decorators are used to set the requirements of tests CPU/GPU/TPU-wise:
*
``
require_torch
``
-
this
test
will
run
only
under
torch
*
``
require_torch_gpu
``
-
as
``
require_torch
``
plus
requires
at
least
1
GPU
*
``
require_torch_multigpu
``
-
as
``
require_torch
``
plus
requires
at
least
2
GPUs
*
``
require_torch_non_multigpu
``
-
as
``
require_torch
``
plus
requires
0
or
1
GPUs
*
``
require_torch_multi
_
gpu
``
-
as
``
require_torch
``
plus
requires
at
least
2
GPUs
*
``
require_torch_non_multi
_
gpu
``
-
as
``
require_torch
``
plus
requires
0
or
1
GPUs
*
``
require_torch_tpu
``
-
as
``
require_torch
``
plus
requires
at
least
1
TPU
Let
's depict the GPU requirements in the following table:
+----------+---------------------------------+
| n gpus | decorator |
+==========+=================================+
| ``>= 0`` | ``@require_torch`` |
+----------+---------------------------------+
| ``>= 1`` | ``@require_torch_gpu`` |
+----------+---------------------------------+
| ``>= 2`` | ``@require_torch_multigpu`` |
+----------+---------------------------------+
| ``< 2`` | ``@require_torch_non_multigpu`` |
+----------+---------------------------------+
+----------+---------------------------------
-
+
| n gpus | decorator
|
+==========+=================================
=
+
| ``>= 0`` | ``@require_torch``
|
+----------+---------------------------------
-
+
| ``>= 1`` | ``@require_torch_gpu``
|
+----------+---------------------------------
-
+
| ``>= 2`` | ``@require_torch_multi
_
gpu`` |
+----------+---------------------------------
-
+
| ``< 2`` | ``@require_torch_non_multi
_
gpu`` |
+----------+---------------------------------
-
+
For example, here is a test that must be run only when there are 2 or more GPUs available and pytorch is installed:
.. code-block:: python
@require_torch_multigpu
def test_example_with_multigpu():
@require_torch_multi
_
gpu
def test_example_with_multi
_
gpu():
If a test requires ``tensorflow`` use the ``require_tf`` decorator. For example:
...
...
@@ -454,7 +454,7 @@ last for them to work correctly. Here is an example of the correct usage:
.. code-block:: python
@parameterized.expand(...)
@require_torch_multigpu
@require_torch_multi
_
gpu
def test_integration_foo():
This order problem doesn'
t
exist
with
``@
pytest
.
mark
.
parametrize
``,
you
can
put
it
first
or
last
and
it
will
still
...
...
examples/bert-loses-patience/test_run_glue_with_pabee.py
View file @
02bdfc02
...
...
@@ -4,7 +4,7 @@ import sys
from
unittest.mock
import
patch
import
run_glue_with_pabee
from
transformers.testing_utils
import
TestCasePlus
,
require_torch_non_multigpu_but_fix_me
from
transformers.testing_utils
import
TestCasePlus
,
require_torch_non_multi
_
gpu_but_fix_me
logging
.
basicConfig
(
level
=
logging
.
DEBUG
)
...
...
@@ -20,7 +20,7 @@ def get_setup_file():
class
PabeeTests
(
TestCasePlus
):
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_run_glue
(
self
):
stream_handler
=
logging
.
StreamHandler
(
sys
.
stdout
)
logger
.
addHandler
(
stream_handler
)
...
...
examples/deebert/test_glue_deebert.py
View file @
02bdfc02
...
...
@@ -5,7 +5,7 @@ import unittest
from
unittest.mock
import
patch
import
run_glue_deebert
from
transformers.testing_utils
import
require_torch_non_multigpu_but_fix_me
,
slow
from
transformers.testing_utils
import
require_torch_non_multi
_
gpu_but_fix_me
,
slow
logging
.
basicConfig
(
level
=
logging
.
DEBUG
)
...
...
@@ -26,7 +26,7 @@ class DeeBertTests(unittest.TestCase):
logger
.
addHandler
(
stream_handler
)
@
slow
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_glue_deebert_train
(
self
):
train_args
=
"""
...
...
examples/rag/test_distributed_retriever.py
View file @
02bdfc02
...
...
@@ -16,7 +16,7 @@ from transformers.configuration_dpr import DPRConfig
from
transformers.configuration_rag
import
RagConfig
from
transformers.file_utils
import
is_datasets_available
,
is_faiss_available
,
is_psutil_available
,
is_torch_available
from
transformers.retrieval_rag
import
CustomHFIndex
from
transformers.testing_utils
import
require_torch_non_multigpu_but_fix_me
from
transformers.testing_utils
import
require_torch_non_multi
_
gpu_but_fix_me
from
transformers.tokenization_bart
import
BartTokenizer
from
transformers.tokenization_bert
import
VOCAB_FILES_NAMES
as
DPR_VOCAB_FILES_NAMES
from
transformers.tokenization_dpr
import
DPRQuestionEncoderTokenizer
...
...
@@ -179,7 +179,7 @@ class RagRetrieverTest(TestCase):
retriever
.
init_retrieval
(
port
)
return
retriever
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_pytorch_distributed_retriever_retrieve
(
self
):
n_docs
=
1
retriever
=
self
.
get_dummy_pytorch_distributed_retriever
(
init_retrieval
=
True
)
...
...
@@ -195,7 +195,7 @@ class RagRetrieverTest(TestCase):
self
.
assertEqual
(
doc_dicts
[
1
][
"id"
][
0
],
"0"
)
# max inner product is reached with first doc
self
.
assertListEqual
(
doc_ids
.
tolist
(),
[[
1
],
[
0
]])
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_custom_hf_index_retriever_retrieve
(
self
):
n_docs
=
1
retriever
=
self
.
get_dummy_custom_hf_index_retriever
(
init_retrieval
=
True
,
from_disk
=
False
)
...
...
@@ -211,7 +211,7 @@ class RagRetrieverTest(TestCase):
self
.
assertEqual
(
doc_dicts
[
1
][
"id"
][
0
],
"0"
)
# max inner product is reached with first doc
self
.
assertListEqual
(
doc_ids
.
tolist
(),
[[
1
],
[
0
]])
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_custom_pytorch_distributed_retriever_retrieve_from_disk
(
self
):
n_docs
=
1
retriever
=
self
.
get_dummy_custom_hf_index_retriever
(
init_retrieval
=
True
,
from_disk
=
True
)
...
...
examples/seq2seq/test_bash_script.py
View file @
02bdfc02
...
...
@@ -13,7 +13,7 @@ from distillation import BartSummarizationDistiller, distill_main
from
finetune
import
SummarizationModule
,
main
from
transformers
import
MarianMTModel
from
transformers.file_utils
import
cached_path
from
transformers.testing_utils
import
TestCasePlus
,
require_torch_gpu
,
require_torch_non_multigpu_but_fix_me
,
slow
from
transformers.testing_utils
import
TestCasePlus
,
require_torch_gpu
,
require_torch_non_multi
_
gpu_but_fix_me
,
slow
from
utils
import
load_json
...
...
@@ -32,7 +32,7 @@ class TestMbartCc25Enro(TestCasePlus):
@
slow
@
require_torch_gpu
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_model_download
(
self
):
"""This warms up the cache so that we can time the next test without including download time, which varies between machines."""
MarianMTModel
.
from_pretrained
(
MARIAN_MODEL
)
...
...
@@ -40,7 +40,7 @@ class TestMbartCc25Enro(TestCasePlus):
# @timeout_decorator.timeout(1200)
@
slow
@
require_torch_gpu
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_train_mbart_cc25_enro_script
(
self
):
env_vars_to_replace
=
{
"$MAX_LEN"
:
64
,
...
...
@@ -75,7 +75,7 @@ class TestMbartCc25Enro(TestCasePlus):
--num_sanity_val_steps 0
--eval_beams 2
"""
.
split
()
# XXX: args.gpus > 1 : handle multigpu in the future
# XXX: args.gpus > 1 : handle multi
_
gpu in the future
testargs
=
[
"finetune.py"
]
+
bash_script
.
split
()
+
args
with
patch
.
object
(
sys
,
"argv"
,
testargs
):
...
...
@@ -129,7 +129,7 @@ class TestDistilMarianNoTeacher(TestCasePlus):
@
timeout_decorator
.
timeout
(
600
)
@
slow
@
require_torch_gpu
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_opus_mt_distill_script
(
self
):
data_dir
=
f
"
{
self
.
test_file_dir_str
}
/test_data/wmt_en_ro"
env_vars_to_replace
=
{
...
...
@@ -172,7 +172,7 @@ class TestDistilMarianNoTeacher(TestCasePlus):
parser
=
pl
.
Trainer
.
add_argparse_args
(
parser
)
parser
=
BartSummarizationDistiller
.
add_model_specific_args
(
parser
,
os
.
getcwd
())
args
=
parser
.
parse_args
()
# assert args.gpus == gpus THIS BREAKS for multigpu
# assert args.gpus == gpus THIS BREAKS for multi
_
gpu
model
=
distill_main
(
args
)
...
...
examples/seq2seq/test_datasets.py
View file @
02bdfc02
...
...
@@ -11,7 +11,7 @@ from save_len_file import save_len_file
from
test_seq2seq_examples
import
ARTICLES
,
BART_TINY
,
MARIAN_TINY
,
MBART_TINY
,
SUMMARIES
,
T5_TINY
,
make_test_data_dir
from
transformers
import
AutoTokenizer
from
transformers.modeling_bart
import
shift_tokens_right
from
transformers.testing_utils
import
TestCasePlus
,
require_torch_non_multigpu_but_fix_me
,
slow
from
transformers.testing_utils
import
TestCasePlus
,
require_torch_non_multi
_
gpu_but_fix_me
,
slow
from
utils
import
FAIRSEQ_AVAILABLE
,
DistributedSortishSampler
,
LegacySeq2SeqDataset
,
Seq2SeqDataset
...
...
@@ -30,7 +30,7 @@ class TestAll(TestCasePlus):
],
)
@
slow
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_seq2seq_dataset_truncation
(
self
,
tok_name
):
tokenizer
=
AutoTokenizer
.
from_pretrained
(
tok_name
)
tmp_dir
=
make_test_data_dir
(
tmp_dir
=
self
.
get_auto_remove_tmp_dir
())
...
...
@@ -70,7 +70,7 @@ class TestAll(TestCasePlus):
break
# No need to test every batch
@
parameterized
.
expand
([
BART_TINY
,
BERT_BASE_CASED
])
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_legacy_dataset_truncation
(
self
,
tok
):
tokenizer
=
AutoTokenizer
.
from_pretrained
(
tok
)
tmp_dir
=
make_test_data_dir
(
tmp_dir
=
self
.
get_auto_remove_tmp_dir
())
...
...
@@ -95,7 +95,7 @@ class TestAll(TestCasePlus):
assert
max_len_target
>
trunc_target
# Truncated
break
# No need to test every batch
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_pack_dataset
(
self
):
tokenizer
=
AutoTokenizer
.
from_pretrained
(
"facebook/mbart-large-cc25"
)
...
...
@@ -114,7 +114,7 @@ class TestAll(TestCasePlus):
assert
orig_paths
==
new_paths
@
pytest
.
mark
.
skipif
(
not
FAIRSEQ_AVAILABLE
,
reason
=
"This test requires fairseq"
)
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_dynamic_batch_size
(
self
):
if
not
FAIRSEQ_AVAILABLE
:
return
...
...
@@ -139,7 +139,7 @@ class TestAll(TestCasePlus):
if
failures
:
raise
AssertionError
(
f
"too many tokens in
{
len
(
failures
)
}
batches"
)
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_sortish_sampler_reduces_padding
(
self
):
ds
,
_
,
tokenizer
=
self
.
_get_dataset
(
max_len
=
512
)
bs
=
2
...
...
@@ -179,7 +179,7 @@ class TestAll(TestCasePlus):
)
return
ds
,
max_tokens
,
tokenizer
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_distributed_sortish_sampler_splits_indices_between_procs
(
self
):
ds
,
max_tokens
,
tokenizer
=
self
.
_get_dataset
()
ids1
=
set
(
DistributedSortishSampler
(
ds
,
256
,
num_replicas
=
2
,
rank
=
0
,
add_extra_examples
=
False
))
...
...
@@ -195,7 +195,7 @@ class TestAll(TestCasePlus):
PEGASUS_XSUM
,
],
)
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_dataset_kwargs
(
self
,
tok_name
):
tokenizer
=
AutoTokenizer
.
from_pretrained
(
tok_name
)
if
tok_name
==
MBART_TINY
:
...
...
examples/seq2seq/test_fsmt_bleu_score.py
View file @
02bdfc02
...
...
@@ -22,7 +22,7 @@ from transformers import FSMTForConditionalGeneration, FSMTTokenizer
from
transformers.testing_utils
import
(
get_tests_dir
,
require_torch
,
require_torch_non_multigpu_but_fix_me
,
require_torch_non_multi
_
gpu_but_fix_me
,
slow
,
torch_device
,
)
...
...
@@ -54,7 +54,7 @@ class ModelEvalTester(unittest.TestCase):
]
)
@
slow
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_bleu_scores
(
self
,
pair
,
min_bleu_score
):
# note: this test is not testing the best performance since it only evals a small batch
# but it should be enough to detect a regression in the output quality
...
...
examples/seq2seq/test_make_student.py
View file @
02bdfc02
...
...
@@ -4,7 +4,7 @@ import unittest
from
make_student
import
create_student_by_copying_alternating_layers
from
transformers
import
AutoConfig
from
transformers.file_utils
import
cached_property
from
transformers.testing_utils
import
require_torch
,
require_torch_non_multigpu_but_fix_me
from
transformers.testing_utils
import
require_torch
,
require_torch_non_multi
_
gpu_but_fix_me
TINY_BART
=
"sshleifer/bart-tiny-random"
...
...
@@ -17,28 +17,28 @@ class MakeStudentTester(unittest.TestCase):
def
teacher_config
(
self
):
return
AutoConfig
.
from_pretrained
(
TINY_BART
)
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_valid_t5
(
self
):
student
,
*
_
=
create_student_by_copying_alternating_layers
(
TINY_T5
,
tempfile
.
mkdtemp
(),
e
=
1
,
d
=
1
)
self
.
assertEqual
(
student
.
config
.
num_hidden_layers
,
1
)
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_asymmetric_t5
(
self
):
student
,
*
_
=
create_student_by_copying_alternating_layers
(
TINY_T5
,
tempfile
.
mkdtemp
(),
e
=
1
,
d
=
None
)
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_same_decoder_small_encoder
(
self
):
student
,
*
_
=
create_student_by_copying_alternating_layers
(
TINY_BART
,
tempfile
.
mkdtemp
(),
e
=
1
,
d
=
None
)
self
.
assertEqual
(
student
.
config
.
encoder_layers
,
1
)
self
.
assertEqual
(
student
.
config
.
decoder_layers
,
self
.
teacher_config
.
encoder_layers
)
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_small_enc_small_dec
(
self
):
student
,
*
_
=
create_student_by_copying_alternating_layers
(
TINY_BART
,
tempfile
.
mkdtemp
(),
e
=
1
,
d
=
1
)
self
.
assertEqual
(
student
.
config
.
encoder_layers
,
1
)
self
.
assertEqual
(
student
.
config
.
decoder_layers
,
1
)
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_raises_assert
(
self
):
with
self
.
assertRaises
(
AssertionError
):
create_student_by_copying_alternating_layers
(
TINY_BART
,
tempfile
.
mkdtemp
(),
e
=
None
,
d
=
None
)
examples/seq2seq/test_seq2seq_examples.py
View file @
02bdfc02
...
...
@@ -24,7 +24,7 @@ from transformers.testing_utils import (
CaptureStdout
,
TestCasePlus
,
require_torch_gpu
,
require_torch_non_multigpu_but_fix_me
,
require_torch_non_multi
_
gpu_but_fix_me
,
slow
,
)
from
utils
import
ROUGE_KEYS
,
label_smoothed_nll_loss
,
lmap
,
load_json
...
...
@@ -133,7 +133,7 @@ class TestSummarizationDistiller(TestCasePlus):
@
slow
@
require_torch_gpu
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_hub_configs
(
self
):
"""I put require_torch_gpu cause I only want this to run with self-scheduled."""
...
...
@@ -151,12 +151,12 @@ class TestSummarizationDistiller(TestCasePlus):
failures
.
append
(
m
)
assert
not
failures
,
f
"The following models could not be loaded through AutoConfig:
{
failures
}
"
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_distill_no_teacher
(
self
):
updates
=
dict
(
student_encoder_layers
=
2
,
student_decoder_layers
=
1
,
no_teacher
=
True
)
self
.
_test_distiller_cli
(
updates
)
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_distill_checkpointing_with_teacher
(
self
):
updates
=
dict
(
student_encoder_layers
=
2
,
...
...
@@ -181,7 +181,7 @@ class TestSummarizationDistiller(TestCasePlus):
convert_pl_to_hf
(
ckpts
[
0
],
transformer_ckpts
[
0
].
parent
,
out_path_new
)
assert
os
.
path
.
exists
(
os
.
path
.
join
(
out_path_new
,
"pytorch_model.bin"
))
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_loss_fn
(
self
):
model
=
AutoModelForSeq2SeqLM
.
from_pretrained
(
BART_TINY
,
return_dict
=
True
)
input_ids
,
mask
=
model
.
dummy_inputs
[
"input_ids"
],
model
.
dummy_inputs
[
"attention_mask"
]
...
...
@@ -202,7 +202,7 @@ class TestSummarizationDistiller(TestCasePlus):
# TODO: understand why this breaks
self
.
assertEqual
(
nll_loss
,
model_computed_loss
)
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_distill_mbart
(
self
):
updates
=
dict
(
student_encoder_layers
=
2
,
...
...
@@ -227,7 +227,7 @@ class TestSummarizationDistiller(TestCasePlus):
assert
len
(
all_files
)
>
2
self
.
assertEqual
(
len
(
transformer_ckpts
),
2
)
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_distill_t5
(
self
):
updates
=
dict
(
student_encoder_layers
=
1
,
...
...
@@ -309,21 +309,21 @@ class TestTheRest(TestCasePlus):
# test one model to quickly (no-@slow) catch simple problems and do an
# extensive testing of functionality with multiple models as @slow separately
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_run_eval
(
self
):
self
.
run_eval_tester
(
T5_TINY
)
# any extra models should go into the list here - can be slow
@
parameterized
.
expand
([
BART_TINY
,
MBART_TINY
])
@
slow
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_run_eval_slow
(
self
,
model
):
self
.
run_eval_tester
(
model
)
# testing with 2 models to validate: 1. translation (t5) 2. summarization (mbart)
@
parameterized
.
expand
([
T5_TINY
,
MBART_TINY
])
@
slow
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_run_eval_search
(
self
,
model
):
input_file_name
=
Path
(
self
.
get_auto_remove_tmp_dir
())
/
"utest_input.source"
output_file_name
=
input_file_name
.
parent
/
"utest_output.txt"
...
...
@@ -374,7 +374,7 @@ class TestTheRest(TestCasePlus):
@
parameterized
.
expand
(
[
T5_TINY
,
BART_TINY
,
MBART_TINY
,
MARIAN_TINY
,
FSMT_TINY
],
)
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_finetune
(
self
,
model
):
args_d
:
dict
=
CHEAP_ARGS
.
copy
()
task
=
"translation"
if
model
in
[
MBART_TINY
,
MARIAN_TINY
,
FSMT_TINY
]
else
"summarization"
...
...
@@ -426,7 +426,7 @@ class TestTheRest(TestCasePlus):
assert
isinstance
(
example_batch
,
dict
)
assert
len
(
example_batch
)
>=
4
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_finetune_extra_model_args
(
self
):
args_d
:
dict
=
CHEAP_ARGS
.
copy
()
...
...
@@ -477,7 +477,7 @@ class TestTheRest(TestCasePlus):
model
=
main
(
args
)
assert
str
(
excinfo
.
value
)
==
f
"model config doesn't have a `
{
unsupported_param
}
` attribute"
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_finetune_lr_schedulers
(
self
):
args_d
:
dict
=
CHEAP_ARGS
.
copy
()
...
...
examples/seq2seq/test_seq2seq_examples_multi_gpu.py
View file @
02bdfc02
...
...
@@ -8,7 +8,7 @@ from transformers.testing_utils import (
execute_subprocess_async
,
get_gpu_count
,
require_torch_gpu
,
require_torch_multigpu
,
require_torch_multi
_
gpu
,
slow
,
)
...
...
@@ -21,8 +21,8 @@ class TestSummarizationDistillerMultiGPU(TestCasePlus):
def
setUpClass
(
cls
):
return
cls
@
require_torch_multigpu
def
test_multigpu
(
self
):
@
require_torch_multi
_
gpu
def
test_multi
_
gpu
(
self
):
updates
=
dict
(
no_teacher
=
True
,
...
...
examples/seq2seq/test_tatoeba_conversion.py
View file @
02bdfc02
...
...
@@ -4,7 +4,7 @@ import unittest
from
transformers.convert_marian_tatoeba_to_pytorch
import
DEFAULT_REPO
,
TatoebaConverter
from
transformers.file_utils
import
cached_property
from
transformers.testing_utils
import
require_torch_non_multigpu_but_fix_me
,
slow
from
transformers.testing_utils
import
require_torch_non_multi
_
gpu_but_fix_me
,
slow
@
unittest
.
skipUnless
(
os
.
path
.
exists
(
DEFAULT_REPO
),
"Tatoeba directory does not exist."
)
...
...
@@ -15,12 +15,12 @@ class TatoebaConversionTester(unittest.TestCase):
return
TatoebaConverter
(
save_dir
=
tmp_dir
)
@
slow
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_resolver
(
self
):
self
.
resolver
.
convert_models
([
"heb-eng"
])
@
slow
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_model_card
(
self
):
content
,
mmeta
=
self
.
resolver
.
write_model_card
(
"opus-mt-he-en"
,
dry_run
=
True
)
assert
mmeta
[
"long_pair"
]
==
"heb-eng"
examples/test_examples.py
View file @
02bdfc02
...
...
@@ -23,7 +23,7 @@ from unittest.mock import patch
import
torch
from
transformers.file_utils
import
is_apex_available
from
transformers.testing_utils
import
TestCasePlus
,
require_torch_non_multigpu_but_fix_me
,
torch_device
from
transformers.testing_utils
import
TestCasePlus
,
require_torch_non_multi
_
gpu_but_fix_me
,
torch_device
SRC_DIRS
=
[
...
...
@@ -67,7 +67,7 @@ def is_cuda_and_apex_available():
class
ExamplesTests
(
TestCasePlus
):
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_run_glue
(
self
):
stream_handler
=
logging
.
StreamHandler
(
sys
.
stdout
)
logger
.
addHandler
(
stream_handler
)
...
...
@@ -100,7 +100,7 @@ class ExamplesTests(TestCasePlus):
for
value
in
result
.
values
():
self
.
assertGreaterEqual
(
value
,
0.75
)
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_run_pl_glue
(
self
):
stream_handler
=
logging
.
StreamHandler
(
sys
.
stdout
)
logger
.
addHandler
(
stream_handler
)
...
...
@@ -138,7 +138,7 @@ class ExamplesTests(TestCasePlus):
# self.assertGreaterEqual(v, 0.75, f"({k})")
#
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_run_clm
(
self
):
stream_handler
=
logging
.
StreamHandler
(
sys
.
stdout
)
logger
.
addHandler
(
stream_handler
)
...
...
@@ -170,7 +170,7 @@ class ExamplesTests(TestCasePlus):
result
=
run_clm
.
main
()
self
.
assertLess
(
result
[
"perplexity"
],
100
)
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_run_mlm
(
self
):
stream_handler
=
logging
.
StreamHandler
(
sys
.
stdout
)
logger
.
addHandler
(
stream_handler
)
...
...
@@ -196,7 +196,7 @@ class ExamplesTests(TestCasePlus):
result
=
run_mlm
.
main
()
self
.
assertLess
(
result
[
"perplexity"
],
42
)
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_run_ner
(
self
):
stream_handler
=
logging
.
StreamHandler
(
sys
.
stdout
)
logger
.
addHandler
(
stream_handler
)
...
...
@@ -227,7 +227,7 @@ class ExamplesTests(TestCasePlus):
self
.
assertGreaterEqual
(
result
[
"eval_precision"
],
0.75
)
self
.
assertLess
(
result
[
"eval_loss"
],
0.5
)
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_run_squad
(
self
):
stream_handler
=
logging
.
StreamHandler
(
sys
.
stdout
)
logger
.
addHandler
(
stream_handler
)
...
...
@@ -256,7 +256,7 @@ class ExamplesTests(TestCasePlus):
self
.
assertGreaterEqual
(
result
[
"f1"
],
25
)
self
.
assertGreaterEqual
(
result
[
"exact"
],
21
)
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_generation
(
self
):
stream_handler
=
logging
.
StreamHandler
(
sys
.
stdout
)
logger
.
addHandler
(
stream_handler
)
...
...
examples/test_xla_examples.py
View file @
02bdfc02
...
...
@@ -20,7 +20,7 @@ import unittest
from
time
import
time
from
unittest.mock
import
patch
from
transformers.testing_utils
import
require_torch_non_multigpu_but_fix_me
,
require_torch_tpu
from
transformers.testing_utils
import
require_torch_non_multi
_
gpu_but_fix_me
,
require_torch_tpu
logging
.
basicConfig
(
level
=
logging
.
DEBUG
)
...
...
@@ -30,7 +30,7 @@ logger = logging.getLogger()
@
require_torch_tpu
class
TorchXLAExamplesTests
(
unittest
.
TestCase
):
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_run_glue
(
self
):
import
xla_spawn
...
...
@@ -82,7 +82,7 @@ class TorchXLAExamplesTests(unittest.TestCase):
# Assert that the script takes less than 300 seconds to make sure it doesn't hang.
self
.
assertLess
(
end
-
start
,
500
)
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_trainer_tpu
(
self
):
import
xla_spawn
...
...
examples/token-classification/test_ner_examples.py
View file @
02bdfc02
...
...
@@ -4,7 +4,7 @@ import unittest
from
unittest.mock
import
patch
import
run_ner_old
as
run_ner
from
transformers.testing_utils
import
require_torch_non_multigpu_but_fix_me
,
slow
from
transformers.testing_utils
import
require_torch_non_multi
_
gpu_but_fix_me
,
slow
logging
.
basicConfig
(
level
=
logging
.
INFO
)
...
...
@@ -14,7 +14,7 @@ logger = logging.getLogger()
class
ExamplesTests
(
unittest
.
TestCase
):
@
slow
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_run_ner
(
self
):
stream_handler
=
logging
.
StreamHandler
(
sys
.
stdout
)
logger
.
addHandler
(
stream_handler
)
...
...
@@ -35,7 +35,7 @@ class ExamplesTests(unittest.TestCase):
result
=
run_ner
.
main
()
self
.
assertLess
(
result
[
"eval_loss"
],
1.5
)
@
require_torch_non_multigpu_but_fix_me
@
require_torch_non_multi
_
gpu_but_fix_me
def
test_run_ner_pl
(
self
):
stream_handler
=
logging
.
StreamHandler
(
sys
.
stdout
)
logger
.
addHandler
(
stream_handler
)
...
...
src/transformers/testing_utils.py
View file @
02bdfc02
...
...
@@ -193,13 +193,13 @@ def require_tokenizers(test_case):
return
test_case
def
require_torch_multigpu
(
test_case
):
def
require_torch_multi
_
gpu
(
test_case
):
"""
Decorator marking a test that requires a multi-GPU setup (in PyTorch).
These tests are skipped on a machine without multiple GPUs.
To run *only* the multigpu tests, assuming all test names contain multigpu: $ pytest -sv ./tests -k "multigpu"
To run *only* the multi
_
gpu tests, assuming all test names contain multi
_
gpu: $ pytest -sv ./tests -k "multi
_
gpu"
"""
if
not
_torch_available
:
return
unittest
.
skip
(
"test requires PyTorch"
)(
test_case
)
...
...
@@ -212,7 +212,7 @@ def require_torch_multigpu(test_case):
return
test_case
def
require_torch_non_multigpu
(
test_case
):
def
require_torch_non_multi
_
gpu
(
test_case
):
"""
Decorator marking a test that requires 0 or 1 GPU setup (in PyTorch).
"""
...
...
@@ -227,10 +227,10 @@ def require_torch_non_multigpu(test_case):
return
test_case
# this is a decorator identical to require_torch_non_multigpu, but is used as a quick band-aid to
# this is a decorator identical to require_torch_non_multi
_
gpu, but is used as a quick band-aid to
# allow all of examples to be run multi-gpu CI and it reminds us that tests decorated with this one
# need to be ported and aren't so by design.
require_torch_non_multigpu_but_fix_me
=
require_torch_non_multigpu
require_torch_non_multi
_
gpu_but_fix_me
=
require_torch_non_multi
_
gpu
def
require_torch_tpu
(
test_case
):
...
...
tests/test_modeling_common.py
View file @
02bdfc02
...
...
@@ -23,7 +23,7 @@ from typing import List, Tuple
from
transformers
import
is_torch_available
from
transformers.file_utils
import
WEIGHTS_NAME
from
transformers.testing_utils
import
require_torch
,
require_torch_multigpu
,
slow
,
torch_device
from
transformers.testing_utils
import
require_torch
,
require_torch_multi
_
gpu
,
slow
,
torch_device
if
is_torch_available
():
...
...
@@ -928,8 +928,8 @@ class ModelTesterMixin:
with
torch
.
no_grad
():
model
(
**
inputs
)[
0
]
@
require_torch_multigpu
def
test_multigpu_data_parallel_forward
(
self
):
@
require_torch_multi
_
gpu
def
test_multi
_
gpu_data_parallel_forward
(
self
):
config
,
inputs_dict
=
self
.
model_tester
.
prepare_config_and_inputs_for_common
()
# some params shouldn't be scattered by nn.DataParallel
...
...
tests/test_modeling_rag.py
View file @
02bdfc02
...
...
@@ -29,7 +29,7 @@ from transformers.testing_utils import (
require_sentencepiece
,
require_tokenizers
,
require_torch
,
require_torch_non_multigpu
,
require_torch_non_multi
_
gpu
,
slow
,
torch_device
,
)
...
...
@@ -581,7 +581,7 @@ class RagDPRT5Test(RagTestMixin, unittest.TestCase):
@
require_retrieval
@
require_sentencepiece
@
require_tokenizers
@
require_torch_non_multigpu
@
require_torch_non_multi
_
gpu
class
RagModelIntegrationTests
(
unittest
.
TestCase
):
@
cached_property
def
sequence_model
(
self
):
...
...
tests/test_modeling_reformer.py
View file @
02bdfc02
...
...
@@ -20,7 +20,7 @@ from transformers.testing_utils import (
require_sentencepiece
,
require_tokenizers
,
require_torch
,
require_torch_multigpu
,
require_torch_multi
_
gpu
,
slow
,
torch_device
,
)
...
...
@@ -562,8 +562,8 @@ class ReformerTesterMixin:
config_and_inputs
=
self
.
model_tester
.
prepare_config_and_inputs
()
self
.
model_tester
.
create_and_check_reformer_model_fp16_generate
(
*
config_and_inputs
)
@
require_torch_multigpu
def
test_multigpu_data_parallel_forward
(
self
):
@
require_torch_multi
_
gpu
def
test_multi
_
gpu_data_parallel_forward
(
self
):
# Opt-out of this test.
pass
...
...
Prev
1
2
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment