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)
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)
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")
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()
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)
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",
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('+')