Downloads · 30 days
14
8% of all-time downloads
SykoSLM/SykoLLM-CMN-V5.2-Beta
SykoLLM-CMN-V5.2-Beta is a text generation model from SykoSLM. Use it when you need the model to write or continue text. The card lists the license as apache-2.0.
SykoLLM-CMN, Türkçe için sıfırdan tasarlanmış, özgün bir Contextual Memory Network (CMN) mimarisine sahip bir dil modelidir. Standart Transformer bloklarının yanına yerleştirilmiş yerel ve global bellek kapıları sayes…
Downloads · 30 days
14
8% of all-time downloads
All-time downloads
173
Public
Parameters
226M
904 MB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors904 MB · 100%
From the Hugging Face model README
SykoLLM-CMN, Türkçe için sıfırdan tasarlanmış, özgün bir Contextual Memory Network (CMN) mimarisine sahip bir dil modelidir. Standart Transformer bloklarının yanına yerleştirilmiş yerel ve global bellek kapıları sayesinde, uzun bağlamları chunk'lara bölerek işler ve bilgiyi oturumlar boyunca taşıyabilir.
| Özellik | Değer |
|---|---|
| Mimari | Transformer + CMN (Contextual Memory Network) |
| Parametre Sayısı | ~100-300M |
| Diller | Türkçe, İngilizce |
| Bağlam Uzunluğu | 1024 token |
| Chunk Boyutu | 128 token |
| Katman Sayısı | 24 |
| Model Boyutu (d_model) | 768 |
| Attention Head | 6 |
| Lokal Bellek Token | 16 |
| Global Bellek Token | 32 |
| Vocab Size | 32.000 |
| Lisans | Apache 2.0 |
SykoLLM-CMN, standart decoder-only modellerden farklı olarak iki katmanlı bir bellek sistemi içerir:
Lokal Bellek (SykoMemoryGate): Her chunk işlenirken bir önceki chunk'tan gelen bilgiyi taşır. Klasik GRU/LSTM kapı mantığına benzer şekilde çalışır — ne unutacağını, ne öğreneceğini öğrenir.
Global Bellek (SykoSmartMemoryGate): Tüm sekansa ait özet bilgiyi tutar. Cross-attention kullanarak "bu oturumda benim için ne önemli?" diye sorar ve buna göre güncellenir.
Bu yapı sayesinde model, bağlamı chunk'lara bölerek işlerken uzun vadeli bağlamı kaybetmez.
Input → [Global Mem | Local Mem | Chunk Tokens] → Transformer → Output
↑ ↑
SmartMemoryGate MemoryGate
(cross-attention) (forget/update)
import torch
import torch.nn.functional as F
import re
def sample_next_token(logits, temperature=0.1, top_p=0.9, repetition_penalty=1.2, input_ids=None):
# Tekrar cezası
if input_ids is not None:
for token_id in set(input_ids[0].tolist()):
logits[token_id] /= repetition_penalty
logits = logits / temperature
probs = F.softmax(logits, dim=-1)
sorted_probs, sorted_indices = torch.sort(probs, descending=True)
cumulative_probs = torch.cumsum(sorted_probs, dim=-1)
sorted_indices_to_remove = cumulative_probs - sorted_probs > top_p
sorted_probs[sorted_indices_to_remove] = 0
sorted_probs /= sorted_probs.sum()
next_token = torch.multinomial(sorted_probs, num_samples=1)
return sorted_indices[next_token]
def fix_spacing(text):
# Noktalama önündeki boşlukları sil
text = re.sub(r'\s+([.,!?;:)])', r'\1', text)
# Fazla boşlukları tek boşluğa indir
text = re.sub(r'\s+', ' ', text)
return text.strip()
prev_memory = torch.zeros(1, config.num_memory_tokens, config.d_model, device=device)
global_memory = torch.zeros(1, config.num_global_memory_tokens, config.d_model, device=device)
text = "Kullanıcı: Merhaba, nasılsın?\nAsistan:"
inputs = tokenizer(text, return_tensors="pt").to(device)
generated = inputs["input_ids"].clone()
with torch.no_grad():
for _ in range(100):
input_chunk = generated[:, -128:]
logits, prev_memory, global_memory = model(
input_ids=input_chunk,
prev_memory=prev_memory,
global_memory=global_memory
)
next_token = sample_next_token(
logits[0, -1, :],
temperature=0.1,
top_p=0.9,
repetition_penalty=1.3,
input_ids=generated
).unsqueeze(0)
generated = torch.cat([generated, next_token], dim=1)
if next_token.item() == tokenizer.eos_token_id:
break
output = tokenizer.decode(generated[0], skip_special_tokens=True, clean_up_tokenization_spaces=True)
print(fix_spacing(output))
Apache 2.0 — Ticari kullanıma açıktır. Detaylar için LICENSE dosyasına bakın.
SykoSLM — Türkçe doğal dil işleme için özgün mimari araştırmaları.