|
1 | 1 | import os |
2 | | -from typing import Dict |
| 2 | +import re |
| 3 | +from typing import Callable, Dict, List, Optional, Tuple, Union |
3 | 4 |
|
4 | 5 | import numpy as np |
5 | 6 | import torch |
| 7 | +from packaging import version |
6 | 8 | from torch import nn |
| 9 | +from torch.utils.data import Dataset |
| 10 | + |
| 11 | +from transformers import PreTrainedModel, Trainer, __version__ |
| 12 | +from transformers.configuration_utils import PretrainedConfig |
| 13 | +from transformers.data.data_collator import DataCollator |
| 14 | +from transformers.tokenization_utils_base import PreTrainedTokenizerBase |
| 15 | +from transformers.trainer_callback import ( |
| 16 | + TrainerCallback, |
| 17 | + TrainerControl, |
| 18 | + TrainerState, |
| 19 | +) |
| 20 | +from transformers.trainer_utils import EvalPrediction |
| 21 | +from transformers.training_args import TrainingArguments |
| 22 | +from transformers.utils import ( |
| 23 | + CONFIG_NAME, |
| 24 | + is_accelerate_available, |
| 25 | + is_apex_available, |
| 26 | + logging, |
| 27 | +) |
7 | 28 |
|
8 | | -from transformers import PreTrainedModel |
9 | | -from transformers.modeling_utils import unwrap_model |
10 | | -from transformers.trainer import ( |
| 29 | +from wtpsplit.train.hf_compat import is_torch_tpu_available |
| 30 | +from wtpsplit.train.transformers_trainer_imports import ( |
11 | 31 | ALL_LAYERNORM_LAYERS, |
12 | | - WEIGHTS_NAME, |
13 | 32 | DataLoader, |
14 | 33 | EvalLoopOutput, |
15 | 34 | IterableDatasetShard, |
16 | | - List, |
17 | | - Optional, |
| 35 | + WEIGHTS_NAME, |
18 | 36 | deepspeed_init, |
19 | 37 | denumpify_detensorize, |
20 | 38 | find_batch_size, |
21 | 39 | get_parameter_names, |
22 | 40 | has_length, |
23 | 41 | is_sagemaker_mp_enabled, |
24 | | - is_torch_tpu_available, |
25 | 42 | nested_concat, |
26 | 43 | nested_numpify, |
27 | 44 | nested_truncate, |
| 45 | + unwrap_model, |
28 | 46 | ) |
29 | | - |
30 | 47 | from wtpsplit.train.utils import Model |
31 | 48 |
|
32 | 49 | if is_torch_tpu_available(check_device=False): |
33 | 50 | import torch_xla.core.xla_model as xm # noqa: F401 |
34 | 51 | import torch_xla.debug.metrics as met # noqa: F401 |
35 | 52 | import torch_xla.distributed.parallel_loader as pl # noqa: F401 |
36 | 53 |
|
37 | | -import re |
38 | | -from typing import Callable, Tuple, Union |
39 | | - |
40 | | -from packaging import version |
41 | | -from torch.utils.data import Dataset |
42 | | -from transformers import Trainer, __version__ |
43 | | -from transformers.configuration_utils import PretrainedConfig |
44 | | -from transformers.data.data_collator import DataCollator |
45 | | -from transformers.tokenization_utils_base import PreTrainedTokenizerBase |
46 | | -from transformers.trainer_callback import ( |
47 | | - TrainerCallback, |
48 | | - TrainerControl, |
49 | | - TrainerState, |
50 | | -) |
51 | | -from transformers.trainer_utils import ( |
52 | | - EvalPrediction, |
53 | | -) |
54 | | -from transformers.training_args import TrainingArguments |
55 | | -from transformers.utils import ( |
56 | | - CONFIG_NAME, |
57 | | - is_accelerate_available, |
58 | | - is_apex_available, |
59 | | - is_torch_tpu_available, |
60 | | - logging, |
61 | | -) |
62 | | - |
63 | | -from adapters.composition import AdapterCompositionBlock, Fuse |
64 | | - |
65 | 54 | if is_apex_available(): |
66 | 55 | pass |
67 | 56 |
|
|
74 | 63 |
|
75 | 64 | if version.parse(accelerate_version) >= version.parse("0.16"): |
76 | 65 | pass |
| 66 | + |
77 | 67 | logger = logging.get_logger(__name__) |
78 | 68 |
|
79 | 69 | TRAINING_ARGS_NAME = "training_args.bin" |
@@ -121,8 +111,12 @@ def __init__( |
121 | 111 | model_frozen = getattr(self.model.backbone.base_model, "model_frozen", False) |
122 | 112 | else: |
123 | 113 | model_frozen = False |
| 114 | + # Default: same as pre-lazy-import behaviour when `model_frozen` is False (e.g. full finetune path). |
| 115 | + self.train_adapter_fusion = False |
124 | 116 | if model_frozen and self.model.backbone.active_adapters: |
125 | | - # Check if training AdapterFusion |
| 117 | + # Check if training AdapterFusion (requires optional `adapters` package) |
| 118 | + from adapters.composition import AdapterCompositionBlock, Fuse |
| 119 | + |
126 | 120 | self.train_adapter_fusion = ( |
127 | 121 | isinstance(self.model.backbone.active_adapters, Fuse) |
128 | 122 | or isinstance(self.model.backbone.active_adapters, AdapterCompositionBlock) |
@@ -304,9 +298,7 @@ def evaluation_loop( |
304 | 298 | if args.deepspeed and not self.deepspeed: |
305 | 299 | # XXX: eval doesn't have `resume_from_checkpoint` arg but we should be able to do eval |
306 | 300 | # from the checkpoint eventually |
307 | | - deepspeed_engine, _, _ = deepspeed_init( |
308 | | - self, num_training_steps=0, resume_from_checkpoint=None, inference=True |
309 | | - ) |
| 301 | + deepspeed_engine, _, _ = deepspeed_init(self, num_training_steps=0, inference=True) |
310 | 302 | self.model = deepspeed_engine.module |
311 | 303 | self.model_wrapped = deepspeed_engine |
312 | 304 | self.deepspeed = deepspeed_engine |
|
0 commit comments