SykoLLM-CMN V5.2 Beta

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.


Model Detayları

Ö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

CMN Mimarisi Nedir?

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)

Kullanım

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))

Eğitim

  • Dataset: SykoSLM/DeepReason-Mix
  • Eğitim Örneği: 300.000
  • Epochs: 2
  • Batch Size: 32
  • Gradient Accumulation: 4
  • Optimizer: AdamW
  • LR Scheduler: Cosine Annealing + Linear Warmup
  • Başlangıç LR: 3e-4 → Min: 1e-6
  • Mixed Precision: FP16
  • Donanım: 2× NVIDIA T4 (Kaggle)

Sınırlamalar

  • Model hâlâ beta aşamasındadır, üretim ortamında kullanmadan önce test edin.
  • Uzun yanıtlarda tekrar ve tutarsızlık görülebilir.
  • Zararlı içerik filtrelemesi uygulanmamıştır, gerekirse kendi filtrenizi ekleyin.

Lisans

Apache 2.0 — Ticari kullanıma açıktır. Detaylar için LICENSE dosyasına bakın.


Yazar

SykoSLM — Türkçe doğal dil işleme için özgün mimari araştırmaları.

Downloads last month
87
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support