Beispiel #1
0
    def test_init_zero3(self):
        # test that zero.Init() works correctly under zero3
        ds_config = {
            "train_batch_size": 1,
            "zero_optimization": {
                "stage": 3,
            },
        }

        dschf = HfDeepSpeedConfig(ds_config)

        self.assertTrue(dschf.is_zero3())
        self.assertTrue(is_deepspeed_zero3_enabled())

        with LoggingLevel(logging.INFO):
            with mockenv_context(**self.dist_env_1_gpu):
                logger = logging.get_logger("transformers.modeling_utils")
                with CaptureLogger(logger) as cl:
                    AutoModel.from_pretrained(T5_TINY)
        self.assertIn("Detected DeepSpeed ZeRO-3", cl.out)

        # now remove zero optimization
        del ds_config["zero_optimization"]
        dschf = HfDeepSpeedConfig(ds_config)

        self.assertFalse(dschf.is_zero3())
        self.assertFalse(is_deepspeed_zero3_enabled())

        with LoggingLevel(logging.INFO):
            with mockenv_context(**self.dist_env_1_gpu):
                logger = logging.get_logger("transformers.modeling_utils")
                with CaptureLogger(logger) as cl:
                    AutoModel.from_pretrained(T5_TINY)
        self.assertNotIn("Detected DeepSpeed ZeRO-3", cl.out)
 def test_env_invalid_override(self):
     # reset for the env var to take effect, next time some logger call is made
     transformers.utils.logging._reset_library_root_logger()
     logger = logging.logging.getLogger()
     with CaptureLogger(logger) as cl:
         # this action activates the env var
         logging.get_logger("transformers.models.bart.tokenization_bart")
     self.assertIn("Unknown option TRANSFORMERS_VERBOSITY=super-error", cl.out)
Beispiel #3
0
    def test_integration(self):
        level_origin = logging.get_verbosity()

        logger = logging.get_logger(
            "transformers.models.bart.tokenization_bart")
        msg = "Testing 1, 2, 3"

        # should be able to log warnings (if default settings weren't overridden by `pytest --log-level-all`)
        if level_origin <= logging.WARNING:
            with CaptureLogger(logger) as cl:
                logger.warning(msg)
            self.assertEqual(cl.out, msg + "\n")

        # this is setting the level for all of `transformers.*` loggers
        logging.set_verbosity_error()

        # should not be able to log warnings
        with CaptureLogger(logger) as cl:
            logger.warning(msg)
        self.assertEqual(cl.out, "")

        # should be able to log warnings again
        logging.set_verbosity_warning()
        with CaptureLogger(logger) as cl:
            logger.warning(msg)
        self.assertEqual(cl.out, msg + "\n")

        # restore to the original level
        logging.set_verbosity(level_origin)
Beispiel #4
0
    def test_advisory_warnings(self):
        # testing `logger.warning_advice()`

        logger = logging.get_logger(
            "transformers.models.bart.tokenization_bart")
        msg = "Testing 1, 2, 3"

        with mockenv_context(TRANSFORMERS_NO_ADVISORY_WARNINGS="1"):
            # nothing should be logged as env var disables this method
            with CaptureLogger(logger) as cl:
                logger.warning_advice(msg)
            self.assertEqual(cl.out, "")

        with mockenv_context(TRANSFORMERS_NO_ADVISORY_WARNINGS=""):
            # should log normally as TRANSFORMERS_NO_ADVISORY_WARNINGS is unset
            with CaptureLogger(logger) as cl:
                logger.warning_advice(msg)
            self.assertEqual(cl.out, msg + "\n")
Beispiel #5
0
    def test_env_override(self):
        # reset for the env var to take effect, next time some logger call is made
        transformers.utils.logging._reset_library_root_logger()
        # this action activates the env var
        _ = logging.get_logger("transformers.models.bart.tokenization_bart")

        env_level_str = os.getenv("TRANSFORMERS_VERBOSITY", None)
        env_level = logging.log_levels[env_level_str]

        current_level = logging.get_verbosity()
        self.assertEqual(
            env_level,
            current_level,
            f"TRANSFORMERS_VERBOSITY={env_level_str}/{env_level}, but internal verbosity is {current_level}",
        )

        # restore to the original level
        os.environ["TRANSFORMERS_VERBOSITY"] = ""
        transformers.utils.logging._reset_library_root_logger()
Beispiel #6
0
    def test_set_level(self):
        logger = logging.get_logger()

        # the current default level is logging.WARNING
        level_origin = logging.get_verbosity()

        logging.set_verbosity_error()
        self.assertEqual(logger.getEffectiveLevel(), logging.get_verbosity())

        logging.set_verbosity_warning()
        self.assertEqual(logger.getEffectiveLevel(), logging.get_verbosity())

        logging.set_verbosity_info()
        self.assertEqual(logger.getEffectiveLevel(), logging.get_verbosity())

        logging.set_verbosity_debug()
        self.assertEqual(logger.getEffectiveLevel(), logging.get_verbosity())

        # restore to the original level
        logging.set_verbosity(level_origin)
Beispiel #7
0
from transformers import (
    ForCondGen,
    XLMForCondGen,
    logging,
)

from transformers_old.modeling_prophetnet import (
    ForCondGen as ForCondGenOld,
)
from transformers_old.modeling_xlm_prophetnet import (
    XLMForCondGen as XLMForCondGenOld,
)


logger = logging.get_logger(__name__)
logging.set_verbosity_info()


def to_pytorch(src_path, save_path):
    if "xprophetnet" in src_path:
        prophet_old = XLMForCondGenOld.from_pretrained(src_path)
        prophet, loading_info = XLMForCondGen.from_pretrained(src_path, output_loading_info=True)
    else:
        prophet_old = ForCondGenOld.from_pretrained(src_path)
        prophet, loading_info = ForCondGen.from_pretrained(src_path, output_loading_info=True)
    special_keys = ["key_proj", "value_proj", "query_proj"]
    mapping = {
        "self_attn": "ngram_self_attn",
        "cross_attn": "encoder_attn",
        "cross_attn_layer_norm": "encoder_attn_layer_norm",
Beispiel #8
0
from typing import Any, List, Dict, Tuple, Optional, DefaultDict, Union
from torch.utils.tensorboard import SummaryWriter
from torch.utils.data import DataLoader, RandomSampler, SequentialSampler, TensorDataset
from torch import cuda, nn, save, unsqueeze, sigmoid, stack, no_grad
from transformers import BertConfig, AdamW, get_linear_schedule_with_warmup, logging
from tqdm.notebook import tqdm, trange
import os
import json
import numpy as np
from sklearn.metrics import f1_score

logger = logging.get_logger()
logger.setLevel(logging.INFO)


class JointTrainer(object):
    def __init__(self,
                 args: List[Any],
                 model: Any,
                 train_dataset: Optional[TensorDataset] = None,
                 dev_dataset: Optional[TensorDataset] = None,
                 idx_to_classes: Optional[Dict[str, Any]] = None) -> None:
        self.args, self.model_args, self.data_args = args
        self.train_dataset = train_dataset
        self.dev_dataset = dev_dataset
        self.model = model
        # GPU or CPU
        self.device = ("cuda" if cuda.is_available() and not self.args.no_cuda
                       else "cpu")
        self.model.to(self.device)
        self.tasks = self.data_args.task.split('+')