Skip to content

Commit 1ea91ab

Browse files
authored
Safely import TELinearAdapter (#103)
* Safely import TELinearAdapter Signed-off-by: Marc Romeyn <marcromeyn@gmail.com> * Fix linting Signed-off-by: Marc Romeyn <marcromeyn@gmail.com> * Address PR comments Signed-off-by: Marc Romeyn <marcromeyn@gmail.com> --------- Signed-off-by: Marc Romeyn <marcromeyn@gmail.com>
1 parent c543578 commit 1ea91ab

1 file changed

Lines changed: 8 additions & 8 deletions

File tree

‎src/megatron/hub/peft/lora.py‎

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,21 +20,19 @@
2020
import torch.nn as nn
2121

2222
from megatron.hub.peft.base import PEFT
23-
from megatron.hub.peft.lora_layers import LinearAdapter, LoRALinear, TELinearAdapter, patch_linear_module
23+
from megatron.hub.peft.lora_layers import LinearAdapter, LoRALinear, patch_linear_module
2424
from megatron.hub.peft.module_matcher import ModuleMatcher
2525
from megatron.hub.peft.utils import ParallelLinearAdapter, get_adapter_attributes_from_linear, is_expert_linear
2626
from megatron.hub.utils.import_utils import safe_import
2727

2828

2929
logger = logging.getLogger(__name__)
3030

31-
try:
32-
import transformer_engine.pytorch as te
33-
34-
HAVE_TE = True
35-
except ImportError:
36-
te = None
37-
HAVE_TE = False
31+
te, HAVE_TE = safe_import("transformer_engine.pytorch")
32+
if HAVE_TE:
33+
from megatron.hub.peft.lora_layers import TELinearAdapter
34+
else:
35+
TELinearAdapter = None
3836

3937
if torch.cuda.is_available():
4038
bitsandbytes, HAVE_BNB = safe_import("bitsandbytes")
@@ -124,6 +122,8 @@ def transform(self, module: nn.Module, name: Optional[str] = None, prefix: Optio
124122
):
125123
lora_cls = patch_linear_module
126124
elif HAVE_TE and module.__class__ == te.Linear:
125+
if TELinearAdapter is None:
126+
raise ImportError("TELinearAdapter is not available")
127127
lora_cls = TELinearAdapter
128128
else:
129129
lora_cls = LinearAdapter

0 commit comments

Comments
 (0)