بخش دوم به چالش پراکندگی بالا و راهحلAuxiliary Loss اختصاص داره:
مشکل پراکندگی بالا: خب، هر چیزی یک خوبی هایی داره و یک بدی هایی. خوبی پراکندگی بالا رو گفتیم. اما مشکلش چیه؟ مشکل اینه که وقتی فقط تعداد کمی از خبرگان برای هر وظیفه فعال می شن، ممکنه بعضی از خبرگان اصلا فرصت یادگیری پیدا نکنن.
یعنی همیشه در حالت استراحت بمونن و هیچ وقت فعال نشن. این باعث میشه که توانایی مدل به صورت چشمگیری کاهش پیدا کنه، چون ازهمه ظرفیتش استفاده نمی شه.
راه حل معرفی Auxiliary Loss هست:
جریمه برای چی؟ این جریمه برای اینه که اگه بعضی از خبرگان برای مدت طولانی فعال نشن، مدل جریمه می شه. این جریمه باعث می شه که مدل مجبور شه همه ی خبرگان رو در طول آموزش فعال کنه و از همه شون استفاده کنه.نتیجه این کار باعث میشه که همه ی خبرگان به خوبی آموزش ببینن و مدل قوی تر بشه.(در قالب پارامتر گاما)
و بخش سوم به بهینه سازیهای سطح پایین اختصاص داره:
DeepSeek
فقط به MoE و Auxiliary Loss اکتفا نکرده. اونها رفتن سراغ بهینه سازی های خیلی سطح پایین تر!
✅اول استفاده از کتابخانه ارتباطی NCCL اختصاصی هست.
اول اومدن نسخه اختصاصی خودشون از کتابخانه ارتباطی NCCL انویدیا رو پیادهسازی کردن.این کتابخانه مسئول ارتباط بین GPUهاست. وقتی GPUها بخوان با هم اطلاعات رد و بدل کنن، از این کتابخانه استفاده میکنن DeepSeek با ساختن نسخه اختصاصی خودش، تونسته این ارتباط رو خیلی بهینه تر کنه.
✅دوم استفاده از دستورالعملهای PTX:
این تیم از دستورالعملهای PTX (Parallel Thread Execution) که یک زبان میانی بین کد CUDA و سختافزار GPU هست، برای مدیریت نحوه زمانبندی SMها (Streaming Multiprocessors) در GPU استفاده کردن. این کار به اونها اجازه داد تا کنترل دقیقتری بر روی نحوه اجرای محاسبات در GPU داشته باشند و عملکرد رو بهبود ببخشن.
این بهینهسازیهای سطح پایین باعث شدن که مدلهای DeepSeek بتونن با سختافزار محدودشون، عملکرد خیلی بالایی داشته باشن. یعنی با اینکه GPUهای کمتری نسبت به رقبای خودشون داشتن، تونستن نتایج خیلی خوبی بگیرن.
مشکل پراکندگی بالا: خب، هر چیزی یک خوبی هایی داره و یک بدی هایی. خوبی پراکندگی بالا رو گفتیم. اما مشکلش چیه؟ مشکل اینه که وقتی فقط تعداد کمی از خبرگان برای هر وظیفه فعال می شن، ممکنه بعضی از خبرگان اصلا فرصت یادگیری پیدا نکنن.
یعنی همیشه در حالت استراحت بمونن و هیچ وقت فعال نشن. این باعث میشه که توانایی مدل به صورت چشمگیری کاهش پیدا کنه، چون ازهمه ظرفیتش استفاده نمی شه.
راه حل معرفی Auxiliary Loss هست:
جریمه برای چی؟ این جریمه برای اینه که اگه بعضی از خبرگان برای مدت طولانی فعال نشن، مدل جریمه می شه. این جریمه باعث می شه که مدل مجبور شه همه ی خبرگان رو در طول آموزش فعال کنه و از همه شون استفاده کنه.نتیجه این کار باعث میشه که همه ی خبرگان به خوبی آموزش ببینن و مدل قوی تر بشه.(در قالب پارامتر گاما)
و بخش سوم به بهینه سازیهای سطح پایین اختصاص داره:
DeepSeek
فقط به MoE و Auxiliary Loss اکتفا نکرده. اونها رفتن سراغ بهینه سازی های خیلی سطح پایین تر!
✅اول استفاده از کتابخانه ارتباطی NCCL اختصاصی هست.
اول اومدن نسخه اختصاصی خودشون از کتابخانه ارتباطی NCCL انویدیا رو پیادهسازی کردن.این کتابخانه مسئول ارتباط بین GPUهاست. وقتی GPUها بخوان با هم اطلاعات رد و بدل کنن، از این کتابخانه استفاده میکنن DeepSeek با ساختن نسخه اختصاصی خودش، تونسته این ارتباط رو خیلی بهینه تر کنه.
✅دوم استفاده از دستورالعملهای PTX:
این تیم از دستورالعملهای PTX (Parallel Thread Execution) که یک زبان میانی بین کد CUDA و سختافزار GPU هست، برای مدیریت نحوه زمانبندی SMها (Streaming Multiprocessors) در GPU استفاده کردن. این کار به اونها اجازه داد تا کنترل دقیقتری بر روی نحوه اجرای محاسبات در GPU داشته باشند و عملکرد رو بهبود ببخشن.
این بهینهسازیهای سطح پایین باعث شدن که مدلهای DeepSeek بتونن با سختافزار محدودشون، عملکرد خیلی بالایی داشته باشن. یعنی با اینکه GPUهای کمتری نسبت به رقبای خودشون داشتن، تونستن نتایج خیلی خوبی بگیرن.