Vex Model Banner

Vex-base-3.5M-x1 🧠🚀

Vex یک مدل زبان مینیاتوری استدلال‌محور (Reasoning-based Model) فارسی است که به صورت کاملاً بومی و از صفر مطلق (From Scratch) توسط تیم DENLI AI طراحی، معماری و آموزش داده شده است. این مدل مجهز به یک زنجیره تفکر داخلی (Reasoning Chain) است که به آن اجازه می‌دهد قبل از تولید پاسخ نهایی، نیت کاربر را تحلیل و دسته‌بندی کند.


🌟 ویژگی‌های کلیدی مدل (Key Features)

  • معماری فوق‌بهینه (Edge-Ready): استفاده از لایه‌های بازگشتی GRU بهینه‌سازی شده با حجم بسیار کم (~13.5 MB) که به مدل اجازه می‌دهد روی ضعیف‌ترین CPUها بدون نیاز به کارت گرافیک و به صورت کاملاً آفلاین و زیر ۱ ثانیه استدلال کند.
  • زنجیره تفکر چندمرحله‌ای (Reasoning Chain): پیاده‌سازی مکانیزم استدلال داخلی با توکن‌های اختصاصی C: (تفکر) قبل از پاسخ نهایی به سبک مدل‌های پیشرفته استدلال‌محور دنیا.
  • توکنایزر اختصاصی فارسی: آموزش دیده با الگوریتم BPE (Byte Pair Encoding) منحصربه‌فرد برای زبان فارسی با ظرفیت ۳,۰۰۰ توکن جهت بهینه‌سازی پردازش متون فارسی.
  • مهار هذیان و اورفیت: اعمال لایه‌های Dropout مستقل (0.4) و بهینه‌ساز AdamW با Weight Decay جهت پایداری پاسخ‌ها و جلوگیری از تداخل دیتابیس.

📐 مشخصات فنی و معماری (Specifications)

  • تعداد کل پارامترها: ۳.۵ میلیون پارامتر (3.5M)
  • حجم فایل روی دیسک: ۱۳,۸۶۹ کیلوبایت (~۱۳.۵ مگابایت)
  • اندازه واژگان (Vocab Size): 3,000 توکن فارسی
  • ابعاد بردارهای جایگذاری (Embedding Dim): 256
  • ابعاد لایه پنهان (Hidden Dim): 384
  • تعداد لایه‌ها: 2-layer GRU
  • فرمت ذخیره‌سازی: پایتورچ استاندارد (.pth)

برای استفاده از مدل

  • ابتدا فایل مدل به همراه توکنایز رو دانلود کنید

📊 نمونه ساختار دیتای آموزش (Dataset Sample)

دیتابیس این مدل با ساختار استدلال تعادلی تنظیم شده است. در ادامه دو نمونه ردیف از متون آموزشی مدل آورده شده است:

{"A": "چیکار میکنی؟", "T": "کاربر نقش من رو پرسیده، باید توضیح بدم.", "Q": "سلام! من یک مدل زبانی هستم و به سوالاتت پاسخ میدم!"}
{"A": "اهل کجایی؟", "T": "کاربر محل ساخت من رو پرسیده، باید بگم.", "Q": "سلام! من اینجا در فضای مجازی به دنیا اومدم، ولی سازندم از ایران شروع کردن!"}

💻 آموزش نحوه استفاده و استنتاج (Inference Guide)

برای اجرای مدل و دریافت پاسخ به همراه زنجیره تفکر در محیط پایتون، از اسکریپت استاندارد زیر استفاده کنید:

import torch
import torch.nn as nn
from tokenizers import Tokenizer

