حجر المحول من الصفر
Type: Build
Languages: Python
Prerequisites: Phase 19 lessons 30 to 33 (tokenizer, embeddings, attention math, batched data loader)
Time: ~90 minutes
أهداف التعلم
- بناء كتلة تحويل في PyTorch من الأجزاء المتحركة الأربعة: LayerNorm، الاهتمام السببية متعددة الرأس، الاتصالات المتبقية، الموقف الحكيم MLP.
- ضع القواعد الطبقة في إعدادين (قبل LN وبعد LN) و اشرح لماذا يتم تدريبك بشكل مستقيم دون تسخين.
- تنفيذ التخفيض السببي داخل الرأس المتعددة الاهتمام حتى رمز
iلا أستطيع رؤية الرموزj > i. . . - تتبع تدفق التراجع عبر كلا المتغيرات على كومة من 12 طبقة وقراءة النتيجة دون تهويب اليد.
- إعادة استخدام الكتل كوحدة تساقط عندما تجمع الدروس التالية 124 مليون المعلمات GPT.
المشكلة
محول هو كتلة واحدة تكرر. إخطأ الكتلة مرة واحدة، كررها 12 مرة، وترسل نموذجاً يختلف في العصر الأول أو يحتاج إلى حرارة حارة لبقية الطريق. الوضعين الفاشلين الذي ستراهما في هذا الدروس ليسا غريبين. يظهرون عندما يتولى المتعلمون أول مرة حزمة من الكتل بشكل ساذج الأول هو طبقة الاهتمام التي تلتزم بالمستقبل. والآخر هو LayerNorm وضعت حيث لا يمكن أن تدمير الإشارة المتبقية في العمق.
الإصلاح هو ميكانيكي بمجرد رؤيته، والجكل لديه بالضبط اثنين من المسارات المتبقية ومواقف التطبيع بالضبط اثنين. اختيار المواقف بشكل صحيح وبقية كومة هو مجرد الحساب.
المفهوم
كل مقياس تعريف فقط كتلة المحول هي وظيفة التي تأخذ تنصر من الشكل (batch, sequence, embedding)و يعيد الجهاز نفس الشكل داخله، هناك طبقتان فرعية تقوم بعملها
flowchart TB X[Input embedding<br/>shape B, T, D] --> N1[LayerNorm 1] N1 --> MHA[Multi head causal attention] MHA --> R1[Add residual] X --> R1 R1 --> N2[LayerNorm 2] N2 --> MLP[Position wise MLP<br/>D to 4D to D] MLP --> R2[Add residual] R1 --> R2 R2 --> Y[Output, same shape]
هذا هو التغير السابق لـ LN. يقع LayerNorm داخل الفرع المتبقية ، قبل الطبقة الفرعية. الاتصال المتبقية يحمل الإشارة غير الطبيعية إلى الأمام.
يُحرك التنوع بعد LN إلى LayerNorm بعد إضافة البقية.
flowchart TB X[Input] --> MHA[Multi head causal attention] MHA --> R1[Add residual] X --> R1 R1 --> N1[LayerNorm 1] N1 --> MLP[Position wise MLP] MLP --> R2[Add residual] N1 --> R2 R2 --> N2[LayerNorm 2] N2 --> Y[Output]
الشكل هو نفسه. سلوك التدريب ليس كذلك. مع ما بعد LN، يجب أن يمر التراجع الذي يتدفق مرة أخرى من خلال المسار المتبقية عبر الطبقة. عند عمق اثني عشر وتيرة التعلم3e-4يقلل هذا التراجع بسرعة كافية لتحقيق جدول الحرارة. يترك Pre-LN المسار المتبقية غير طبيعي، لذلك ينتشر التراجع بشكل نظيف إلى طبقة التوابل. Pre-LN هو التكوين GPT-2 على المدى السفينة لهذا السبب.
الاهتمام العلوي متعدد الرأس
تعرض طبقة الفرعية للاهتمام المدخلات ثلاث طرق إلى استفسار ، مفتاح ، وموجهات القيمة. يتم إعادة تشكيل كل منها من (B, T, D)إلى(B, H, T, D/H)أينHهو عدد الرؤوس. الحسابات المحددة نقطة الاهتمام المنتجsoftmax(Q K^T / sqrt(d_k))لكل رأس، يغطي المثلث العلوي إلى اللانهاية السلبية، يطبق القناع عبر softmax، ثم يضاعف ب Vالرؤوس تُقَيَّدُ مرة أخرى في واحد(B, T, D)القناع هو الجزء الوحيد الذي يجعل النموذج سببياً
المجلس
يطبق MLP ذو المعرفة الموقف نفس شبكة الطبقتين لكل رمز بشكل مستقل. الواسعة الخفية أربع مرات عرض إدمج، والتنشيط هو GELU، والانقطاع يتبع الخط الثاني. لا توكنات تتحدث مع بعضها البعض داخل MLP. يحدث جميع الاختلاط الرمزي في الانتباه.
العلاقات المتبقية تفعل شيئان
يجعلان مسار التراجع إضافي عبر العمق ، مما يبقي معايير التراجع في المقياس عبر اثني عشر طبقة. كما يسمحون لكل كتلة بتعلم تحديث إضافي لممثلة التشغيل بدلاً من استبدال كامل. كلا التأثيرين هم السبب في تطورات كتلة.
بناءها
code/main.pyتطبيقات:
class LayerNormمع دراسة النطاق والتحول، eps المتحيزة، تطبيق لكل متجه رمزي.class MultiHeadAttentionمعnum_heads،head_dim = d_model // num_heads، التشويش المدمج QKV، مسجلة القناع السببية، الاهتمام والإقلاع المتبقي.class FeedForwardمع طبقتين خطية، تنشيط GELU، التوقف.class TransformerBlockمعpre_lnالعلم الذي يتحول بين الإختلافين.- عرض تجريبي يُبني كومة من قبل LN ذات 6 طبقات ومجموعة من بعد LN ذات 6 طبقات مع إدخالات ومطبوعات متطابقة (أ) شكل الخروج، (ب) معيار التراجع عند الإدراج بعد مرور واحد للخلف.
إشغله
bashpython3 code/main.pyالناتج: التحقق من الشكل على كلا الساقين ، معايير التراجع جنبا إلى جنب. تراجع إدراج ساق قبل LN أكبر من ساق بعد LN بنفس سرعة التعلم ، وهو الإشارة التجريبية قبل قطار LN دون تسخين.
الـ"كثيرة"
torchلـ الرياضيات التنسورية، والمرحلة الذاتية، وnn.Module-المحطة- لا , لا
transformersلا يوجد أوزان مسبقة، إنّ الحجر تمّ تنفيذه من البدائيين
أنماط الإنتاج في البرية
ثلاثة أنماط تحويل كتب الدراسة إلى شيء يمكنك شحن.
Fused QKV projection.ثلاثة طبقات خطية منفصلة تكلف ثلاثة إطلاقات للنواة وثلاثة مالمولات. طبقة خطية واحدة من الاحجام 3 * d_modelيقوم نفس العمل في إطلاق واحد ، ثم يقسّم الخروج على طول المحور الأخير. المسار المدمج أسرع على كل تسريع ويتطابق مع تنفيذات مرجعية GPT-2 ، LLaMA ، و Mistral جميع السفن.
Registered causal mask buffer.يعتمد القناع فقط على أقصى طول السياق.register_buffer، قطع النافذة النشطة لكل مرور إلى الأمام، وتفوت التخصيص لكل مكالمة. إنسيان هذا يحول القناع إلى نقطة ساخنة للمخصص في سياق طويل.
Dropout in two places, not three.ينتمي الانقطاع بعد الاهتمام softmax (انقطاع الاهتمام) وبعد الخط الثاني من MLP (انقطاع بقايا). إن الانقطاع على البقايا نفسها يكسر الهوية الإضافية التي تسمح لتدفق التدفق في العمق. حصلت بعض التطبيقات المبكرة على هذا الخطأ ودفع ثمن ذلك بتدريب هش.
استخدمها
- الكتلة في هذا الدروس تتصل مباشرة مع مجموعة GPT في الدروس 35 دون تعديل.
- التنوع السابق لـ LN هو ما يستخدمه كل درجة مفتوحة حديثة LLM. التنوع بعد LN هو ما استخدمه ورقة الاهتمام الأصلية لعام 2017. معرفة كل من ذلك يكفي لقراءة أي معمارة تشكيل القيود التي ستواجهها.
- تغيير GELU إلى SiLU و لديك تفعيل عائلة LLaMA تغيير LayerNorm إلى RMSNorm و لديك الطبيعية عائلة LLaMA نفس العظم
التمارين
- إضافة
bias=Falseعلامة على كل خطي في الكتلة. الوزن المفتوح الحديث LLMs السفينة دون تحيز على الطبقات الخطية. قياس كم من المعلمات التي يمكنك حفظها في 12 طبقة 768 نموذج ضئيل. - استبدل
nn.LayerNormمع معدل RMSNorm المتحرك يدويا والتحقق من أن شكل الخروج لا يتغير. - إضافة علم يعيد الوزن الاهتمام لل رأس الأول ك
(B, T, T)التنسور، رسم المثلث العلوي للتأكيد أنه هو صفر بعد softmax. - قم ببناء فحص للصحة العقلية الذي يغذى
(2, 16, 384)الـ " الـ " الـ " الـ " الـ " الـ " الـ " الـ " الـ " الـ " الـ " الـ " الـ " الـ " الـ " الـ " الـ " الـ " الـ " الـ " الـ " الـ " الـ " الـ " الـ " الـ " الـ " الـ " الـ " الـ " الـ " الـ " الـ " الـ " الـ " الـ " الـ " الـ " الـ " الـ " الـ " الـ " الـ " الـ " الـ " الـ " الـ "H=6على حد سواء من خلال المتغيرات والادعاءات المقدمة الخروج مختلفة (على سبيل المثال ،not torch.allclose) عندما يتم تشغيل الأوزان بشكل متطابق ويتم تعيين التخلي عن الوزن إلى الصفر.
الشروط الرئيسية
| Term | What people say | What it actually means |
|---|---|---|
| Pre-LN | "Pre norm" | LayerNorm inside the residual branch, before each sublayer; the residual carries the unnormalized signal |
| Post-LN | "Post norm" | LayerNorm after the residual add; what the 2017 paper shipped and what needs warmup |
| Causal mask | "Triangle mask" | The upper triangle of the attention logits set to negative infinity so token i cannot read token j when j is greater than i |
| Fused QKV | "Combined projection" | One linear of width 3D instead of three linears of width D; one kernel, one matmul |
| Residual stream | "Skip connection" | The unnormalized tensor that flows top to bottom through every block; what each block adds to |
المزيد من القراءة
- المرحلة 7 دروس 02 (تأمل الذات من الصفر) لرياضيات الانتباه تحت هذه الحجر.
- المرحلة 7 دروس 05 (المتحول الكامل) لنسخة مُشفّر المُشفّر لنفس العظم.
- المرحلة 10 الدروس 04 (ميني GPT قبل التدريب) لإجراء التدريب الذي يربط به هذا الكتلة.
- المرحلة 19 دروس 35 (هذه المسار) التي تقوم بتجميع اثني عشر من هذه الكتل في نموذج GPT.
This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.
Browse the complete course catalog or open this lesson on GitHub.