1+ """Tuning functionality for sentence transformers.
2+
3+ This module requires additional dependencies:
4+ - sentence-transformers
5+ - lightning
6+ - wandb
7+
8+ Install with: pip install emm[tuning]
9+ """
10+
111from __future__ import annotations
212
313from typing import Optional , Dict , Any , List
414import logging
5- import lightning as L
6- from sentence_transformers import SentenceTransformer , losses
7- import torch
8- import wandb
915from pathlib import Path
10- from torch .utils .data import DataLoader
11- from torch .cuda .amp import GradScaler
1216import numpy as np
1317
18+ # Defer imports until actually needed
19+ HAS_TUNING_DEPS = False
20+ try :
21+ import torch
22+ import lightning as L
23+ import wandb
24+ from sentence_transformers import SentenceTransformer , losses
25+ from torch .utils .data import DataLoader
26+ from torch .cuda .amp import GradScaler
27+ HAS_TUNING_DEPS = True
28+ except ImportError :
29+ pass
30+
1431from emm .models .sentence_transformer .tuning .config import TuningConfig
1532
1633logger = logging .getLogger (__name__ )
1734
35+ def check_tuning_dependencies ():
36+ """Check if tuning dependencies are available"""
37+ if not HAS_TUNING_DEPS :
38+ raise ImportError (
39+ "sentence-transformers, torch, lightning, and wandb are required for tuning. "
40+ "Install with: pip install emm[tuning]"
41+ )
42+
1843class SentenceTransformerTuner :
1944 """Fine-tuning for sentence transformers specialized for company name matching"""
2045
@@ -24,6 +49,7 @@ def __init__(self, config: TuningConfig):
2449 Args:
2550 config: Tuning configuration object
2651 """
52+ check_tuning_dependencies ()
2753 self .config = config
2854
2955 # Setup Lightning Fabric for distributed training
0 commit comments