⚔️ رستم (Rostam AI) - نسخه چهارم (V4)
مدل زبانی بومی، حماسی و دستورپذیر زبان پارسی | 36 لایه ژرف
A Deeply Layered, Instruct-Tuned Persian Language Model
📸 نگاهی به پروژه / Project Showcase
📝 معرفی پروژه (Persian)
پروژه رستم (Rostam) یک تلاش مستقل و گامبهگام برای خلق یک مدل زبانی تخصصی (LLM) در زبان پارسی است که تکامل خود را از ریشههای حماسی و ادبیات کهن آغاز کرده و اکنون به توانایی درک دستورات مدرن (Instruct-Tuning) رسیده است. در آخرین بهروزرسانی (Rostam V4)، ساختار مدل با استفاده از متدولوژی Progressive Layer Stacking به ۳۶ لایه ژرف ارتقا یافته و وزنهای آن روی اقیانوسی از دادههای محاورهای و فرمانی صیقل داده شدهاند تا بدون از دست دادن ریشههای ادبی خود، دستورات پیچیده کاربر را پردازش کند.
📜 بیلان و نقشه راه تکاملی دادهها (Dataset Evolution Roadmap)
رستم کورکورانه و از صفر روی دیتای مخلوط ترین نشده است؛ بلکه یک سیر تکاملی ارگانیک و لایه به لایه را طی کرده تا دانش ادبی عمیق را به منطق مدرن پیوند بزند:
فاز اول: سرآغاز حماسی (The Epic Genesis)
- داده: ۹۹,۰۰۰ ردیف خالص و تفکیکشده از شاهنامه فردوسی.
- هدف: یادگیری ساختار، فصاحت، وزن و ژنتیک زبان پارسی در بالاترین سطح بلاغت.
فاز دوم: گنجینه عرفان و غزل (The Classical Treasury)
- داده: ۱۱۱,۰۰۰ بیت برگزیده از پایگاه گنجور (حافظ، سعدی، مولانا و...).
- تغییرات معماری: ارتقای مدل به ۱۴ لایه.
- هدف: تعریض دایره واژگان کهن، درک استعارات پیچیده و تثبیت ساختار مورفولوژیک زبان.
فاز سوم: ورود به جهان دستورپذیری (The Instruct Awakening)
- داده: ۵۰,۰۰۰ ردیف ابتدایی دیتاست Persian Alpaca (بخش ۰ تا ۵۰k).
- وضعیت معماری: حفظ ۱۴ لایه گنجور (تثبیت امبدینگ بدون تغییر ابعاد جهت تطبیق پذیری فرمانی).
- هدف: یادگیری اولیه ساختار سناریوهای «دستور -> پاسخ».
فاز چهارم: جهش ساختاری اول (The Architectural Leap)
- داده: ۱۰۰,۰۰۰ ردیف دوم دیتاست Persian Alpaca (بخش ۵۰k تا ۱۵۰k).
- تغییرات معماری: جهش فرکانسی و ساختاری به ۲۴ لایه.
- هدف: افزایش ظرفیت محاسباتی مدل برای تحلیل گزارههای طولانیتر.
فاز پنجم: مگا آپگرید ۳۶ لایه (The Mega Stack - Current V4)
- داده: ۱۵۰,۰۰۰ ردیف سوم دیتاست Persian Alpaca (بخش ۱۵۰k تا ۳۰۰k).
- تغییرات معماری: تکثیر و ارتقای پیشرفته به ۳۶ لایه مستقل (مدل فعلی).
- هدف: تعمیق فهم مفاهیم انتزاعی، استدلالهای منطقی چندمرحلهای و هماهنگی کامل فرمت متن.
🛠️ مشخصات فنی و معماری (Technical Specifications)
- Base Architecture: GPT-2 (Customized for Persian Language)
- Number of Layers: 36 Layers (Scaled up via progressive block expansion)
- Tokenizer: Custom Byte-Level BPE Tokenizer (Optimized for Persian character sets, minimizing token fragmentation)
- Context Length: 256 Tokens
- Total Parameters: 117.5M+ Active Parameters
- Vocabulary Size: Resized & Synced with the dedicated Fast Tokenizer configuration
🇬🇧 English Project Summary
Rostam V4 is a specialized, deeply stacked Persian language model that bridges the gap between classical Persian literature and modern chat/instruct applications.
Instead of training on mixed data from scratch, Rostam undergoes a sequential continual pre-training and layer-stacking process. It started its journey by absorbing 99,000 pure rows of the Epic Shahnameh, followed by 111,000 couplets of classical poetry from Ganjoor while expanding to 14 layers.
To introduce instruction-following capabilities, it was exposed to the Persian Alpaca dataset. Throughout this phase, the architecture was dynamically scaled first to 24 layers and ultimately to 36 layers, covering a cumulative total of 300,000 instruction-response pairs. The resulting model retains an intricate understanding of Persian syntax and cultural nuances while being highly responsive to direct prompts and user commands.
🚀 نحوه استفاده در پایتون (Quick Start Guide)
برای استفاده از مدل رستم نسخه چهارم، میتوانید از کد استاندارد کتابخانه transformers استفاده کنید:
import torch
from transformers import PreTrainedTokenizerFast, GPT2LMHeadModel
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
# 1. لود کردن توکنایزر اختصاصی و مدل ۳۶ لایهای رستم
tokenizer = PreTrainedTokenizerFast.from_pretrained("prog-love/rostam")
model = GPT2LMHeadModel.from_pretrained("prog-love/rostam").to(device)
model.eval()
# 2. آمادهسازی پرامپت با فرمت استاندارد Instruct
prompt = "دستور: یک پند اخلاقی به من بگو\nپاسخ:"
inputs = tokenizer(prompt, return_tensors="pt").to(device)
# 3. تولید متن توسط مدل
with torch.no_grad():
outputs = model.generate(
inputs.input_ids,
attention_mask=inputs.attention_mask,
max_new_tokens=100,
do_sample=True,
temperature=0.75,
top_p=0.9,
repetition_penalty=1.3,
pad_token_id=tokenizer.pad_token_id,
eos_token_id=tokenizer.eos_token_id
)
# 4. نمایش پاسخ
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
- Downloads last month
- 2,938