عمیق در همه چیز از LLAMA3: آشکار کردن بینش و اجرای دقیق

پیوند پروژه GitHub: https://github.com/therealoliver/deepdive-llama3-from-scratch | کد و اسناد دو زبانه | مفاهیم اصلی | مشتق فرآیند | اجرای کامل
این پروژه چه کاری انجام می دهد؟
مدل های بزرگ زبان مانند Meta's Llama3 در حال تغییر شکل هوش مصنوعی هستند ، اما عملکرد درونی آنها اغلب مانند “جعبه سیاه” احساس می شود. در این پروژه ، ما استنتاج ترانسفورماتور را توسط اجرای llama3 از ابتدا– با حاشیه نویسی کد دو زبانهبا ردیابی بعدوت مشتقات KV-Cacheبشر این که آیا شما یک مبتدی هستید یا یک توسعه دهنده با تجربه ، این دروازه شما برای درک LLM ها در سطح Tensor است!
🔥 ویژگی های کلیدی: 6 ویژگی اصلی
1 ساختار خوب سازمان یافته
یک جریان کد سازماندهی مجدد که شما را از بارگذاری مدل به پیش بینی توکن ، لایه بر روی لایه ، ماتریس توسط ماتریس راهنمایی می کند.
2. حاشیه نویسی کد و ردیابی ابعاد
برای از بین بردن سردرگمی ، هر عمل ماتریس با تغییرات شکل حاشیه نویسی می شود.
#### Example: Part of RoPE calculation ####
# Split the query vectors in pairs along the dimension direction.
# .float() is for switch back to full precision to ensure the precision and numerical stability in the subsequent trigonometric function calculations.
# [17x128] -> [17x64x2]
q_per_token_split_into_pairs = q_per_token.float().view(q_per_token.shape[0], -1, 2)
3. توضیح اصل
توضیحات مربوط به اصل و تعداد زیادی از مشتقات دقیق اضافه شده است. این نه تنها به شما می گوید “چه کاری باید انجام دهید” بلکه عمیقاً “چرا این کار را انجام دهید” را توضیح می دهد ، و به شما در اساساً تسلط بر مفهوم طراحی مدل کمک می کند.
4. بینش عمیق KV-Cache
یک فصل اختصاصی در مورد KV -Cache – از تئوری تا اجرای – برای بهینه سازی سرعت استنتاج.
5. کد و اسناد دو زبانه
نسخه های بومی چینی و انگلیسی ، اجتناب از ترجمه های بی دست و پا دستگاه.
6. پیش بینی پایان به پایان
سریع “پاسخ به سوال نهایی …” را وارد کنید و خروجی مدل 42 را تماشا کنید (گره ای به راهنمای Hitchhiker به کهکشان!).
نقشه راه اجرای کامل
- بارگیری مدل
- بارگیری توکن ساز
- خواندن پرونده های مدل و پرونده های پیکربندی
- استنباط جزئیات مدل با استفاده از پرونده پیکربندی
- متن ورودی را به تعبیه تبدیل کنید
- متن را به دنباله ای از شناسه های توکن تبدیل کنید
- دنباله شناسه های توکن را به تعبیه تبدیل کنید
- اولین بلوک ترانسفورماتور را بسازید
- عادی سازی
- با استفاده از عادی سازی RMS برای تعبیه
- اجرای مکانیسم توجه یک سر از ابتدا
- بردارهای QKV مربوط به نشانه های ورودی را بدست آورید
- بردار پرس و جو را بدست آورید
- ماتریس وزن پرس و جو را باز کنید
- اولین سر را بدست آورید
- برای به دست آوردن بردارهای پرس و جو مربوط به نشانه ها ، توکن تعبیه شده توسط وزنهای پرس و جو را ضرب کنید
- بردار کلید را بدست آورید (تقریباً مشابه بردار پرس و جو)
- بردار مقدار را بدست آورید (تقریباً همان بردار کلید)
- اطلاعات مثبت را به پرس و جو و بردارهای کلیدی اضافه کنید
- رمزگذاری موقعیت دوار (طناب)
- اطلاعات مثبت را به بردارهای پرس و جو اضافه کنید
- اطلاعات مثبت را به بردارهای کلیدی اضافه کنید (همان پرس و جو)
- همه چیز آماده است بیایید شروع به محاسبه وزن توجه بین نشانه ها کنیم.
- برای به دست آوردن نمرات توجه ، پرس و جو و بردارهای کلیدی را ضرب کنید.
- اکنون ما باید نمرات Key-Key Future-query را نقاب کنیم.
- وزن توجه نهایی ، یعنی SoftMax (نمره) را محاسبه کنید.
- بالاخره نتیجه نهایی مکانیسم توجه تک سر را محاسبه کنید!
- مکانیسم توجه چند سر را محاسبه کنید (یک حلقه ساده برای تکرار روند فوق)
- نتیجه را برای هر سر محاسبه کنید
- نتایج هر سر را در یک ماتریس بزرگ ادغام کنید
- تعامل اطلاعات سر به سر (نقشه برداری خطی) ، مرحله آخر لایه خود توجه!
- عملکرد باقیمانده (اضافه کردن)
- عملیات عادی سازی دوم را انجام دهید
- محاسبه لایه FFN (شبکه عصبی Feed-Forward) را انجام دهید
- دوباره عملیات باقیمانده را انجام دهید (سرانجام ، ما خروجی نهایی بلوک ترانسفورماتور را دریافت می کنیم!)
- همه چیز اینجاست. بیایید محاسبه همه 32 بلوک ترانسفورماتور را تکمیل کنیم. خواندن مبارک 🙂
- بیایید آخرین مرحله را کامل کنیم و نشانه بعدی را پیش بینی کنیم
- ابتدا یک آخرین عادی سازی را بر روی خروجی آخرین لایه ترانسفورماتور انجام دهید
- سپس پیش بینی را بر اساس جاسازی شده مربوط به آخرین نشانه انجام دهید (یک نقشه برداری خطی را به بعد واژگان انجام دهید)
- در اینجا نتیجه پیش بینی است!
- بیایید عمیق تر شیرجه بزنیم و ببینیم که چگونه تعبیه های مختلف یا استراتژی های نقاب زدن نشانه ممکن است بر نتایج پیش بینی تأثیر بگذارد 🙂
- آیا نیاز به پیش بینی چندین نشانه دارید؟ فقط با استفاده از KV-Cache! (واقعاً تلاش زیادی برای مرتب کردن این موضوع انجام داد. Orz)
- از همه شما متشکرم با تشکر از یادگیری مداوم شما همه شما را دوست دارم 🙂
- از من
- از نویسنده پروژه پیشین
- مجوز
🔍 چرا می توانید این مخزن را ستاره کنید؟
جادوی صفر ، فقط ریاضی
چند برابر و توجه ماتریس را بدون چارچوب های سطح بالا پیاده سازی کنید.
وضوح دو زبانه
نظرات و اسناد کد به دو زبان انگلیسی و چینی برای دسترسی جهانی.
نتایج قابل تکرار
نماد “42” را با استفاده از فایلهای مدل اصلی متا پیش بینی کنید تا روند جالبی را که توسط آن مدل به این پاسخ رسیده است ، کشف کنید.
آزمایشات دست
توجه ناشناخته را آزمایش کنید ، پیش بینی های توکن متوسط و موارد دیگر را کشف کنید.
🚀 شروع سریع
1. کلون و وزن پروژه و مدل را بارگیری کنید
2.. کد Walkthrough را دنبال کنید
شروع کردن Deepdive-lama3-from-scratch-en.ipynb در نوت بوک Jupyter.
3. به جامعه بپیوندید
بینش خود را به اشتراک بگذارید یا در بحث های GitHub سؤال کنید!
🌟 اگر این پروژه به شما کمک می کند تا اسرار LLMS را پرده برداری کنید ، به آن ستاره بدهید!
پیوند پروژه GitHub: https://github.com/therealoliver/deepdive-llama3-from-scratch
بیایید اسرار LLAMA3 را باز کنیم – یک بار در هر زمان. 🚀