پردازنده‌های گرافیکی شلوغ: روش نمونه‌برداری و خط لوله، یادگیری عمیق در نمودارهای بزرگ را افزایش می‌دهد. جستجوی عمودی Ai.

پردازنده‌های گرافیکی شلوغ: روش نمونه‌برداری و خط‌بندی، یادگیری عمیق را در نمودارهای بزرگ سرعت می‌بخشد

نمودارها، یک شبکه بالقوه گسترده از گره‌ها که توسط لبه‌ها به هم متصل شده‌اند، می‌توانند برای بیان و بازجویی از روابط بین داده‌ها، مانند ارتباطات اجتماعی، تراکنش‌های مالی، ترافیک، شبکه‌های انرژی و تعاملات مولکولی استفاده شوند. همانطور که محققان داده‌های بیشتری را جمع‌آوری می‌کنند و این تصاویر گرافیکی را می‌سازند، محققان به روش‌های سریع‌تر و کارآمدتر و همچنین قدرت محاسباتی بیشتری برای انجام یادگیری عمیق روی آنها، به روش شبکه‌های عصبی گراف (GNN) نیاز خواهند داشت.  

اکنون، یک روش جدید به نام SALIENT (نمونه برداری، برش و حرکت داده)، که توسط محققان MIT و IBM Research توسعه یافته است، عملکرد آموزش و استنتاج را با پرداختن به سه گلوگاه کلیدی در محاسبات بهبود می بخشد. این به طور چشمگیری زمان اجرای GNN ها را در مجموعه داده های بزرگ کاهش می دهد، که به عنوان مثال دارای مقیاس 100 میلیون گره و 1 میلیارد یال است. علاوه بر این، تیم دریافتند که این تکنیک زمانی که توان محاسباتی از یک به 16 واحد پردازش گرافیکی (GPU) اضافه شود، به خوبی مقیاس می‌شود. این کار در پنجمین کنفرانس یادگیری ماشین و سیستم ها ارائه شد.

ما شروع به بررسی چالش‌هایی کردیم که سیستم‌های کنونی هنگام مقیاس‌بندی تکنیک‌های یادگیری ماشینی پیشرفته برای نمودارها به مجموعه‌های داده واقعاً بزرگ تجربه می‌کنند. تیم کالر، نویسنده اصلی و فوق دکترای علوم کامپیوتر MIT می‌گوید: مشخص شد که کارهای زیادی باید انجام شود، زیرا بسیاری از سیستم‌های موجود عمدتاً روی مجموعه داده‌های کوچک‌تری که در حافظه GPU قرار می‌گیرند، عملکرد خوبی دارند. و آزمایشگاه هوش مصنوعی (CSAIL).

منظور کارشناسان از مجموعه داده‌های وسیع، مقیاس‌هایی مانند کل شبکه بیت‌کوین است، که در آن الگوها و روابط داده‌ای خاص می‌توانند روندها یا بازی‌های ناپسند را مشخص کنند. جی چن، یکی از نویسندگان، دانشمند و مدیر ارشد تحقیقاتی می‌گوید: «نزدیک به یک میلیارد تراکنش بیت‌کوین در بلاک چین وجود دارد و اگر بخواهیم فعالیت‌های غیرقانونی را در چنین شبکه مشترکی شناسایی کنیم، با نموداری در چنین مقیاسی روبرو هستیم. از IBM Research و MIT-IBM Watson AI Lab. ما می‌خواهیم سیستمی بسازیم که بتواند این نوع نمودارها را مدیریت کند و به پردازش تا حد امکان کارآمد باشد، زیرا هر روز می‌خواهیم با سرعت داده‌های جدیدی که تولید می‌شود، پیش برویم.»

نویسندگان همکار Kaler و Chen عبارتند از Nickolas Stathas MEng '21 از Jump Trading، که SALIENT را به عنوان بخشی از کار فارغ التحصیل خود توسعه داد. کارآموز سابق MIT-IBM Watson AI Lab و دانشجوی فارغ التحصیل MIT Anne Ouyang. MIT CSAIL فوق دکتری الکساندروس-استاوروس ایلیوپولوس؛ Tao B. Schardl، دانشمند پژوهشی MIT CSAIL. و Charles E. Leiserson، Edwin Sibley Webster استاد مهندسی برق در MIT و محقق آزمایشگاه هوش مصنوعی MIT-IBM Watson.     

