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