پرش به محتوای اصلی

HowLLMsWork؛ از token تا تولید متن با پیاده‌سازی از صفر

یک پیاده‌سازی Python/NumPy برای فهم مسیر داخلی Transformer و LLM؛ از tokenization و attention تا training، sampling، autoregressive generation و KV cache.

زمینه

مدل‌های زبانی در production به‌شدت پیچیده‌اند و معمولاً بسیاری از جزئیات داخلی پشت frameworkها پنهان می‌شود. هدف این پروژه بازسازی مقیاس production نیست؛ هدف، قابل مشاهده کردن مسیر داده و ریاضیات اصلی مدل از token تا next-token prediction است.

مسئله

پروژه باید زنجیره‌ای کامل و قابل بررسی بسازد: تبدیل متن به token، تشکیل embedding، محاسبه Q/K/V و attention، عبور از Transformer block، محاسبه loss و gradient، و در نهایت generation و sampling؛ بدون این‌که implementation اصلی به یک API سطح‌بالای مدل متکی باشد.

محدودیت‌ها و الزامات

  • Python و NumPy به‌عنوان پایه پیاده‌سازی
  • اجزای کوچک و قابل بررسی برای attention، training و inference
  • پیاده‌سازی صریح backward و gradient flow در بخش‌های اصلی
  • پشتیبانی از greedy، temperature، top-k و top-p sampling
  • مسیر cached inference با prefill/decode و KV cache
  • تفکیک backbone، generation و sliding-context policy

رویکرد

text
Text -> Tokenization -> Embeddings -> Q/K/V
     -> Attention -> Transformer Block -> Logits
     -> Loss -> Backpropagation -> Update
     -> Autoregressive Generation -> Sampling -> KV Cache

ساختار پروژه به‌صورت جزءبه‌جزء سازمان‌دهی شده تا هر مرحله را بتوان جداگانه مطالعه و آزمون کرد. inference نیز دو مسیر مستقیم و cached دارد و prefill/decode به‌عنوان interfaceهای مشخص در مدل‌سازی آمده‌اند.

تصمیم‌ها و مصالحه‌ها

تصمیمدلیل
پیاده‌سازی از صفر با NumPyهدف پروژه فهم mechanics است، نه رقابت performance با frameworkهای production.
تفکیک آموزش و inferenceچرخه training با generation و cache semantics قاطی نمی‌شود.
Sampling به‌صورت strategyاثر temperature، top-k و top-p قابل مشاهده و مقایسه است.
KV cache با prefill/decodeهزینه محاسبه تکراری در autoregressive inference به‌صورت صریح قابل مطالعه است.
Sliding-window در لایه generationbackbone قرارداد context ثابت خود را حفظ می‌کند و policy در لایه بالاتر می‌ماند.

نتیجه

خروجی یک مسیر آموزشی کامل از tokenization تا generation است که اجزای Transformer، training objective، sampling و KV-cache inference را به implementationهای کوچک و قابل بررسی تبدیل می‌کند. این پروژه بیشتر از آن‌که یک محصول LLM باشد، یک ابزار برای فهم عمیق mechanics و منطق ریاضی آن است.

عمق فنی

  • Token embeddings و positional information
  • Scaled dot-product attention و causal masking
  • Multi-head attention، residual connection، LayerNorm و FFN
  • Cross-entropy، backpropagation و parameter updates
  • Greedy، temperature، top-k و top-p sampling
  • KV cache، cached attention و prefill/decode
  • Sliding context window و جداسازی generation policy
Scaled dot-product attention
Attention(Q,K,V)=softmax(QKTdh)V\operatorname{Attention}(Q,K,V)=\operatorname{softmax}\left(\frac{QK^T}{\sqrt{d_h}}\right)V

شواهد

کد و مسیر آموزشی پروژه به‌صورت عمومی در GitHub قابل بررسی است.

GitHub — HowLLMsWork

Repository اجزای tokenization، attention، Transformer، training، inference و KV cache را با ساختار قابل مطالعه ارائه می‌کند.

باز کردن منبع

نیاز به یک قابلیت AI فراتر از یک API wrapper دارید؟

می‌توان مسئله را از داده، مدل و evaluation شروع کرد و سپس آن را به یک قابلیت قابل استفاده در محصول رساند.