کالر می‌گوید برای این مشکل، تیم یک رویکرد سیستم‌گرا در توسعه روش خود اتخاذ کرد: SALIENT. برای انجام این کار، محققان آنچه را که به‌عنوان بهینه‌سازی‌های اساسی و مهم مؤلفه‌ها می‌دانستند، اجرا کردند که در چارچوب‌های یادگیری ماشینی موجود، مانند PyTorch Geometric و کتابخانه نمودار عمیق (DGL)، که رابط‌هایی برای ساخت یک مدل یادگیری ماشینی هستند، قرار می‌گیرند. استاتاس می‌گوید این فرآیند مانند تعویض موتورها برای ساخت خودروی سریع‌تر است. روش آن‌ها به گونه‌ای طراحی شده بود که با معماری‌های GNN موجود منطبق شود، به طوری که متخصصان حوزه می‌توانند به راحتی این کار را در زمینه‌های مشخص‌شده خود برای تسریع آموزش مدل‌ها اعمال کنند و بینش‌ها را در طول استنتاج سریع‌تر نشان دهند. تیم تشخیص داد که ترفند این بود که تمام سخت افزارها (CPU، پیوندهای داده و GPU) را همیشه مشغول نگه دارند: در حالی که CPU از نمودار نمونه برداری می کند و مجموعه های کوچکی از داده ها را آماده می کند که سپس از طریق پیوند داده منتقل می شوند. ، پردازنده گرافیکی حیاتی تر برای آموزش مدل یادگیری ماشینی یا استنتاج هدایت کار می کند. 

محققان با تجزیه و تحلیل عملکرد یک کتابخانه یادگیری ماشینی رایج برای GNN ها (PyTorch Geometric) شروع کردند، که استفاده بسیار کم از منابع GPU موجود را نشان داد. محققان با استفاده از بهینه‌سازی‌های ساده، استفاده از GPU را از 10 به 30 درصد بهبود بخشیدند که منجر به بهبود عملکرد 1.4 تا دو برابری نسبت به کدهای معیار عمومی شد. این کد پایه سریع می‌تواند یک پاس کامل را روی یک مجموعه داده آموزشی بزرگ از طریق الگوریتم (یک دوره) در 50.4 ثانیه اجرا کند.                          

در جستجوی بهبود عملکرد بیشتر، محققان به بررسی تنگناهایی پرداختند که در ابتدای خط لوله داده‌ها رخ می‌دهد: الگوریتم‌هایی برای نمونه‌گیری نمودار و آماده‌سازی مینی دسته‌ای. برخلاف سایر شبکه‌های عصبی، GNN‌ها عملیات تجمع همسایگی را انجام می‌دهند که اطلاعات مربوط به یک گره را با استفاده از اطلاعات موجود در سایر گره‌های مجاور در نمودار محاسبه می‌کند - به عنوان مثال، در یک نمودار شبکه اجتماعی، اطلاعات دوستان دوستان یک کاربر. با افزایش تعداد لایه‌ها در GNN، تعداد گره‌هایی که شبکه باید برای کسب اطلاعات به آنها دسترسی پیدا کند، می‌تواند منفجر شود و از محدودیت‌های یک رایانه فراتر رود. الگوریتم‌های نمونه‌گیری همسایگی با انتخاب یک زیر مجموعه تصادفی کوچک‌تر از گره‌ها برای جمع‌آوری کمک می‌کنند. با این حال، محققان دریافتند که پیاده‌سازی‌های فعلی آن برای همگام شدن با سرعت پردازش پردازنده‌های گرافیکی مدرن بسیار کند است. در پاسخ، آنها ترکیبی از ساختارهای داده، بهینه‌سازی‌های الگوریتمی و غیره را شناسایی کردند که سرعت نمونه‌برداری را بهبود بخشید و در نهایت عملیات نمونه‌برداری را به تنهایی تا حدود سه برابر بهبود بخشید و زمان اجرا در هر دوره را از 50.4 به 34.6 ثانیه رساند. آنها همچنین دریافتند که نمونه برداری، با سرعت مناسب، می تواند در طول استنتاج انجام شود، کارایی و عملکرد کلی انرژی را بهبود بخشد، نکته ای که در ادبیات نادیده گرفته شده بود.      

در سیستم‌های قبلی، این مرحله نمونه‌برداری یک رویکرد چند فرآیندی بود که داده‌های اضافی و جابجایی داده‌های غیرضروری بین فرآیندها ایجاد می‌کرد. محققان روش SALIENT خود را با ایجاد یک فرآیند واحد با رشته‌های سبک وزن که داده‌های روی CPU را در حافظه مشترک نگه می‌دارد، چابک‌تر کردند. به گفته Stathas، علاوه بر این، SALIENT از حافظه پنهان پردازنده‌های مدرن بهره می‌برد، برش ویژگی موازی‌سازی، که اطلاعات مربوطه را از گره‌های مورد علاقه و همسایه‌ها و لبه‌های اطراف آن‌ها در حافظه مشترک حافظه پنهان هسته CPU استخراج می‌کند. این دوباره زمان کلی اجرا در هر دوره را از 34.6 به 27.8 ثانیه کاهش داد.

آخرین گلوگاهی که محققان به آن پرداختند، خط لوله انتقال داده‌های دسته‌ای کوچک بین CPU و GPU با استفاده از یک مرحله واکشی اولیه بود که داده‌ها را درست قبل از نیاز آماده می‌کرد. تیم محاسبه کرد که این امر استفاده از پهنای باند را در پیوند داده به حداکثر می رساند و روش را به استفاده کامل می رساند. با این حال، آنها فقط حدود 90 درصد را مشاهده کردند. آنها یک باگ عملکرد را در یک کتابخانه محبوب PyTorch شناسایی و رفع کردند که باعث ارتباطات رفت و برگشت غیر ضروری بین CPU و GPU می شد. با رفع این باگ، تیم با SALIENT به زمان اجرا 16.5 ثانیه در هر دوره دست یافت.