# ۱. تعریف ساختار معماری مدل
class VexReasoningModel(nn.Module):
    def __init__(self, vocab_size, embed_dim=256, hidden_dim=384, num_layers=2):
        super(VexReasoningModel, self).__init__()
        self.embedding = nn.Embedding(vocab_size, embed_dim, padding_idx=0)
        self.gru = nn.GRU(embed_dim, hidden_dim, num_layers, batch_first=True, dropout=0.4)
        self.fc = nn.Linear(hidden_dim, vocab_size)
        
    def forward(self, x, hidden=None):
        out = self.embedding(x)
        out, hidden = self.gru(out, hidden)
        return self.fc(out), hidden

# ۲. بارگذاری توکنایزر و وزن‌های مدل
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
tokenizer = Tokenizer.from_file("bpe_tokenizer.json")
model = VexReasoningModel(vocab_size=tokenizer.get_vocab_size()).to(device)
model.load_state_dict(torch.load("vex_reasoning_weights.pth", map_location=device))
model.eval()

# ۳. تابع استنتاج (Generation)
def generate_response(prompt, max_len=100):
    input_str = f"A: {prompt}\nC:"
    tokens = tokenizer.encode(input_str).ids
    input_tensor = torch.tensor([tokens], dtype=torch.long).to(device)
    
    generated = []
    hidden = None
    
    with torch.no_grad():
        for _ in range(max_len):
            outputs, hidden = model(input_tensor, hidden)
            next_token = outputs[0, -1, :].argmax().item()
            if next_token == 0:  # توکن پایان یا پدینگ
                break
            generated.append(next_token)
            input_tensor = torch.tensor([[next_token]], dtype=torch.long).to(device)
            
    return tokenizer.decode(generated)

# تست مدل
print(generate_response("یک بازی اکشن معرفی کن"))

🛠️ آموزش فاین‌تیونینگ و انجماد لایه‌ها (Fine-Tuning & Layer Freezing)

برای ارتقای مدل و تزریق دانش جدید بدون فراموشی اطلاعات قبلی (Catastrophic Forgetting)، لایه‌های پایه را منجمد کرده و فاز دوم آموزش را با اسکریپت زیر در Google Colab Pro+ اجرا کنید:

import torch
import torch.optim as optim
import torch.nn as nn

# بارگذاری مدل و وزن‌های اولیه
model = VexReasoningModel(vocab_size=3000).to(device)
model.load_state_dict(torch.load("vex_reasoning_weights.pth", map_location=device))

# ---- تکنیک انجماد لایه‌ها برای حفظ دانش قبلی تیم DENLI AI ----

# ۱. فریز کردن لایه امبدینگ پایه
for param in model.embedding.parameters():
    param.requires_grad = False
    
# ۲. فریز کردن لایه اول GRU و باز گذاشتن لایه دوم برای دانش جدید
for name, param in model.gru.named_parameters():
    if 'l0' in name: # Layer 0 (Old Knowledge)
        param.requires_grad = False
    else:            # Layer 1 (New Knowledge)
        param.requires_grad = True

# ۳. باز نگه داشتن لایه نهایی خروجی
for param in model.fc.parameters():
    param.requires_grad = True

# تنظیم اپتیمایزر فقط برای پارامترهای فعال
active_params = [p for p in model.parameters() if p.requires_grad]
optimizer = optim.AdamW(active_params, lr=1e-4, weight_decay=0.01)

# کدهای استاندارد ترینینگ لوپ پایتورچ را در ادامه قرار دهید...

👥 تیم سازنده (Development Team)

این پروژه با افتخار توسط آژانس هوش مصنوعی DENLI AI توسعه یافته و بومی‌سازی شده است.

  • توسعه‌دهنده اصلی و معمار هوش مصنوعی: علی‌اصغر قدیری (ALIASGHARQADIRI)
  • تیم تحقیق و توسعه: شمس و اعضای توسعه فنی DENLI AI

📄 لایسنس (License)

این مدل تحت لایسنس MIT منتشر شده است. استفاده تجاری، شخصی و توسعه مجدد آن با ذکر نام سازندگان اولیه کاملاً آزاد است.


Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Space using DENLIAI/Vex-Base-3.5M-x1 1