از Pista Academy حمایت کنید
خلاصه آموزشی
مرور سریع مفاهیم اصلی پیش از تماشای کامل یا برای جمعبندی بعد از آموزش.
در این جلسه، مدرس به بررسی ساختار و عملکرد بلاک ترنسفورمر در مدلهای زبانی مانند جی پی تی میپردازد. این بلاک شامل لایههای نرمالزیشن، مولتی هد اتنشن، فید فوروارد و رزیدوال کانکشن است. هر بلاک به صورت تکراری در ساخت مدل استفاده میشود و به عنوان هسته اصلی عمل میکند.
نکات کلیدی
ساختار یک بلاک ترنسفورمر شامل لایه نرمالزیشن، مولتی هد اتنشن، فید فوروارد و رزیدوال کانکشن است.
این بلاک به صورت تکراری در ساخت مدلهای زبانی مانند جی پی تی استفاده میشود و به عنوان هسته اصلی عمل میکند.
لایه نرمالزیشن به تنظیم مقیاس ورودی و خروجی در هر بلاک کمک میکند.
مولتی هد اتنشن به مدل امکان میدهد تا ارتباطات بین کلمات را بهتر تشخیص دهد.
پرسشهای رایج
پاسخ کوتاه و مستقیم به پرسشهایی که معمولاً هنگام یادگیری این موضوع مطرح میشوند.
بلاک ترنسفورمر شامل لایههای نرمالزیشن، مولتی هد اتنشن، فید فوروارد و رزیدوال کانکشن است و به عنوان هسته اصلی مدلهای زبانی مانند جی پی تی عمل میکند.
بلاک ترنسفورمر به صورت تکراری استفاده میشود تا مدل بتواند ارتباطات پیچیده بین کلمات را بهتر یاد بگیرد و بهبود دهد.
آخرین بهروزرسانی محتوای متنی:
آیا میخواهید واقعاً درک کنید که مدلهای زبانی بزرگ (Large Language Models) چگونه ساخته میشوند؟ در این دوره آموزشی، از سطح مفاهیم پایه شروع میکنیم و قدمبهقدم یک مدل زبانی بزرگ را از صفر با استفاده از PyTorch پیادهسازی میکنیم. هدف این دوره فقط استفاده از مدلهای آماده نیست؛ بلکه یاد میگیریم در پشت صحنه LLMها چه اتفاقی رخ میدهد و چگونه میتوان یک مدل زبانی را ساخت، آموزش داد، بهبود داد و برای کاربردهای واقعی آماده کرد. در طول این دوره، معماری داخلی مدلهای زبانی بزرگ، فرآیند آموزش، Alignment، Fine-Tuning و تکنیکهای مدرن بهینهسازی مدلها را بررسی خواهیم کرد. در این مسیر یاد میگیریم: 🔹 ساخت یک LLM کوچک از صفر و درک تمام مفاهیم کلیدی پشت آن 🔹 بررسی معماری Transformer و اجزای اصلی مدلهای زبانی 🔹 تحلیل عمیق نحوه عملکرد مدل با Visualizationهای پیشرفته 🔹 پیادهسازی و درک مفاهیم داخلی یک Advanced LLM 🔹 ساخت فرآیند Alignment از صفر و آشنایی با نحوه هماهنگسازی مدلها با اهداف انسانی 🔹 انجام Fine-Tuning مدلهای زبانی با استفاده از QLoRA 🔹 یادگیری تکنیکهای کاهش هزینه آموزش و بهینهسازی مدلها 🔹 بررسی ارتباط بین شبکههای عصبی، یادگیری ماشین و مدلهای مولد 🔹 توسعه درک عمیقتر از نحوه کارکرد مدلهای Generative AI سرفصلهای اصلی دوره: 📌 Coding a Small LLM from Scratch ساخت یک مدل زبانی کوچک و بررسی تمام مفاهیم پایه مورد نیاز 📌 Inside the AI Matrix Visualization و تحلیل عمیق ساختار داخلی LLMها 📌 Understanding Advanced LLMs بررسی معماری و مفاهیم پیشرفته مدلهای زبانی 📌 Building Alignment Process from Scratch درک فرآیند Alignment و نحوه آموزش مدل برای رفتار بهتر 📌 Fine-Tuning LLMs with QLoRA افزودن مهارتهای جدید به مدلهای زبانی با روشهای کمهزینه Fine-Tuning 📌 Origami + AI Learning بررسی ارتباط ایدههای یادگیری، شبکههای عصبی و هوش مصنوعی 📌 Activating the Generative Model of Your Own Mind نگاهی عمیقتر به مدلهای مولد و نحوه تفکر در مورد AI این دوره مناسب چه کسانی است؟ ✅ مهندسان یادگیری ماشین و هوش مصنوعی ✅ برنامهنویسان Python و PyTorch ✅ دانشجویان علاقهمند به Deep Learning ✅ افرادی که میخواهند از سطح استفادهکننده مدلهای AI به سطح سازنده مدل برسند ✅ کسانی که میخواهند درک عمیقی از ChatGPT، Llama و مدلهای مشابه داشته باشند پیشنیازهای پیشنهادی: آشنایی مقدماتی با Python آشنایی اولیه با Deep Learning آشنایی پایه با مفاهیم Neural Networks در این دوره، به جای اینکه فقط از LLMها استفاده کنیم، یاد میگیریم چگونه آنها را بسازیم، آموزش دهیم و شخصیسازی کنیم. 🎓 برای مشاهده کامل این دوره و دورههای تخصصی بیشتر در حوزه هوش مصنوعی، به کانال Pista Academy مراجعه کنید. #LLM #LargeLanguageModels #PyTorch #DeepLearning #GenerativeAI #FineTuning #QLoRA #ArtificialIntelligence #machinelearning pistaacademy.ir
خب من یه عکس از این قسمت بگیرم که جلوتر
میریم.
میخوایم راجع بهش صحبت کنیم.
اینو فقط من به این
قسمت یکی از مهمترین بخشهای ساخت الامه
چون داره یه ترنسفورمر بلاک میسازه همون
بلاکی که در مدل جی پی تی چند بار پشت سر
هم قراره تکرار بشه
خب خب بریم پایین یه ریترنیکسم این پایین
یادتون باشه هست بیایم پایین
میگه اگه بخوایم کل بلاکو در یک تصویر
ذهنی ببینیم اینجوریه که یک ورودی داریم
میاد داخل یک
لایه نرمالزیشن
بعد مولتی هد اتنشن به اضافه اورجینال
ایکس دوباره نرمالزیشن فیت فوروارد به
اضافه
اون پریویوس ایکس و خروج حالا تک بهتون
میگم اینا چی
یعنی همچین چیزی میشه تقریباً
ساختارمون حالا خط به خط بریم بررسی بکنیم
اول اومده خب طبیعتاً اون کلاس بلاکو
دقیقاً تعریفش کرده اینجا
پس یه کلاس داریم به نام بلاک این بلاک در واقع یک ترنسفورمر بلاکه و چون قراره که
یک شبکههای عصبی توی پایت باشه میشه چی
میشه ان ان ماژول
دقت میاد ارث میبره ویژگیهای ان ان ماژول
مثل کلاس اصلی جی پی که قبلاً داشتیم خب میایم پایین
بعداً در کیس جیپیتی چند بلاک میساختیم
یه همچین چیزی
اگر ۷ تا لایه در نظر بگیریم تقریباً میشه
یه همچین چیزی بلاک یک بلاک د ۷ تا پشت هم
قرار میگیرن.
پس کدی که داریم الان میبینیم بچهها یه
تعریف یه دونه از این بلاکاست.
ما این بلاکها رو قبلاً توی جیپیت تی
دیده بودیم.
خب این قسمت که کانستراکتور
بلاگ دق کلاسمونه
و هر جایی که شما بنویسید بلاک ان هد این کانستاکتور اجرا میشه. شما
کلاً تو هر زبان برنامهنویسی فرق
نمیکنه. وقتی کلاسو فراخونی میکنید
کانستراکتورش اجرا میشه.
بعد میاد اینجا. [صدای سرفه] [گلویش را صاف میکند]
خب میایم اینجا. پس این فراخونی میشه بچهها. چه اتفاقی میفته؟ میاد میره
کانستراکتور والد رو فراخونی میکنه و
ویژه اون چیزایی که ما لازم داریم ازشو
برامون میاره
در اصل پایتورچه که داره لایهها رو آماده میکنه و پارامترا رو مدیریت میکنه.
خط بعدی میاد چیکار میکنه؟ هد سایزو
محاسبه میکنه که برابر بابت سایز.
این چیه بچهها؟ این تقسیم خارج از قسمت
نیست این فکر کنم باقیانده است به ان هد
خب میگه مثلاً فرض کن سایزمون ۳۸۴ه یعنی هر توکن با یک وکتور داره ۳۸۴ مقدار نمایش
داده میشه
اگر ان هدمونو ۶ بگیریم ۳۸۴ تقسیم بر ۶
تقسیمه پس این د تا اسرش گذاشته منظورش
تقسیمه اوکی میشه ۶۴ یعنی هر اتنشن هد روی
۶۴ ۴ دایمنشن کار میکنه. میتوانیم تصور
کنیم که یک وکتور ۳۸۴ تایی رو بین ۶ هد
تقسیم کردید
و هر هد میتونه نوع متفاوتی از رابطه بین توکنها رو یاد بگیره.
آ این سؤال منم بود چرا د تا اسش استفاده کرده؟
آها یعنی اعشاری در نظر نمیگیره نمیگه مثلاً ۶۳ و خوردهای رندش میکنن
اه
بهتره که انبت ساز ب ان هد بخشپذیر باشه یعنی اعشاری نشه یعنی اینجا بهتره که این
د تا با همدیگه بخشپذیر باشن
خب ساخت مولتی هد اتنشن
اینجا اتفاق میفته
اینجا یک لایه مولتی اتنشین میسازیم فرض کنیم هدمون شه هد سایزمونم ۶۴ پس میشه ۶۴
و۶ یعنی ۶ اتنشن هد بساز که هر کدام
دایمنشن برابر ۶۴ داشته باشه
مولتی هد اتنشن بچهها قلب اصلی
ترنسفورمره و وظیفهش اینه که توکنها رو
بتونه به توکنهای قبلی توجه کنند
وقتی تو این جمله مدل به کلمه ایت میرسه اتنشن میتونه رابطمون رو با کت
بررسی بکنه.
میگه در مدل جی پی تی چون مدل اتو اگرسیوه از این استفاده میکنه. یعنی توکن فقط
اجازه داره خودش و توکنهای قبل از خودشو
ببینه. با توکن بعدش کاری نداره.
خب تو مرحله بعدی میاد فیت فوروارد نتورکو میسازه اینجا
هر بلاک معمولاً دو قسمت اصلی داره اتنشن فیت فورد
اتنشن میپرسه
هر توکن باید به کدوم توکن توجه بکنه فید
فید فوروارد میپرسه حالا اطلاعات مربوط
به خود این توکنو چگونه پردازشو تبدیل
بکنن
و میگه فیت فوروارد معمولاً چیز شبیه اینه.
خب بیایم پایین. خب تفاوت اتنشن و فیت فور میگه این د تا
مکمل همدیگهست.
اتنشن ارتباط بین توکنها رو برقرار میکنه.
فیت فوروارد
میاد توکنها رو یه ذره عمیقتر پردازش
میکنن.
مرحله بعدی اولین لایه نرمالزیشنه. اینجا
میگه از این استفاده میشه برای پایدار کردن ففرآیند آموزش.
میگه فرض کنید یه توکنو این شکلی ما نمایش
بدیم با ۷۰ ۳۸۴ تا عدد
میگه اگر اینا رو شما بیاید نرمالایز بکنید بهتره
راجع به نرمالزیشون که ما مفصل صحبت کردیم بارها
و فوایدشو گفتیم
یه لایه نرمالزیشن دیگه هم باز اضافه کرده
کنارش ش
حالا چرا د تا برای خود منم سؤال شد
چون بلاک د تا سابلایر اصلی داره آها
آها ما یه اتنشن داشتیم یه فیت فوروارد
برای هر کدوم نرمالزیشن جدا اختصاص داده ا
اوکی حالا میرسیم به فوروارد اینجا
این تابه مشخص میکنه وقتی تنسور وارد بلاک
میشود چه اتفاقی بیفته
میگه اگه فرض کنیم یه همچین چیزی بوده یادتونه دیگه اینا چی بودن دیگه این بجمون
بود و الی آخر
بلاک همین تنسوررو پرداش میکنه اینجا
این خط بسیار مهمه چیکار میکنه اینجا این یک خط کوچکه ولی سه مفهوم بسیار مهم
ترنسفورمر درون وجود داره
نرمالزیشن مولتی هد اتنشن ریز ریزیدوال
کانکشن
یه دونه بازش بکنیم میگه میتونیم اینجوری
بنویسیم این این یه خطو
نرمالایزد ایک مساویست با ال ان و ایک
یعنی ایکسو بدیم به لایه ال ان و که
نرمالزه بکنه
بعد
بدیمش به ام که اتنشن اوتپوتو به ما بده
و در نهایت این میگه کل این سه خطو ما تو یه خطه کردید اینجا
نرمالایز میشه اب بچهها تو نرمالزیشن ابعاد تنسور هیچ
تغییری نمیکنه ها فقط اعدادش نرمالزه
میشه اینو یادتون باشه
مرحله دوم مولتی اتنشن خروج لایه نرمالز
اون نرمالیزیشنو میده به این میده به سف.m
در اینجا توکنها اطلاعات کانتکست و توکن دیگر دریافت میکنن.
مرحله سوم میشه این به این مرحله میگن رزیدوال کانکشن یا اک
اسکیپ کانکشن یعنی اینپوت اصلی رو
مستقیماً با خروجی اتنشن جمع میکنن.
رزید کانکشن چرا مهمه؟ میگه اگه شبکه خیلی عمیق باشه
عبور اطلاعات و گریدینت از همه لایهها
دشوار میشه.
رزیدوال کانکشن یک مسیر مستقیم ایجاد
میکنه. یعنی لایه به جای اینکه مجبور
باشه ریپریزنتیشن کاملاً جدیدی بسازه فقط
یک تغییر یا اصلاح روی ورودی انجام میده.
خب [صدای خرناس] اینو گفتیم
خط دوم فورواد یعنی اینجا
این خط تقریباً همون ساختار قبلیو داره
راست میگه ولی این بار به جای اتنشن از
فیت فوروارد استفاده میکنه یادتون باشه
گفتم لایه نرمالزیشن دوم روی فیت فوروارد
اعمال میشه
میگه این دقیقاً ساختار یک ترنسفورت بلاک نوع پری ال انه حالا چرا پری ال ان
میگه به ترتیب عملیات دقت کنید یعنی اول لایه نرمالزیشن و بعد اتنشن و همچنین فیت
فیت فوروارد یعنی اول نرمالایز بعد فیت
فوروارد به این معماری میگن پری ال ان یا
پری لایر نورم
میگه در بسیاری از پیادهسازیهای جی پیتی از این نوع معماری استفاده میشه چون
ترنینگ مدلهای عمیقو پایتداریتر میکنه
یعنی اول نرمالایز میکنن بعد میبرن
استفاده میکنن
و در انتهای یه ریترن ایکس داشتیم که خود
این حالا تو اینجا بوده و تو عکس نیست
البته
خب میگه حالا ارتباط این بلاک با اون کلاس جی پی تی قبلی که داشتیم چیه توی جلسه
قبلی
میگه تو کلاس جی پی تی چی داشتیم یه همچین
چیزی داشتیم
و در فورواردم اینو داشتیم بنابراین اگر انلایرمون ۷ باشه
پس این کلاس کوچیک بلاکی که الان ساختیم هسته اصلی جی پی دیه که هی بارها قراره
تکرار بشه
خب میگه که این بلاک س تا هسته اصلی داره یکی
مولتیهده
که از توکن کانتکست و توکنهای دیگه
اطلاعات میگیره. فوروال لایر داریم. میاد
توکنها رو خیلی عمیقتر پردازش میکنه
و لایه نرمالیشن به اضافه رزیدوار باعث
میشه که ففرآیند آموزشمون پایدارتر بشه.
خب اینم از این قسمت. بریم بیایم اداشو
جلسه بعدی صحبت میکنیم. فعلاً خداحافظ.
‏Yeah.