از Pista Academy حمایت کنید
خلاصه آموزشی
مرور سریع مفاهیم اصلی پیش از تماشای کامل یا برای جمعبندی بعد از آموزش.
در این جلسه، مدرس به بررسی معماری مدل ترنسفورمر و نحوه ساخت آن با استفاده از PyTorch میپردازد. ابتدا با معرفی کلاس جیپیتی و استفاده از ماژول ان ن، امکاناتی مانند مدیریت ویت، ذخیره مدل و ترینینگ فراهم میشود. سپس به توضیح قسمتهای مختلف معماری مدل مانند تابع کانستراکتور، اینبدینگ توکن، پوزیشن بدینگ، و ساخت ترنسفورمر بلاک میپردازد. همچنین به نحوه تبدیل توکن آیدی به وکتورهای عددی و نحوه نرمالیزاسیون لایهها اشاره میکند. در نهایت، به مفهوم لاجیت و نحوه تبدیل آن به احتمالات میپردازد. در بخش بعدی، به مفهوم ویت اینیشالیزیشن و اهمیت آن در ایجاد مدلهای عصبی پرداخته میشود، همچنین نحوه تخصیص مقادیر اولیه به وزنها در لایههای مختلف مدل و نحوه اجرای مدل با ورودی و تارگت توضیح داده میشود.
نکات کلیدی
استفاده از ماژول ان ن در ساخت مدل برای ارثبری امکانات مهمی مانند مدیریت ویت و ترینینگ.
توضیح معماری مدل ترنسفورمر شامل تابع کانستراکتور، اینبدینگ توکن، پوزیشن بدینگ، و ساخت ترنسفورمر بلاک.
ویت اینیشالیزیشن به دلیل تأثیر آن بر پایداری و عملکرد مدل در طول ترینگ بسیار مهم است.
تخصیص مقادیر کوچک و رندوم به وزنها در لایههای مختلف مدل، از جمله لایههای خطی و امبدین، ضروری است.
پرسشهای رایج
پاسخ کوتاه و مستقیم به پرسشهایی که معمولاً هنگام یادگیری این موضوع مطرح میشوند.
با استفاده از ماژول ان ن و ایجاد کلاس جیپیتی، میتوان معماری مدل ترنسفورمر را با تابع کانستراکتور، اینبدینگ توکن، پوزیشن بدینگ و ساخت ترنسفورمر بلاک ساخت.
ویت اینیشالیزیشن به دلیل تأثیر آن بر پایداری و عملکرد مدل در طول ترینگ بسیار مهم است.
مقادیر کوچک و رندوم به وزنها در لایههای مختلف مدل، از جمله لایههای خطی و امبدین، تخصیص مییابد.
آخرین بهروزرسانی محتوای متنی:
آیا میخواهید واقعاً درک کنید که مدلهای زبانی بزرگ (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
بکنید یعنی ویدیوها رو بیاید توی وب
سایتمون ببینید اگه دوست داشتید
اینجا حالا اطلاعاتتون هم ذخیره میشه توی
مرورگرتون که تا یه دوره رو تا کجا ادامه
دادید و مثلاً بعداً که اومدید از ادامه
اون ببینید
فایلهای هر دوره رو دارم تلاش میکنم که
توی قسمت فایلها بذارم براتون
که بتونید فایلا رو دانلود بکنید کمکم
دارم دورههای قبلی رو میرم فایلاشو قرار
میدم
بعد
یه قسمتی رو همین امروز فردا به وب سایت
اضافه میکنم برای اینکه اگه درخواستی
داشتید یا میخواستید ارتباط بگیرید این
بالا یه فرمی رو میذارم دوست داشتید
میتونید حالا پیامتونو بفرستید به اضافه
اینکه که اگر حالا تمیل داشتید که حمایت
بکنید از کانال ما همین بالا لینک دونیت
رو گذاشتیم هم اینکه
داخل یوتیوب با سابسکرایب کردن و لایک و
کامنت و البته معرفی به دوستانتون میتونید
از ما حمایت بکنید خوشحال میشم این کارو
بکنید یه قوت قلبی برای من که بتونم اینا
رو ادامه بدم و وقت بیشتری براتون بذارم
خب بریم سراغ ادامه کارمون
ما تا الان چیکار کردیم؟
ما تا الان توکنایز کردیم اطلاعاتمونو
ایکس و واو ساختیم بعدجامونو ساختیم حالا
باید مدلی رو بسازیم که این توکن آیدیها
رو بگیره و برای هر موقعیت توکن بعدیو
پیشبینی بکنه پس ما تا اینجا اومدیم
رسیدیم به خود مدل
خب
بریم سراغ تیکه اول کدمون
فقط باز داخل پانچز یه نکته بگم من این
فصلو لو که تموم بکنم یعنی تمام کدا رو خط
به خط توضیح بدم آخرسر یه جلسه خواهیم
داشت که کل کدو یه جا با همدیگه میبینیم
خود فایل کد رو هم داخل وب سایت قرار میدم
که داشته باشید و حالا بتونیم الول ام رو
یه بار با هم بسازیم خب
یه کلاسی رو تعریف میکنه به نام جیپیت تی
اسمشه بچهها هرچی میخواید میتونید
بذارید
بعد داخلش اینا رو گفته بریم خط به خط
اینا رو ببینیم چی چیه؟
اینجا میگه که داریم یه مدل شبکههای عصبی به نام جی پیتی رو میسازیم.
این مدل از ان. ماژول ارث میبره. ان ان چیه؟ ان ان اون ابتدا ایمپورتش کردیم
بچهها.
میگه تقریباً تمام مدلهایی که در پای تورچ میسازیم رو از ان. ماژول به ارث
میبریم ما.
چون اندا ماژول امکانات بسیار مهمی مثل مدیریت ویتها انتقال مدل به جی پی یو
ذخیره مدل و ترینینگ و اولویشن رو فراهم
بکنه. ان ان چی بود بچهها؟ یادتونه؟
ان ان بچهها همین تچ.n ان بود که ما اسمشو به اختصار گذاشتیم ان ان یعنی اون
ابتدای کدمون زده بودیم impپورت. ان از ان
اینم در حقیقت امکاناتی که داره حالا
میتونید تو این لینکه مراجعه بکنید اگه
خواستید داکومنتشو ببینید
و حالا امکانات مختلفی که اینجا داره ما قراره از این استفاده بکنیم. پس ان انی که
نوشته شده منظور اینه بیایم پایینتر
بعداً که میخوایم مدلمونو بسازیم فقط کافیه اون کلاسو فراخونه کنیم
و بعدشم بنویسی مدلcکدا یا مدل modل.پرامت یا مدل. استدیکت
خب من این کده رو اول بذارید بچهها یه عکس ازش داشته باشم که داریم خط به خط
میریم جلو یه دیدی داشته باشیم کجای کاریم
و اینا.
یه عکس ازش بگیرم
تا اینجا
از این کوچیکتر دیگه نمیشه نه ایراد نداره
کجا بودیم؟ اینجا بودیم
این تابع هنگام ساخته شدن مدل اجرا میشه
کلاً بچهها تو کلاسها تو هر ضر
برنامهنویسی یه اولش یه نشیت همیشه داریم
پس چیز عجیب غریبی نیست این موقع فراخون
این کلاس این تابع اجرا میشه
حالا داخلش هر چیزی گذاشته باش
خط بعدیمون چیه اینه این خط چیه؟ کانستراکتور مربوط به ان.
ماژو رو اجرا میکنه
وجودش بسیار مهمه مفهوم کانستراکتور
بچهها اونایی که حالا زبانهای مختلف
برنامه کار کرده باشن قطعاً آشنا هستن.
وجودش بسیار مهمه چون پایت باید لایههایی
رو که تعریف میکند رو بشناسد و
پارامترهاشو ثبت کند. به زبان ساده قبل از
ساخت لایههای خودمون قابلیتهای اصلی ان
ماژو رو فعال میکنیم.
قسمت اول توکن انبدینگ
میگه تو پروژه شما چی داشتید قبل یه وکب سایز داشتید یه امبت سایز داشتید پس
تقریباً
یه همچین چیزیه
این یعنی برای هر کدام از ۴۰۹۶ توکن موجود
در وکبلاری یک وکتور با ۳۸۴ عدد یاد بگیر
جدول اینبدینگمون تقریباً این شکلی میشه
یعنی هر توکن یه وکتور ۳۸۴ کاراکتری
میسازه. ۳۸۴ عددی بهتره بگم.
پس این تیکه اولش اینه.
بنابراین شیپ جدول این بدینگ میشه یه
همچین چیزی.
چرا این بدینگو لازم داریم؟
ورودی مدل چیه؟ توکن آیدیه. اینه. یه مجموعهای از توکن آیدی.
عدد ۵۴۸ خودش معنی ریاضی خاصی نداره.
اینطور نیست که مثلاً توکن ۱۰۰۲ برابر
توکن ۵۰۰ باشه. این عدد فقط یه آیدیه. پس
باید توکن آیدی به یک ریپریزنتیشن عددی
قابل یادگیری تبدیل شود. یعنی ۵۴۸
باید تبدیل بشه به یه وکتور
که داخلش ۳۸۴ تا عدد قرار داره.
مدل در مرحله ترینگ یاد میگیره که وکتور
مربوط به هر توکن چگونه باید باشه.
قسمت دوم یعنی اینجا
میگه تو پروژه ما کانتکستمون ۵۱۲ بوده سایزمون ۳۸۴
پس اندینگمون اینه درسته
شیپشم که دیدیم اما چرا پوزیشن بدینگ لازم
داریم میگه فرض کن د تا جمله داریم
داگیتمن
یه سگی یه مردی رو گاز گرفته
حالا من باست داگ برعکسش کردم
میگه توکن تقریباً یکسانه ولی ترتیبا متفاوت معنی جمله عوض شده مدل باید بدونه
که توکن در چه پوزیشنی قرار گرفته یعنی
پوزیشن توکنم تو جمله مهمه
بنابراین برای هر پوزیشنی یه وکتور
میسازه
یعنی اینکه این کلمه تو چه پوزیشنی قرار گرفته باشه وکتورش
متفاوته این با وکتورش با این یکی نیست
میگه بعداً این دو تا رو با هم جمع میکنیم یه توکن نهایی میسازیم
میگه مثلاً توکن کت در پوزیشن ۵ یه وکتور میشه یعنی [گلویش را صاف میکند]
اینکه این کلمه داگ اینجا پوزیشنش صفر
صفره اینجا پوزیشنش دو
با توکنش با هم ادغام میشه میشه یه دونه
وکتور نهایی
بنابراین مدل میفهمه چه توکنیه و کجای توالی اون جملون قرار گرفته
خب قسمت بعدیمون بذار من عکسشو یه بار دیگه
بگیرم اینو
تیکه پایینشم بیفته
خب میگه رسیدیم به مهمترین قسمت معماری یعنی ساختن ترنسفورمر بلاکم.
خب این تیکه کدو بیایم پایینتر. اینه
بچهها داریم اینجا رو چک میکنیم. اینجا
رو میگه مثلاً قبلاً داشتیم ۷ تا لایه
بنابراین ۷ تا بلاک داریم یا ۷ تا بلاک
قراره ساخته بشه.
ساختار کل جی پیتیمون این شکلیه اولدینگ
انجام میشه بعد میره داخل بلاکهای مختلف
تا بلاک
بلاک چیه
ما جلوتر بچهها یه همچین چیزی خواهیم داشت حالا دار یه جلو جلو میگم هر ترنسفور
بلاک معمولاً شامل بخشهای شبیه اینه یه
اینپوت داره یه لایه داره
بعد یه مسکت مولتی هد سلف اتنشن
کانکشن لایر نور و الی آخر حا کلاً این
مجموعهش میشه یه دونه بلاک
پس بلاک اندرکور هد عملاً یک ترنسفور بلاک
میسازه اگر ان هد ش باشه داخل اتنشن ۶
هدیم
خط بعدی چیه این یه تیکه میگه چیه این اندا سکونشیال
یعنی لایهها پشت سر هم اجرا شوند
مثلاً
این یعنی اینکه لایه ورودی میره تو لایه
اول بعد و لایه دوم و لایه سوم یعنی ورودی
لایه دوم خروجی لایه اوله
در جی پیتی ما ترنسفور بلاک داریم به جلو لایه ایکسا وارد این ورودیمون این وارد
ترنس بلاکها میشه
بعد میگه که این قسمت چیکار میکنه؟ این یه تیکه
یک لیست میسازه مثلاً اگر انلایر سه باشه
تقریباً تبدیل میشه به یه همچین چیزی
میگه این ستارهای که پشت این لیسته گذاشته باعث میشه که لیسته باز بشه یعنی
تقریباً توجه میشه یه همچین چیزی
پس این تیکه و داخلش یه لیست میسازه
س ت باعث میشه این لیسته باز بشه
خب مرحله بعدی چیه اینه نرمالیزیشن لایه نهایی
به پایداری مرحله ترینینگمون کمک میکنه مثلاً اگه ورودیمون این شکلی باشه خب خروج
همچنانی میماند و شیپش تغییر نمیکنه.
فقط مقادی نرمالایز میشه.
پس این مرحله برای نرمالزاسیونه.
آخرین لایه اینه. با تنظیمات ما میشه ۳۸۴. ۴۰۹۶.
میگه این بخش بسیار مهمه تا قبل از این هر توکن یک وکتور با ۳۸۴ تا عدد یا ویژگی
بوده
اما سؤال مدل اینه که توکن کدام توکن بعدی
از توکن و وکبولریه
یعنی چی
بذارید من اینو بم بالاتر ببینم منظورش چیه که
آها این مرحله بچهها اون وکتوره رو میگیره.
خب
بعد به ما میگه که این کدوم یکی از اون
کلماتمونه.
یعنی وکتوره که ۳۸۴ تا عدد داخلشو میگیره
به ما میگه که این مربوط به کدوم اون
کلماته.
بنابراین مسیر کلی معماریم الان این شکلی شد توکن آیدی توکنم بدیم بعد ۳۸۴ دایمنشن
پوزیشنم بهش اضافه میشه و تبدیل میشه به
یک وکتور جدید میره داخل ترنسفور بلاک
بعد اینجا با ۳۸۴ نرمالز لایند آخر س
تبدیل میشه به این
خب میگه لاجیت چیه
میگه خروج مدل مستقیماً یک احتمال نیست. میگه مثلاً ممکنه خروجی به این شکل باشه.
میگه ممکنه خروجیمون به این شکل باشه. این اعداد رو داجیت مینامن.
بعد سافت مکس میتواند آن را به احتمال
تبدیل کند.
راجع به این فکر کنم قبلاً صحبت کردیم یا
تو یه دوره دیگه صحبت کردیم. الان من قاطی
کردم که این من اینو من کجا گفتم بهتون.
اما قسمت بعد ویتا رو دق استارت میزنن. یعنی تابع این
روی تمام لایهها مدل اجرا میکند.
یعنی چی؟ وقتی یک شبکه ازایی ساخته میشود باید وزنهای اولیهای داشته باشد. شما
وقتی یک شبکه ازی میسازید اون ابتدا باید
یه وزنی داشته باشن. بالاخره دیگه اگه
نمیتونیم که همه رو صفر بذاریم خب این
لایهون اصلاً جلو نمیره.
بنابراین میام وزنا رو با یک مقدار کوچیک
رندم یه مقدارده اولیه میکنن. این کد
میگه که من بهت میگم که وزنا رو با مثلاً
توضیح نرمال
پخش بکن.
یعنی بیشتر وزنا مقادیر کوچک نزدیک صفر خواهند داشت. مثلاً یه چیز شبیه این
چرا ویت اینیشالیزیشن مهمه میگه اگه ویتا
خیلی بزرگ باشن
اونوقت گردینتمون ناپایدار تو مرحله
ترینمون مشکل ایجاد میشه
اگر اینشالیزیشن نامناسب باشه لینینگ میتونه سخت بشه
میگه انرف از معیار دو سدم یه انتخاب
شناخته شده در مدلهای جیپی تی کوچیک و
پیاده سازیهای آموزشیه.
خب ب این دیگه ادامه اینه بچهها من اینو ببندم دیگه خب این چیه؟
میگه وزنهای اون رو شروع کن. پس چک میکنم اگه لایهمون از جنس لاینیر
باشه وزناشو مقداردهی میکنه.
بعد میایم داخل این قسمت میگه اگه لایه یک امبدین باشه
ام بدینها با مقادیر کوچیک رندم میشه کوچیک شروع میشه.
خب قسمت بعدی کدمون اینه فوروارد این میگه این تابع مهمترین قسمت اجرای
مدله
میگه وقتی بنویسیم لاجیت مساوی مدلمون ایک یعنی ایکو به مدلمون بدیم ورودی بدیم به
مدلمون در واقع پایت داره اینو اجرا
میکنه
میگه تو زمان تریدینگ شاید یه همچین چیزی بنویسی
در این حالت اینپوتمون ایکه تارگتمون
و اینم مقادیر اولیه لاسمونه
اگر تارگت نداشته باشیم طبیعتاً لاسو نمیشه حساب کرد
اینجا بچ سایزمونو گفته ۸ و طول تویمونم ۵۱۲ه
اوکی
بعد میاد این د تا رو با همدیگه جمع میکنه یعنی انبدینگ با پوزیشن با همدیگه
میشه ورودی
یعنی وکتور یک کلمه با پوزیشنش معنی داره.
خب اینا رو رد کنم.
خب اینا رو که رد کنیم انتهای فصل که من میخوام یه بار کامل کدو بهتون نشون بدم یه
اینا رو بهتون کنار همدیگه میگم
خب بذارید اینا رو بریم رد کنیم بریم
ادامشو جلسه بعدی بیایم صحبت بکنیم فعلاً
خداحافظ