کالر می گوید: «به نظر من، کار ما نشان داد که شیطان در جزئیات است. هنگامی که هنگام آموزش شبکه عصبی گراف به جزئیاتی که بر عملکرد تأثیر می گذارد توجه دقیق می کنید، می توانید تعداد زیادی از مشکلات عملکرد را حل کنید. با راه‌حل‌های ما، ما به طور کامل توسط محاسبات GPU که هدف ایده‌آل چنین سیستمی است، در تنگنا قرار گرفتیم.

سرعت SALIENT بر روی سه مجموعه داده استاندارد ogbn-arxiv، ogbn-products، و ogbn-papers100M، و همچنین در تنظیمات چند ماشینی، با سطوح مختلف fanout (مقدار داده‌ای که CPU برای GPU آماده می‌کند) ارزیابی شد. در چندین معماری، از جمله جدیدترین حالت، GraphSAGE-RI. در هر تنظیمات، SALIENT بهتر از PyTorch Geometric عمل کرد، به ویژه در مجموعه داده بزرگ ogbn-papers100M، حاوی 100 میلیون گره و بیش از یک میلیارد لبه در اینجا، سه برابر سریع‌تر بود، با یک GPU، نسبت به خط پایه بهینه‌سازی شده‌ای که در ابتدا برای آن ایجاد شده بود. این کار؛ با 16 پردازنده گرافیکی، SALIENT هشت برابر سریعتر بود. 

در حالی که سایر سیستم‌ها تنظیمات سخت‌افزاری و آزمایشی کمی متفاوت داشتند، بنابراین همیشه مقایسه مستقیمی نبود، SALIENT همچنان از آنها بهتر بود. در میان سیستم هایی که به دقت مشابهی دست یافتند، اعداد عملکرد معرف شامل 99 ثانیه با استفاده از یک GPU و 32 CPU و 13 ثانیه با استفاده از 1,536 CPU است. در مقابل، زمان اجرا SALIENT با استفاده از یک GPU و 20 CPU 16.5 ثانیه بود و تنها دو ثانیه با 16 GPU و 320 CPU. Kaler می‌گوید: «اگر به اعداد اصلی که کار قبلی گزارش می‌دهد نگاه کنید، زمان اجرای 16 GPU (دو ثانیه) ما نسبت به سایر اعدادی که قبلاً در این مجموعه داده گزارش شده‌اند، سریع‌تر است. محققان بهبود عملکرد خود را تا حدی به رویکرد بهینه سازی کد خود برای یک ماشین قبل از انتقال به تنظیمات توزیع شده نسبت دادند. Stathas می‌گوید که درسی که در اینجا وجود دارد این است که برای پول شما، «استفاده کارآمد از سخت‌افزاری که در اختیار دارید منطقی‌تر است، و تا حد زیادی، قبل از اینکه بخواهید به چند رایانه تبدیل شوید»، که می‌تواند باعث صرفه‌جویی قابل توجهی در هزینه و انتشار کربن شود. که می تواند با آموزش مدل ارائه شود.

این ظرفیت جدید اکنون به محققان این امکان را می‌دهد که نمودارهای بزرگ‌تر و بزرگ‌تر را بررسی و عمیق‌تر کنند. به عنوان مثال، شبکه بیت کوین که قبلا ذکر شد شامل 100,000 گره بود. سیستم SALIENT می تواند نموداری به اندازه 1,000 برابر (یا سه مرتبه بزرگی) بزرگتر را مدیریت کند.

در آینده، ما نه تنها به دنبال اجرای این سیستم آموزش شبکه عصبی گراف بر روی الگوریتم‌های موجودی هستیم که برای طبقه‌بندی یا پیش‌بینی ویژگی‌های هر گره پیاده‌سازی کرده‌ایم، بلکه می‌خواهیم کارهای عمیق‌تری را نیز انجام دهیم، مانند چن می گوید: شناسایی الگوهای رایج در نمودار (الگوهای زیرگراف)، [که] ممکن است در واقع برای نشان دادن جرایم مالی جالب باشد. ما همچنین می‌خواهیم گره‌هایی را در یک نمودار شناسایی کنیم که به این معنا هستند که احتمالاً با همان بازیگر بد یک جرم مالی مطابقت دارند. این وظایف مستلزم توسعه الگوریتم‌های اضافی و احتمالاً معماری شبکه‌های عصبی است.

این تحقیق توسط آزمایشگاه هوش مصنوعی MIT-IBM Watson و تا حدی توسط آزمایشگاه تحقیقاتی نیروی هوایی ایالات متحده و شتاب دهنده هوش مصنوعی نیروی هوایی ایالات متحده پشتیبانی شده است.

تمبر زمان:

بیشتر از مشاوران بلاک چین