Upload model_v5.py with huggingface_hub
Browse files- model_v5.py +14 -1
model_v5.py
CHANGED
|
@@ -232,7 +232,9 @@ class GPTV5(nn.Module):
|
|
| 232 |
@torch.no_grad()
|
| 233 |
def generate(self, idx, max_new_tokens, temperature=1.0, top_k=None,
|
| 234 |
repetition_penalty=1.15, no_repeat_ngram_size=3,
|
| 235 |
-
max_context=None):
|
|
|
|
|
|
|
| 236 |
if max_context is None:
|
| 237 |
max_context = self.rope_cos.size(0)
|
| 238 |
for _ in range(max_new_tokens):
|
|
@@ -244,6 +246,9 @@ class GPTV5(nn.Module):
|
|
| 244 |
for b in range(idx.size(0)):
|
| 245 |
seen = set(idx[b].tolist()[-256:])
|
| 246 |
for tok in seen:
|
|
|
|
|
|
|
|
|
|
| 247 |
if logits[b, tok] > 0:
|
| 248 |
logits[b, tok] /= repetition_penalty
|
| 249 |
else:
|
|
@@ -258,6 +263,9 @@ class GPTV5(nn.Module):
|
|
| 258 |
for i in range(len(tokens) - n + 1):
|
| 259 |
if tuple(tokens[i:i+n-1]) == prefix:
|
| 260 |
banned.add(tokens[i+n-1])
|
|
|
|
|
|
|
|
|
|
| 261 |
for tok in banned:
|
| 262 |
logits[b, tok] = -float("inf")
|
| 263 |
|
|
@@ -267,6 +275,11 @@ class GPTV5(nn.Module):
|
|
| 267 |
probs = F.softmax(logits, dim=-1)
|
| 268 |
next_id = torch.multinomial(probs, num_samples=1)
|
| 269 |
idx = torch.cat([idx, next_id], dim=1)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 270 |
return idx
|
| 271 |
|
| 272 |
|
|
|
|
| 232 |
@torch.no_grad()
|
| 233 |
def generate(self, idx, max_new_tokens, temperature=1.0, top_k=None,
|
| 234 |
repetition_penalty=1.15, no_repeat_ngram_size=3,
|
| 235 |
+
max_context=None, eos_token_id=None):
|
| 236 |
+
"""eos_token_id verildiyse model bu token'i sample ettiginde
|
| 237 |
+
early stop. SFT modelleri icin EOT (=0) onerilir."""
|
| 238 |
if max_context is None:
|
| 239 |
max_context = self.rope_cos.size(0)
|
| 240 |
for _ in range(max_new_tokens):
|
|
|
|
| 246 |
for b in range(idx.size(0)):
|
| 247 |
seen = set(idx[b].tolist()[-256:])
|
| 248 |
for tok in seen:
|
| 249 |
+
# EOS token'a rep penalty UYGULAMA — durmasi gerek
|
| 250 |
+
if eos_token_id is not None and tok == eos_token_id:
|
| 251 |
+
continue
|
| 252 |
if logits[b, tok] > 0:
|
| 253 |
logits[b, tok] /= repetition_penalty
|
| 254 |
else:
|
|
|
|
| 263 |
for i in range(len(tokens) - n + 1):
|
| 264 |
if tuple(tokens[i:i+n-1]) == prefix:
|
| 265 |
banned.add(tokens[i+n-1])
|
| 266 |
+
# EOS asla banlanmasin
|
| 267 |
+
if eos_token_id is not None:
|
| 268 |
+
banned.discard(eos_token_id)
|
| 269 |
for tok in banned:
|
| 270 |
logits[b, tok] = -float("inf")
|
| 271 |
|
|
|
|
| 275 |
probs = F.softmax(logits, dim=-1)
|
| 276 |
next_id = torch.multinomial(probs, num_samples=1)
|
| 277 |
idx = torch.cat([idx, next_id], dim=1)
|
| 278 |
+
|
| 279 |
+
# Early stop — batch'teki TUM ornek EOS'a ulastiysa
|
| 280 |
+
if eos_token_id is not None:
|
| 281 |
+
if (next_id == eos_token_id).all():
|
| 282 |
+
break
|
| 283 |
return idx
|
| 284 |
|
| 285 |
|