از Pista Academy حمایت کنید
خلاصه آموزشی
مرور سریع مفاهیم اصلی پیش از تماشای کامل یا برای جمعبندی بعد از آموزش.
در این جلسه، مدرس به بررسی پارامترهای اصلی معماری مدل LLM میپردازد. ابتدا به مفهوم بچ سایز (batch size) و تأثیر آن بر عملکرد و مصرف منابع پرداخته شده است. سپس به مفهوم کانتکست (context) و نحوه تعیین اندازه ورودی مدل اشاره شده است. امبد سایز (embedding size) به عنوان یکی از مهمترین پارامترها معرفی شده و توضیح داده شده است که چگونه توکنها به بردارهای عددی تبدیل میشوند. همچنین تعداد لایههای مدل و نحوه ارتباط بین سلولهای لایهها به طور کامل توضیح داده شده است. در نهایت، پارامترهای مرتبط با فرایند آموزش مانند لنرینگ ریت، دروپووت، گراد کلیپ و بایاس مورد بررسی قرار گرفتهاند.
نکات کلیدی
بچ سایز (batch size) تأثیر زیادی بر عملکرد مدل و مصرف منابع دارد. بچ سایز بزرگتر باعث پایدارتر شدن گرادیان و بهتر شدن استفاده از GPU میشود، اما نیاز به حافظه بیشتری دارد.
کانتکست (context) مشخص میکند مدل چند توکن ورودی را در هر مرحله پردازش میکند و این پارامتر بر عملکرد مدل در ارتباط با ورودی تأثیر میگذارد.
امبد سایز (embedding size) تعداد ابعاد برداری است که هر توکن به آن تبدیل میشود و این پارامتر بر توانایی مدل در فهم محتویات تأثیر میگذارد.
تعداد لایهها و نحوه ارتباط بین سلولهای لایهها (مانند ترنسفورمر) به عمق و قدرت مدل تأثیر میگذارد.
پارامترهای فرایند آموزش مانند لنرینگ ریت، دروپووت، گراد کلیپ و بایاس به بهبود عملکرد مدل و جلوگیری از مشکلات مانند اشباع وزنها کمک میکنند.
پرسشهای رایج
پاسخ کوتاه و مستقیم به پرسشهایی که معمولاً هنگام یادگیری این موضوع مطرح میشوند.
بچ سایز (batch size) تأثیر زیادی بر عملکرد مدل و مصرف منابع دارد. بچ سایز بزرگتر باعث پایدارتر شدن گرادیان و بهتر شدن استفاده از GPU میشود، اما نیاز به حافظه بیشتری دارد.
کانتکست (context) مشخص میکند مدل چند توکن ورودی را در هر مرحله پردازش میکند و این پارامتر بر عملکرد مدل در ارتباط با ورودی تأثیر میگذارد.
امبد سایز (embedding size) تعداد ابعاد برداری است که هر توکن به آن تبدیل میشود و این پارامتر بر توانایی مدل در فهم محتویات تأثیر میگذارد.
آخرین بهروزرسانی محتوای متنی:
آیا میخواهید واقعاً درک کنید که مدلهای زبانی بزرگ (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
پارامترهای معماری الام رو مشخص بکنیم.
یعنی چی؟ پارامتر معماری؟ یعنی قبل از
اینکه مدلو بسازیم و آموزشو شروع بکنیم
باید مشخص بکنیم که مدل چه اندازهای
داشته باشه و هر ورودهای با چه ابعادی
پردازش بشه. خب چه پارامترایی داریم؟
اولین پارامتری که داریم بهش بذار من کل
پارامترا رو یه جا بنویسم بعد دونه دونه
توضیح بدم اینجوری فکر کنم بهتر باشه خب
این کل پارامترست
بک سایزو احتمالاً زیاد شنیده باشید اگه
دوره دیپلینگ ما رم دیده باشید اونجا زیاد
راجع به بد سایز صحبت کردیم یعنی مشخص
میکنه که در هر مرحله آموزش چند نمونه رو
به صورت همزمان پردازش بکنیم مثلاً اینجا
گفتم ۸ تا نمونه رو به صورت همزمان پردازش
بکنیم کنن
پس ۸ تا ۸ تا میره جلو تا کل دیتا رو یه
بار آموزش ببینه بشه یه دونه افک
اما پارامتر بعدی اول یه سؤالو بپرسم اگه بت سایز بزرگتر
بشه چی میشه کوچیکتر بشه چی میشه هرچی بچ
سایزتون بزرگتر باشه اون مبحث گرادینتتون
پایدارتره جی پی یو استفاده بهتری از جی
پی یو میشه و فرایند ترینگتون یه مواقع
سریعتر بشه. اما نکته مقابلش کجاست؟
طبیعتاً چون بچ سایزتون بزرگتر شده نیاز
به مموری بیشتری دارید
و باید متناسب با میزان اون توان پردازش اون سیستمتون انتخاب بشه. اما کانتکست چی
میگه؟
کانتکست بچهها یکی از مهمترین پارامترای
ال مشخص میکنه که ال ام شما تو ورودی در
لحظه چند تا در حقیقت چه فضاییو کاور
میکنه چقدر ورودی قر قراره دریافت بکنه
مثلاً شما دارید با یه چتباتی صحبت
میکنید یه چیزی تایپ میکنید اون چیزی که
دارید تایپ میکنید یا مثلاً فایلی که
دارید میفرستید کل اونو بهش میگن کانتکست
شما اینجا میتونید مشخص کنید که در هر
بار این قراره چقدر از اون کانتکستو اسکن
بکنه و ببینه
مثلاً اینجا گفتیم ما تا هر ورودی ۵۱۲ تا توکن رو تو اجازه داری بررسی بکنی
خب پارامتر بعدی چیه امبد سایزه این پارامتم جز پارامتر مهمه بچهها
اسمای مختلفم جاهای مختلف بهش میگن امبدینگ دایمنشن میگن هیدن سایز مدل
دایمنشن
دی مدل ان امبد اسمای مختلف داره
چی شده خب ببینید بچهها وقتی یه توکن وارد مدل میشه
خود توکن که یه دونه عدده خب خب
ولی شبکههای عصبی صرفاً نمیتونه با
مفهوم توکن آیدی کار بکنه.
بنابراین میان چیکار میکنن؟ توکن رو
تبدیل میکنن به یک بردار.
طول اون بردار رو امبت سایز مشخص میکنه. مثلاً فرض کنید ما یه توکنی داریم. توکن
مثلاً ۱۵۴۳۲
میاد اینو تبدیل میکنه به یک بردار برداری که ۳۸۴ تا عدد داخلشه
به این میگن امبت ساز
یه مثالی براتون بزنم مثلاً فرض کنین من اینو اینجا اضافه کنم مثلاً فرض کنید
ورودی ما این شکلیه مثلاً
بد سایزمون ۸ه کانتکستمونم ۵۰ ۲ تا توکنه
وقتی انبت سایزمون ۳۸۴ باشه میشه ۳۸۴
یعنی برای به ازای هر توکن ۳۸۴
تا فیچر درست میکنه و مجموع اینا میشه یه
دونه بردار برای اون توکنه
پارامتر بعدی چیه این لایری که از اسمش مشخصه یعنی مدل شما
دارای ۷ تا لایهست
۷ لایه ترنسفورمر داره اصطلاحاً
هرچی لایهها بچهها تعدادش بیشتر باشه مدل شما عمیقتر میشه هرچی لایهها بیشتر
مدل شما عمیقتره
باید دقت بکنه که یه توکن به کدوم توکن قبلیش ارتباط داره مثلاً شما یه جملهی رو
در نظر بگیرید بذارید مثلاً این جمله من
اینجا کپی کنم بیارم اینجا مثلاً این جمله
رو ببینید
میگه یک گر گربه شیر خورده چون تشنهش بوده خب
میگه که مدل باید بفهمه که این کلمه ایتی
که اینجا اومده به معنی کته یعنی به این
گربهه اشاره داره اینجوری بگم بهتره اینو
باید بفهمه
ببین میگه مشخص میکنه که یه دونه توکن به چند تا توکن قبلیش
ارتباط داشته باشه.
یه نکته خیلی ریزی بچهها تو این پارامتها وجود داره که من اینجا رعایت نکردم. اون
چیه؟ زمانی که شما امبت سایزتونو بچهها
تقسیم بر ان هد میکنید باید باقماندهش
صفر باشه. الان این مثال من باقماندهش
صفر نیست. برای اینکه باقماندش صفر بشه من
ان هدو میگیرم ۶. پس این نکته رو یادتون
باشه که باید انبت سایز تقسیم بر ان هد
باقی مانده نداشته باشه
اینو دقت میکنید
آخرشم بایاس پروئه یعنی لایههای خطی مدل از بایاس استفاده بکنن بایاسم که توی بحث
دیپلینگ صحبتشو کردیم تو دوره دیپلینگ
یه بایاسی رو میاد هر لایه اضافه میکنم. یه ما ارتباط بین لایهها چهجوریه؟ یه
بذار من عکسشو دارم نه یه لایه وقتی به
این لایه شاکر ست دیگه وصل میشه هر سلول
به تمام سلولهای لایه بعدی وصله. ارتباط
بین این دو تا سلول وزن بهش میگن. بعد
زمانی که وزن محاسبه میشه یه بایاسی هم به
خود سلولا میدن به اضافه اون بایاسه میشه.
اینجا نگفتیم بایاس باید باشه.
خب بچهها من اسم اینا رو بذار بذارم پارامترای معماریمون
هشتگ
چون ما یه سری پارامترا دیگه هم داریم چیه هایپر پارامتر
که باز توی دوره دیپلین راجع بهش صحبت
کردیم هایپر
پاراز
بچهها سعی کنید دوره دیپلینگو قبل این
دوره ببینید این ترتیبشو رعایت بکنید چون
چیزایی که ما اینجا میگیم اونجا راجع بهش
صحبت کردیم
خب حالا باز اینجا یه بار دیگه توضیح
خواهم داد یه دونه لنین ریت داریم بچهها
خب مثل این حالا میتونیم اینجوری بگیریم
یه دونه ویتی داریم
یه دونههم گرند کلیپ داریم
خب اینا چی هستن؟ دونه دونه الان بهتون توضیح بدم.
پارامترهای بالایی پارامترای معماری مدلن اما این پارامترا پارامتراهای که مربوط
میشه به مرحله آموزش مدل نه اندازه و
ساختار خود مدل
لن [ __ ] مشخص میکنه که وزنهای شبکه در هر مرحله
چقدر اجازه دارن تغییر کنن. فرایند
چهجوریه بچهها؟ ورودی وارد شرایط عصبی
میشه میره تا آخرین لایه خروجی رو تحویل
میگیریم خروجی رو با مقدار واقعی مقایسه
میکنیم اگه دیدیم لاست فانکشن زیاد بود
اختلاف زیاد بود فرند برمیگرده
اون ویون تغییر میکنه تا دوباره یه بار
دیگه مقایسه بکنیم این تغییر وی این
لنونید مشخص میکنه
یه جورایی مثالو مثلاً سادهشو بزنم مثلاً
شما میخواید به یه بچهای درس یاد بدید
یکی میاد میگه که آقا به این بچه مثلاً یه
صفحه به یه صفحه درس بده هر روز این میشه
لرنینگ ریت
یعنی می اون گامهای آموزشو مشخص میکنید
چقدر بشه
دروپود چیه؟ بچهها توی فرایند در حقیقت آموزش مدلهای
شبکه عصبی لایهها امکان داره یه مواقعی
به یه سری از سلولهای یک لایه خیلی
وابستگی ایجاد بشه. یعنی مدل ما نسبت به
یه سری سلولا خیلی وابسته بشه. برای اینکه
این وابستگی رو از بین ببریم میایم
پارامتر دروپوتو مشخص میکنیم. مثلاً من
گفتم هر بار ۵ سلولهای این لایه رو غیر
فعال کن.
معمولاً بیشتر از ۵ میگیرم مثلاً ۲۵ ۲۰ میگیرم مثلاً میگه ان انقدر درصد
سلولهای لایه عصبی تو این هر دور غیر
فعال باشه. کاملاً رندم این کارو میکنه
انتخاب میکنه.
تلاش میکنه که وصلهای مده بیش از حد بزرگ نشه.
بچهها بزرگ شدن وزنها توی یه دونه فرند آموزش نشونه خوبی نیست.
ویتی که یه فشار کوچولو وارد میکنه که این
ویتا خیلی بزرگ نشن
که معمولاً این کارو بچهها با آدام انجام میدن یکی از اپتیمایزرای خوب این کاره
خب دروپوتو گفتم آ گید گرده گراد کلیپ
گراد کلیپ بچهها یه پارامتر برای پایداری
فراآیند آموزش استفاده میشه.
نظر نداره. خب اینم از پارامترهای فراوند آموزشمون.
خیلی خب بچهها بریم بیایم اداشو جلسه
بعدی صحبت بکنیم. فعلاً خداحافظ.
تعداد لایهها و نحوه ارتباط بین سلولهای لایهها (مانند ترنسفورمر) به عمق و قدرت مدل تأثیر میگذارد.