Persian Mini LM — مدل زبانی کوچک فارسی

مدل SmolLM2-135M-Instruct (< 1B پارامتر) که روی دو دیتاست فارسیِ اکانت AIgenius1 سازگارسازی (fine-tune) شده است:

  • AIgenius1/zoomit-persian-pretraining-dataset (مقالات خبری زومیت)
  • AIgenius1/persian-pretraining-dataset (مقالات ویکی‌پدیای فارسی)

فایل‌های این مخزن

مسیر توضیح
model.safetensors و فایل‌های ریشه مدل کامل آموزش‌دیده (fp32)
pruned_fp32/ نسخه هرس‌شده ساختاری 20٪ نورون‌های MLP (سریع‌تر، سبک‌تر)
model_int8_dynamic.pt وزن‌های کوانتیزه INT8 داینامیک (حجم ~4x کمتر)
benchmark_report_fa.pdf گزارش کامل بنچمارک و بهینه‌سازی (فارسی)
benchmark_results.json داده‌های خام همه بنچمارک‌ها
train_log.json منحنی Loss آموزش

نتایج بنچمارک (CPU دو هسته‌ای، 2 نخ)

مدل پارامتر (M) وزن در RAM (MB) سرعت Decode (tok/s) سرعت Prefill (tok/s) PPL زومیت PPL ویکی QA فارسی (%) QA انگلیسی (%)
مدل پایه SmolLM2-135M-Instruct — fp32 134.5 538.1 21.34 503.39 7.64 8.02 12.5 75.0
مدل پایه — کوانتیزه INT8 28.3 113.4 36.4 867.67 17.3 16.79 6.2 50.0
مدل پایه — هرس‌شده 20% — fp32 118.5 474.2 23.02 559.15 9.67 9.78 12.5 25.0
آموزش‌دیده فارسی — fp32 134.5 538.1 21.7 531.25 4.79 5.56 18.8 100.0
آموزش‌دیده فارسی — کوانتیزه INT8 28.3 113.4 37.49 940.74 9.19 9.98 6.2 50.0
آموزش‌دیده فارسی — هرس‌شده 20% — fp32 118.5 474.2 22.24 554.55 5.73 6.29 6.2 25.0
آموزش‌دیده فارسی — هرس‌شده + کوانتیزه INT8 28.3 113.4 37.98 941.74 10.75 11.35 6.2 0.0

افزایش سرعت نهایی (هرس‌شده + INT8 نسبت به پایه fp32): ~1.75x

نحوه استفاده

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

tok = AutoTokenizer.from_pretrained("AIgenius1/persian-mini-lm")
model = AutoModelForCausalLM.from_pretrained("AIgenius1/persian-mini-lm", dtype=torch.float32)

msgs = [{"role": "user", "content": "سلام!"}]
text = tok.apply_chat_template(msgs, tokenize=False, add_generation_prompt=True)
enc = tok(text, return_tensors="pt")
out = model.generate(**enc, max_new_tokens=64, do_sample=False)
print(tok.decode(out[0][enc.input_ids.shape[1]:], skip_special_tokens=True))

استفاده از نسخه کوانتیزه INT8 (سریع‌ترین حالت روی CPU)

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

tok = AutoTokenizer.from_pretrained("AIgenius1/persian-mini-lm")
model = AutoModelForCausalLM.from_pretrained("AIgenius1/persian-mini-lm")
model = torch.ao.quantization.quantize_dynamic(model, {torch.nn.Linear}, dtype=torch.qint8)

پیکربندی آموزش

  • گام‌ها: 250 | batch: 4 | طول دنباله: 256 | بهینه‌ساز: AdamW (lr=2e-4، cosine، warmup 15)
  • داده: 9MB متن فارسی پاک‌سازی‌شده از هر دو دیتاست (2.3M توکن، نمونه‌گیری به دلیل محدودیت CPU)
  • هرس: ساختاری (Structured) 20٪ نورون‌های میانی MLP بر اساس اهمیت L1
  • کوانتیزاسیون: INT8 داینامیک روی لایه‌های Linear

محدودیت‌ها

مدل بسیار کوچک است (135M) و کیفیت استدلالی محدودی دارد؛ پاسخ‌های فارسی آن پس از سازگارسازی روان‌تر شده‌اند اما برای کاربرد جدی توصیه نمی‌شود. افت کیفیت نسخه INT8 روی مدل‌های بسیار کوچک قابل توجه است (جزئیات در گزارش PDF).

Downloads last month
32
Safetensors
Model size
0.1B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for AIgenius1/persian-mini-lm

Finetuned
(410)
this model