Spaces:
Running on CPU Upgrade

ziem-io commited on
Commit
3a16c24
·
1 Parent(s): 0b5ea49

Update: Remove unused model

Browse files
Files changed (2) hide show
  1. lib/bert_regressor.py +1 -43
  2. lib/bert_regressor_utils.py +10 -20
lib/bert_regressor.py CHANGED
@@ -71,46 +71,4 @@ class BertMultiHeadRegressor(nn.Module):
71
  pooled = self._pool(outputs, attention_mask) # [B, H]
72
  pooled = self.dropout(pooled)
73
  preds = [head(pooled) for head in self.heads] # n × [B, 1]
74
- return torch.cat(preds, dim=1) # [B, n_heads]
75
-
76
- ###################################################################################
77
-
78
- class BertBinaryClassifier(nn.Module):
79
- def __init__(self, pretrained_model_name='bert-base-uncased', unfreeze_from=8, dropout=0.3):
80
- super(BertBinaryClassifier, self).__init__()
81
-
82
- # BERT-Encoder laden
83
- self.bert = BertModel.from_pretrained(pretrained_model_name)
84
-
85
- # Alle Layer zunächst einfrieren
86
- for param in self.bert.parameters():
87
- param.requires_grad = False
88
-
89
- # Höhere Layer freigeben → feineres Fine-Tuning ab `unfreeze_from`
90
- for layer in self.bert.encoder.layer[unfreeze_from:]:
91
- for param in layer.parameters():
92
- param.requires_grad = True
93
-
94
- # Dropout-Schicht zur Regularisierung
95
- self.dropout = nn.Dropout(dropout)
96
-
97
- # Klassifikationskopf: Wandelt das 768-dimensionale BERT-Embedding
98
- # in einen einzelnen logit-Wert um (für binäre Klassifikation).
99
- self.classifier = nn.Linear(self.bert.config.hidden_size, 1)
100
-
101
- def forward(self, input_ids, attention_mask):
102
- # Eingabe durch BERT verarbeiten → [batch_size, 768]
103
- outputs = self.bert(input_ids=input_ids, attention_mask=attention_mask)
104
-
105
- # CLS-Token-Repräsentation extrahieren
106
- pooled_output = outputs.pooler_output
107
-
108
- # Dropout anwenden zur Regularisierung
109
- dropped = self.dropout(pooled_output)
110
-
111
- # Logits durch linearen Klassifikator erzeugen
112
- logits = self.classifier(dropped)
113
-
114
- # Rückgabe der rohen Logits
115
- return logits
116
-
 
71
  pooled = self._pool(outputs, attention_mask) # [B, H]
72
  pooled = self.dropout(pooled)
73
  preds = [head(pooled) for head in self.heads] # n × [B, 1]
74
+ return torch.cat(preds, dim=1) # [B, n_heads]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/bert_regressor_utils.py CHANGED
@@ -3,7 +3,7 @@ from transformers import AutoTokenizer
3
  from torch.utils.data import Dataset
4
  import numpy as np
5
 
6
- from .bert_regressor import BertMultiHeadRegressor, BertBinaryClassifier
7
 
8
  ###################################################################################
9
 
@@ -122,14 +122,13 @@ def tokenize_input(texts, tokenizer, max_len=256):
122
 
123
  ###################################################################################
124
 
125
- def load_model_and_tokenizer(model_name, model_path, model_type="multihead"):
126
  """
127
- Universelle Ladefunktion für BertMultiHeadRegressor oder BertBinaryClassifier.
128
 
129
  Args:
130
  model_name (str): Name des vortrainierten BERT-Modells (z. B. 'bert-base-uncased').
131
  model_path (str): Pfad zur gespeicherten Modellzustandsdatei (.pt).
132
- model_type (str): 'multihead' oder 'binary'. Default: 'multihead'.
133
 
134
  Returns:
135
  model (nn.Module): Geladenes Modell im Eval-Modus.
@@ -143,22 +142,13 @@ def load_model_and_tokenizer(model_name, model_path, model_type="multihead"):
143
  checkpoint = torch.load(model_path, map_location=device)
144
  config = checkpoint["model_config"]
145
 
146
- # Modell je nach Typ initialisieren
147
- if model_type == "multihead":
148
- model = BertMultiHeadRegressor(
149
- pretrained_model_name=config["pretrained_model_name"],
150
- n_heads=config["n_heads"],
151
- unfreeze_from=config["unfreeze_from"],
152
- dropout=config["dropout"]
153
- )
154
- elif model_type == "binary":
155
- model = BertBinaryClassifier(
156
- pretrained_model_name=config["pretrained_model_name"],
157
- unfreeze_from=config["unfreeze_from"],
158
- dropout=config["dropout"]
159
- )
160
- else:
161
- raise ValueError(f"Unbekannter model_type: {model_type}")
162
 
163
  # Gewichtungen laden und Modell auf Gerät verschieben
164
  model.to(device)
 
3
  from torch.utils.data import Dataset
4
  import numpy as np
5
 
6
+ from .bert_regressor import BertMultiHeadRegressor
7
 
8
  ###################################################################################
9
 
 
122
 
123
  ###################################################################################
124
 
125
+ def load_model_and_tokenizer(model_name, model_path):
126
  """
127
+ Ladefunktion für BertMultiHeadRegressor.
128
 
129
  Args:
130
  model_name (str): Name des vortrainierten BERT-Modells (z. B. 'bert-base-uncased').
131
  model_path (str): Pfad zur gespeicherten Modellzustandsdatei (.pt).
 
132
 
133
  Returns:
134
  model (nn.Module): Geladenes Modell im Eval-Modus.
 
142
  checkpoint = torch.load(model_path, map_location=device)
143
  config = checkpoint["model_config"]
144
 
145
+ # Modell initialisieren
146
+ model = BertMultiHeadRegressor(
147
+ pretrained_model_name=config["pretrained_model_name"],
148
+ n_heads=config["n_heads"],
149
+ unfreeze_from=config["unfreeze_from"],
150
+ dropout=config["dropout"]
151
+ )
 
 
 
 
 
 
 
 
 
152
 
153
  # Gewichtungen laden und Modell auf Gerät verschieben
154
  model.to(device)