- Vex-base-3.5M-x1 🧠🚀
- 🌟 ویژگیهای کلیدی مدل (Key Features)
- 📐 مشخصات فنی و معماری (Specifications)
- برای استفاده از مدل
- 📊 نمونه ساختار دیتای آموزش (Dataset Sample)
- 💻 آموزش نحوه استفاده و استنتاج (Inference Guide)
- 🛠️ آموزش فاینتیونینگ و انجماد لایهها (Fine-Tuning & Layer Freezing)
- 👥 تیم سازنده (Development Team)
- 📄 لایسنس (License)
- 🌟 ویژگیهای کلیدی مدل (Key Features)
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 منتشر شده است. استفاده تجاری، شخصی و توسعه مجدد آن با ذکر نام سازندگان اولیه کاملاً آزاد است.
