Gajendra5490 commited on
Commit
d1ca382
·
verified ·
1 Parent(s): 90d021c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +22 -27
app.py CHANGED
@@ -9,7 +9,7 @@ from huggingface_hub import HfApi, hf_hub_download
9
  # Configuration constants
10
  MODEL_REPO = "Gajendra5490/Scrached_Trained_Model"
11
  CURRENT_USER = "gajendra82"
12
- CURRENT_UTC = "2025-05-06 15:54:34"
13
 
14
  def setup_logging():
15
  logging.basicConfig(
@@ -28,16 +28,15 @@ class PositionalEncoding(torch.nn.Module):
28
  super().__init__()
29
  self.dropout = torch.nn.Dropout(p=dropout)
30
 
31
- pe = torch.zeros(max_len, d_model)
32
  position = torch.arange(0, max_len, dtype=torch.float).unsqueeze(1)
33
  div_term = torch.exp(torch.arange(0, d_model, 2).float() * (-torch.log(torch.tensor(10000.0)) / d_model))
34
- pe[:, 0::2] = torch.sin(position * div_term)
35
- pe[:, 1::2] = torch.cos(position * div_term)
36
- pe = pe.unsqueeze(0)
37
  self.register_buffer('pe', pe)
38
 
39
  def forward(self, x):
40
- x = x + self.pe[:, :x.size(1)]
41
  return self.dropout(x)
42
 
43
  class ImprovedTransformer(torch.nn.Module):
@@ -85,9 +84,15 @@ class ImprovedTransformer(torch.nn.Module):
85
  src = self.embedding(src) * torch.sqrt(torch.tensor(self.d_model, dtype=torch.float))
86
  tgt = self.embedding(tgt) * torch.sqrt(torch.tensor(self.d_model, dtype=torch.float))
87
 
 
 
 
88
  src = self.pos_encoder(src)
89
  tgt = self.pos_encoder(tgt)
90
 
 
 
 
91
  # Transform
92
  output = self.transformer(
93
  src,
@@ -128,7 +133,7 @@ class ModelInference:
128
  token=token
129
  )
130
 
131
- # Load model data first to get configuration
132
  self.logger.info("Loading model data...")
133
  model_data = torch.load(
134
  model_path,
@@ -140,20 +145,21 @@ class ModelInference:
140
  with open(tokenizer_path, 'r', encoding='utf-8') as f:
141
  tokenizer_data = json.load(f)
142
 
143
- # Initialize tokenizer with the same vocabulary size as the saved model
144
  self.vocab = tokenizer_data['vocab']
145
- vocab_size = len(self.vocab) # Use exact vocab size from saved model
146
 
 
147
  self.special_tokens = {
148
- "<user>": vocab_size,
149
- "<assistant>": vocab_size + 1,
150
- "<sep>": vocab_size + 2,
151
- "<eos>": vocab_size + 3
152
  }
153
 
154
- # Initialize model with exact vocab size
155
  self.model = ImprovedTransformer(
156
- vocab_size=vocab_size + 4, # Add exactly 4 special tokens
157
  d_model=512,
158
  nhead=8,
159
  num_encoder_layers=3,
@@ -161,19 +167,8 @@ class ModelInference:
161
  dim_feedforward=2048
162
  ).to(self.device)
163
 
164
- # Fix state dict keys
165
- fixed_state_dict = {}
166
- for k, v in model_data['model_state_dict'].items():
167
- if k.startswith('transformer.'):
168
- fixed_state_dict[k] = v
169
- elif k.startswith('pos_encoder.'):
170
- if k == 'pos_encoder.pe':
171
- fixed_state_dict['pos_encoder.pe'] = v
172
- else:
173
- fixed_state_dict[k] = v
174
-
175
  # Load state dict
176
- self.model.load_state_dict(fixed_state_dict, strict=True)
177
  self.model.eval()
178
 
179
  self.logger.info("Model loaded successfully")
 
9
  # Configuration constants
10
  MODEL_REPO = "Gajendra5490/Scrached_Trained_Model"
11
  CURRENT_USER = "gajendra82"
12
+ CURRENT_UTC = "2025-05-06 16:00:41"
13
 
14
  def setup_logging():
15
  logging.basicConfig(
 
28
  super().__init__()
29
  self.dropout = torch.nn.Dropout(p=dropout)
30
 
31
+ pe = torch.zeros(max_len, 1, d_model) # Changed dimension order to match saved model
32
  position = torch.arange(0, max_len, dtype=torch.float).unsqueeze(1)
33
  div_term = torch.exp(torch.arange(0, d_model, 2).float() * (-torch.log(torch.tensor(10000.0)) / d_model))
34
+ pe[:, 0, 0::2] = torch.sin(position * div_term)
35
+ pe[:, 0, 1::2] = torch.cos(position * div_term)
 
36
  self.register_buffer('pe', pe)
37
 
38
  def forward(self, x):
39
+ x = x + self.pe[:x.size(0)]
40
  return self.dropout(x)
41
 
42
  class ImprovedTransformer(torch.nn.Module):
 
84
  src = self.embedding(src) * torch.sqrt(torch.tensor(self.d_model, dtype=torch.float))
85
  tgt = self.embedding(tgt) * torch.sqrt(torch.tensor(self.d_model, dtype=torch.float))
86
 
87
+ src = src.transpose(0, 1) # Change to time-first
88
+ tgt = tgt.transpose(0, 1) # Change to time-first
89
+
90
  src = self.pos_encoder(src)
91
  tgt = self.pos_encoder(tgt)
92
 
93
+ src = src.transpose(0, 1) # Back to batch-first
94
+ tgt = tgt.transpose(0, 1) # Back to batch-first
95
+
96
  # Transform
97
  output = self.transformer(
98
  src,
 
133
  token=token
134
  )
135
 
136
+ # Load model data first
137
  self.logger.info("Loading model data...")
138
  model_data = torch.load(
139
  model_path,
 
145
  with open(tokenizer_path, 'r', encoding='utf-8') as f:
146
  tokenizer_data = json.load(f)
147
 
148
+ # Get exact vocabulary size from the saved model
149
  self.vocab = tokenizer_data['vocab']
150
+ vocab_size = 1747 # Exact size from the saved model
151
 
152
+ # Initialize special tokens to match the saved model
153
  self.special_tokens = {
154
+ "<user>": vocab_size - 4,
155
+ "<assistant>": vocab_size - 3,
156
+ "<sep>": vocab_size - 2,
157
+ "<eos>": vocab_size - 1
158
  }
159
 
160
+ # Initialize model with exact vocab size from saved model
161
  self.model = ImprovedTransformer(
162
+ vocab_size=vocab_size, # Use exact size
163
  d_model=512,
164
  nhead=8,
165
  num_encoder_layers=3,
 
167
  dim_feedforward=2048
168
  ).to(self.device)
169
 
 
 
 
 
 
 
 
 
 
 
 
170
  # Load state dict
171
+ self.model.load_state_dict(model_data['model_state_dict'])
172
  self.model.eval()
173
 
174
  self.logger.info("Model loaded successfully")