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 -> 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 در لایه generation | backbone قرارداد 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
شواهد
کد و مسیر آموزشی پروژه بهصورت عمومی در GitHub قابل بررسی است.
GitHub — HowLLMsWork
Repository اجزای tokenization، attention، Transformer، training، inference و KV cache را با ساختار قابل مطالعه ارائه میکند.
باز کردن منبعنیاز به یک قابلیت AI فراتر از یک API wrapper دارید؟
میتوان مسئله را از داده، مدل و evaluation شروع کرد و سپس آن را به یک قابلیت قابل استفاده در محصول رساند.