PyTorch 2.15 با مشکل "یک GPU بد" مقابله می کند
بدهی های فنی کنار گذاشته شد تا آموزش هوش مصنوعی در مقیاس بزرگ انعطاف پذیرتر شود
مدیران ML خوشحال خواهند شد که یاد بگیرند که یک GPU بد ممکن است دیگر به معنای شروع یک کار آموزشی کامل از ابتدا نباشد. آخرین نسخه 2.15 PyTorch شامل یک باطن بازنویسی شده برای کتابخانه ارتباطات جمعی انویدیا (NCCL) است که برای بهبود تشخیص و بازیابی خطا هنگام کار GPUها با یکدیگر طراحی شده است.
این جدیدترین ویژگی نشان میدهد که چگونه سازندگان آن همچنان نرمافزار را از ابزاری برای محققان به یک سنگ بنای کار هوش مصنوعی تولید میکنند.
تریستان رایس، توسعهدهنده هسته PyTorch، مهندس نرمافزار Meta متخصص در محاسبات توزیعشده، در جریان پخش زنده یوتیوب در روز پنجشنبه، گفت که رابط کتابخانه شبکه در PyTorch نیاز به بازنویسی داشت - این در حال غرق شدن در بدهی فنی بود.
NCCL "Nickel" تلفظ می شود و مخفف Nvidia Collective Communications Library است. این نرم افزار مجموعه ای از ارتباطات اولیه بین GPU را در اختیار PyTorch قرار می دهد و به GPU ها اجازه می دهد تا در یک گره یا خوشه های چند گره ارتباط برقرار کنند، که برای اجرای استنتاج در شبکه های عصبی بزرگ و برای سایر وظایف در ساخت و نگهداری LLM ها حیاتی است.
رابط قدیمی NCCL بیش از حد آشفته بود
باطن قبلی PyTorch برای NCCL، به نام ProcessGroupNCCL، میتواند دهها ارتباطدهنده در هر گروه فرآیند ایجاد کند که منجر به بنبستهای متناوب و عملکرد غیرقابل پیشبینی میشود.
نسخه جدید باطن NCCL با یک قانون سختگیرانه همراه است: یک گروه فرآیندی تنها یک ارتباطدهنده در طول اولیهسازی دریافت میکند. بهطور پیشفرض، این قانون تداخل بین چندین ارتباطدهنده و تمام پیچیدگیهای ناشی از آن را حذف میکند. اگر برنامه ای نیاز به موازی سازی داشته باشد، باید گروه های فرآیندی بیشتری را اعزام کند.
کتابخانه به روز شده همچنین با اجازه دادن به پیکربندی مجدد آسان تر، با افراد نابسامان مقابله می کند. اگر یک GPU از کار بیفتد یا به کندی اجرا شود، یک ارکستر شخص ثالث می تواند عقب مانده را حذف کند و حتی یک کارگر جایگزین را تعیین کند.
یک "ضبط کننده پرواز" نیز اضافه شده است تا به ادمین ها ایده بهتری درباره اشتباه انجام شده بدهد. قبلا، اگر دستهای از پردازندههای گرافیکی متوقف میشدند - شاید به دلیل توقف یا بنبست - کاربر فقط یک پیام عمومی دریافت میکرد. ضبط کننده پرواز جدید تمام عملیات را در مجموعه ای از عکس های فوری ثبت می کند که می توان پس از وقوع یک نقص آن را بررسی کرد.
رایس خاطرنشان کرد که باطن NCCL تمیز شده، که ProcessGroupNCCL نیز نامیده می شود، به توسعه دهندگان یک صفحه خالی می دهد و افزودن ویژگی های جدید را آسان تر می کند.
ProcessGroupNCCL قدیمی بخشی از بسته 2.15 به عنوان یک بازگشت است، اما اگر باطن جدید NCCL همانطور که انتظار می رود کار کند، نسخه قدیمی تر در نسخه 2.16 حذف خواهد شد که برای اوایل سال آینده برنامه ریزی شده است.
منشاء Nvidia
ممکن است بپرسید چرا یک چارچوب یادگیری ماشینی به کتابخانه ارتباطات تخصصی نیاز دارد؟ PyTorch مانند NumPy از محاسبات عددی پشتیبانی می کند، اما ابزارهایی برای ساخت و آموزش شبکه های عصبی روی CPU و GPU نیز ارائه می دهد.
در این محیطها، کارگران باید دائما دادههایی مانند تانسورها، گرادیانها، فعالسازیها و وزنها را مبادله کنند. پشته شبکه استاندارد مبتنی بر TCP میتواند گلوگاههایی را در خوشههای GPU بزرگ ایجاد کند، بنابراین NCCL از مسیرهای ارتباطی بهینهسازی شده برای جابجایی دادهها بین پردازندههای گرافیکی استفاده میکند و در عین حال سربار CPU را کاهش میدهد.
انویدیا در ابتدا NCCL را در SC15 به عنوان یک شتاب دهنده همه منظوره منتشر کرد، و زمانی که برای اولین بار PyTorch را در سال 2016 ساختند، توسط افراد فیس بوک مورد استفاده قرار گرفت. هدف آنها ساخت یک نسخه مبتنی بر Python از کتابخانه Torch ML مبتنی بر Lua بود.
ویل استوارت، یکی از بنیانگذاران نرمافزار هوش مصنوعی Northflank، در پست وبلاگ خود خاطرنشان کرد: "هر آزمایشگاه بزرگ ML (OpenAI، DeepMind، Meta، Nvidia) از PyTorch استفاده میکند. این آزمایشگاه همه چیز را از مدلهای انتشار و LLM گرفته تا سیستمهای توصیهگر و روباتیک را تامین میکند. این پذیرش گسترده تصادفی نیست.
پشتیبانی بیشتر از پردازندههای گرافیکی بعدی اپل و انویدیا
سایر ویژگیهای جدید PyTorch 2.15 شامل یک API انتقال جدید Python برای جابجایی دادههای یک طرفه ناهمزمان - ایدهآل برای مشاغل آموزشی که در آن وزنها بین مربیها و ژنراتورها همگامسازی میشوند - و همچنین بهبودهای پردازش موازی برای Apple Gear و برای پشتیبانی از نسل بعدی پردازندههای گرافیکی Blackwell انویدیا.
به طور کلی، به روز رسانی شامل 3117 تعهد از 583 مشارکت کننده بود. ®
متن اصلی (انگلیسی)
PyTorch 2.15 tackles the 'one bad GPU' problem
Technical debt shoveled aside to make large-scale AI training more resilient