از Pista Academy حمایت کنید
خلاصه آموزشی
مرور سریع مفاهیم اصلی پیش از تماشای کامل یا برای جمعبندی بعد از آموزش.
در این جلسه، مدرس به بررسی پارامترهای مختلف در فرآیند آموزش مدل LLM با PyTorch میپردازد. ابتدا تعداد ایتریشنها و اپوکها توضیح داده میشود و تفاوت بین ایتریشن و اپوک به طور کامل توضیح داده میگردد. سپس پارامترهایی مانند ایول اینتروال، ایول ایتریشن، کامپایل، چک پوینت، دیتا تایپ، مود اجرا (ترینینگ یا اینفرنسم)، و دیوایس (جیپییو یا سیپییو) به طور مختصر بررسی میشوند.
نکات کلیدی
تفاوت بین ایتریشن و اپوک در فرآیند آموزش مدل را به طور کامل توضیح داده شده است.
نوع دیتا تایپ (مثل بی فلوت ۱۶) و تأثیر آن بر مصرف حافظه و سرعت ترینگ مورد بررسی قرار گرفته است.
پارامترهای مختلف مانند ایول اینتروال، ایول ایتریشن، کامپایل، چک پوینت، مود اجرا و دیوایس به طور مختصر بررسی شدهاند.
مدرس به بررسی نحوه تنظیم و استفاده از این پارامترها در فرآیند آموزش مدل با 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
ترینینگ ایتیشنه که مثلا گفتیم ۱۰ هزار تا
باشه. حالا الان دونه دونه اینا توضیح
میدم پایینترا
ایول اینتروال ۵ ایول اترز ۱ کامپایل فالس
چک پینت دایرکتوری مدر چک اف ان لست پیتی
چک لودم لپستی حالا اینا چیه بیم دونه
دونه راجع بهشون صحبت بکنیم
من اول اینو کلاً یه کپی بکنم این تیکه رو
بیارم اینجا داخل اینجا بذارم
ترن ایتیشن مخففشو اینجا نوشته این کار مشخص میکنه که ترندینگ لوپ ما چند استپ
یا ایتریشن اجرا شود یعنی مدل تا ۱۰۰ هزار
ترینگ استپ آموزش داده میشود هر ایترش بشه
معمولاً شامل این مراحله گرفتن یه دونه بچ
فوروارد پس لاسو حساب میکنه دوباره
برمیگرده ویتا رو تغییر میده گردینت
اپتیمایزیشن و الی آخر این فراینده هی
تکرار میشه به این میگن کلاً یه دونه
ایتیشن
مثلاً یه همچین چیزی بچهها یه دونه لوپ میذاره تمام اینا رو انجام
میده به تعدادی که مشخص شده یعنی این
فرداکثر ۱۰۰ هزار بار انجام میشه. یه نکته
مهم
ایتیشن بچهها با اپوک یکی نیستا این خیلی
نکته مهمیه
اپوک چی بود ما وقتی یه دور کل دیتاامون رو در حقیقت ترین میکردیم میشد یه دونه
اپوک مثلاً اگه مثلاً ۱۰۰ تا داشتیم هر
بجمونم ۲۵ تا بود هر چار تا بچ میشد یه
دونه اپوک اما ایتریشن این نیست
این چپ و راست شده یه ذره خوندنش سخته ولی فکر کنم اینه منظورش که میگه اپوک یعنی کل
تمام دیتا ست یه بار اجرا بشه پرداخت شده
باشه بعد چنین فقط یک ایتریشن رو یک بار
دیده باشه
مثلاً فرض کنید ما یه دیتا ست داریم ۱۰
۰۰۰ تا سمپل داره بچ سایزمون ۱۰۰
تقریباً هر ۱۰۰ ایتریشن میشه یه دونه اپوک
چون رو هر ایتریشن ۱۰۰ تا دیتا رو میاره
یه دونه بج میاره ۱۰۰ تا ۱۰۰ تا میشه ۱۰
هزار تا حدوداً
پس این ایتلیشن با اپوک تفاوت داره پارابت
بعدی چیه ایول اینتروال گروپ ۵۰ گذاشته
این پارابت مشخص میکنه هر چند ترینینگ
استپ یک بار مدل هر چند ترینینگ استپ یک
بار مدل ارزیابی بشه ه مثلاً اگه بذاریم
رو ۵۰ تقریباً توی هر ۵۰ تا ایتیشن یه بار
ارزیابی انجام میشه
هدف این هدف اینست که دائماً ایولویشن انجام ندیم چون اولووشن هم زمان و هم جی
پی یو رو مصرف میکنه
یعنی مثلاً میگیم هر ۵۰ تا ایتیشن یه بار
اولووشیشن انجام بشه
۵۰ استب آموزش میبینه
یه ارزیابی ۵۰ تا دیگه دوباره یه ارزیابی
پارامتر بعدی ایول ایتریشن که رو ۱۰ ست
شده این پارامتر با ایول اینتروال که بالا
گفتم تفاوت داره
این چی میگه
اون بالایی چی میگفت ایول اینترال میگفت
هر چند تا استپی ارزیابی اتفاق بیفته
ایولیتر میگه وقتی اولیشن شروع شد چند بتو
بررسی بکنیم
میگه خود ارزیازیابیه من چند تا بج برات
بفرستم
اینجا گفتین ۱۰ یعنی برای هر ارزیابی من
۱۰ تا بج برات میفرستم
خب طبیعیه دیگه میگه چند تا بچ بفرستی برآورد ولیدیشن لاست بهتر از اینکه یه
دونه بج بفرستید
بعدیش نوشته بودیم کامپایل مساوی فالس این یعنی چی
در نسخه جدید بایتورچ قابلیت ترش کامپایل
وجود داره مثلاً اگر کامپایل باشه مدل
فلان هدف این است که اجرای مدل رو بهینه
کند و در بعضی مدلا باعث افزایش سرعت میشه
اگر این باشه مدل به شکل معمولی اجرا میشه اگر ترو باشه
احتمالاً کدی شبیه این اجرا میشود.
برای یک پروژه آموزشی فارس میتواند
انتخاب مناسبی باشه چون دیباگینگ و فهم
کدو سادهتر میکنه. خب الان بریم بخش
بعدی چک پوینتامون بود. س۳ تا چک پوینت
داشتیم. یه دونه چکونت دیآیآر داشتیم. یه
چکون اف ان داشتیم یه چکون لود اف ان
داشتیم.
چکپونت یعنی چی؟ یعنی ذخیره وضعیت فعلی ترینگ تا بعداً بتونیم ادامه بدیم. فرض
کنید آموزش ال ام ۱۲ ساعت یا ۲۴ ساعت یا
اصلاً چند روز طول بکشه. اگر برنامه بسته
بشه یا جی پی یو قطع بشه نمیخوایم ترینگ
رو از سیو شروع بکنیم. اینجا میگه سه چک
پوینت تعریف میکنیم. بنابراین چک پوینت
ذخیره میکنیم.
این اولی چیه؟
یعنی چکونتا در پوشه مدل ذخیره شه. گفتم
دیگه این دایرکتوریه.
اف ان چیه؟ نام فایلیست که وضعیت فعلی مدل در آن ذخیره میشود. اسم فایله تو
دایرکتوریه
مشخص شده.
میگه فقط ویتا رو ذخیره نمیکنه. اطلاعات بیشتری ذخیره میکنم.
این چیه؟ این مشخص کن هنگام لود کردن مدل
کدام چک پوینت خوانده بشه. چون چند تا چک
پوینت امکان داره داشته باشیم.
پس مشخص میکنه کدومش قراره خونده بشه.
میگه میتونستیم مثلاً فایلاشو جدا کنیم. د تا فایل جدا بشه.
بعد یه دونه چیزی که داشتیم دیتایپ مساوی
ترچ بی اف لود
۱۶ حالا نمیونم میگن چی؟ بریم جلوتر.
یعنی دیتا تایپ مدل قرار است محاسب عددی
رو با چه دقتی انجام دهد؟ آها معمولاً
اینا رو داریم فلوت و فلوت و بی فلوت و
اینا داریم
تو دیپلینگ سنتی معمولاً اینو میذارن
که هر عدد ۳۲ بیت فضا اشغال میکنه اما بی
فلوت ۱۶ فقط ۱۶ بیته در نتیجه معمولاً
حافظه کمتری مصرف میشه روی سختار سازگار
میتانه ترینگ سریعتر باشه ما اینجا چی
گذاشتیم اینو گذاشتیم
چرا بی فلوت ۱۶ در ال ما مهمه ال ام بچهها تعداد بسیار زیادی عملیات دارن فرض
کنید مدل چند میلیارد پارامتر داره اگر
فلوت ۳۲ باشه مصرف حافظه خیلی میره بالا
ولی بیفلوت ۱۶ مصرف ۱ رو کم میکنه
خب پارامتر بعدیم اینترفیس بود مساوی فارس گذاشتیم این پارامتر مشخص میکند برنامه
در کدام مود اجرا شود دو حالت کلی داریم
ترینینگ یا اینفرنس اگر اینفرنس فارس باشه
یعنی ترینینگ موده
اگر اینفرنسم ترو باشه طبیعتاً میره توی اینفرنس مدل مدل آموزش لود کنه و زمان
برای تولید متن استفاده بکنه
تفاوت چیه توی ترینینگ اینپوتو میدیم به مدل
پیشبینیشو میگیریم لاسو حساب میکنیم
برمیگردیم ویتا رو آپدیت میکنیم اما تو
اینفرنس پرامپتو میدیم به مدل پیشبینی
میکنه توکن بعدی متنو تولید میکنه چیزی
به نام تغییر ویت و اینا دیگه وجود نداره
تو اینفرنس بک وارد نداریم که برگردیم وی رو آپدیت بکنیم اپتیمایزر نداریم آپدیت
ویتم نداریم فقط مدل رو اجرا میکنیم
بعد یه دونه دیوایس داشتیم ادامه کدمونهاش
این چیه؟ این خط بررسی میکنه که آیا کدا جیپیی یو
در دستس هست یا خیر؟ اگر کدا در دستس بود
ب با اون کار میکنه اگه نبود میره سراغ
سی پی یو.
کدا چیه؟ یه بار بهتون گفتم
کدا پلتفرم محاسبات توی جی پیوهای اینو
ویدیایه.
نمیدونم بهش بگم زبان برنامه نویسی مخصوص
چیپ ستهای این ویدیاه.
میگه ولی فقط تعیین دیوایس کافی نیست مدل رو هم باید به دیوایس منتقل کنیم
در ادامهش
خب و خط آخر فقط برای اطلاعات دارن یه پرینت عادیه خب اینم از این قسمت
کامل توضیح دادم و
میگه این نقطهایه که درق پروژه تعریف ال
ام داره وارد فاز آمادهسازی اجرای ترنینگ
واقعی میشه.
خب این قسمتو به نظرم اینجا ببندیم بریم
بیایم جلسه بعدی بریم سراغ بحث بعدیمون تو
همین ساختن ال ام فعلاً خداحافظ. ‏M.