یادگیری هندسی با PyTorch روی سخت‌افزار غیر CUDA: تجربه‌ها و ترفندها روی HPUهای اینتل Gaudi-v2

Fall Back

بیا یه موضوع باحال و جدید رو با هم بررسی کنیم: یادگیری هندسی یا Geometric Learning، یعنی یه جور هوش مصنوعی که با داده‌هایی سروکار داره که ساختارشون مثل نقطه و خط و گرافه، نه صرفاً جدول و ماتریس. مثلاً تو شبکه‌های اجتماعی، ساختار ملکولی، گراف دانش یا سیستم‌های پیشنهادی کلی استفاده داره.

حالا چیزی که خیلی جالبه اینه که بیشتر کسایی که رو یادگیری ماشین کار می‌کنن، از کارت گرافیک‌های انویدیا و تکنولوژی CUDA استفاده می‌کنن. CUDA یه پلتفرم مخصوصیه که فقط کارت‌گرافیک‌های انویدیا دارنش و خیلی هم روون کارها رو انجام می‌ده. ولی خب یه خبر خوب اینه که الان شتاب‌دهنده‌های جدیدی هم اومدن که واقعاً دارن جذاب می‌شن؛ یکی از معروف‌ترینشون HPUهای اینتل Gaudi-v2 هستن. حالا HPU یعنی Habana Processing Unit، یه جور پردازنده خاص و بهینه برای هوش مصنوعی که توسط شرکت Habana (زیرمجموعه اینتل) ساخته شده.

ولی اینجا یه چالش بزرگ پیش میاد: اکثر کدها و ابزارهایی که مردم برا هوش مصنوعی نوشتن، مخصوص CUDA هست. پس اگه بخوایم از این سخت‌افزارهای جدید مثل Gaudi-v2 استفاده کنیم، باید کلی مهندسی کنیم تا کدمون رو بهشون بخوره و همون سرعت و کارایی رو داشته باشیم. مخصوصاً اگه داری با PyTorch کار می‌کنی (یه کتابخونه محبوب برای یادگیری ماشین) و کارهاتم گراف-محوره، قضیه جدا پیچیده‌تر می‌شه.

ما تو این پروژه نشستیم این مسیر سخت رو رفتیم و تجربه‌مون رو کامل مستندسازی کردیم. مثلاً بعضی عملیات‌های پایه‌ای مثل Scatter (که داده‌ها رو بر اساس اندیس‌های خاص پخش می‌کنه)، Sparse Indexing (دسترسی دادن به داده‌ها به صورت پراکنده) یا K-Nearest Neighbors (پیدا کردن نزدیک‌ترین همسایه‌ها تو یه گراف یا دیتاست) روی Gaudi-v2 پیاده نکرده بودن، ما این‌ها رو جوری بازنویسی کردیم که بتونه روی این HPUها بیاد بالا.

علاوه بر این، ۱۶ تا آموزش مرحله‌به‌مرحله و ۱۱ تا پروژه واقعی هم آماده کردیم تا هم کسی گیر کرد، بتونه راهش رو پیدا کنه، هم با موقعیت‌های واقعی کار کنه. حتی شکست‌ها و راه‌حل‌هایی که استفاده کردیم تا مشکلات رو دور بزنیم هم کامل نوشتیم. مثلاً وقتی یه آپشن خاص کار نمی‌کرد، چجوری راه‌حل جایگزین ساختیم و اینا.

یه قابلیت باحال دیگه اینکه همه این تجربه‌ها رو گذاشتیم تو یه GitHub عمومی. یعنی هر کی دوست داره می‌تونه سورس رو ببینه، پروژه‌ها رو با HPU اجرا کنه یا حتی ایده‌های خودش رو بذاره روش. این باعث می‌شه محقق‌ها راحت‌تر بتونن الگوریتم‌های یادگیری هندسی رو روی سخت‌افزارهای غیر CUDA امتحان کنن، بدون این‌که لازم باشه از صفر همه چی رو خودشون بنویسن.

درواقع هدف‌مون این بوده که ورود آدم‌ها به دنیای محاسبه با Gaudi-v2 آسون‌تر بشه و کلاً یه قدم جلوتر در بهینه‌سازی و قابل‌حمل‌کردن مدل‌های Geometric Learning برداریم. خلاصه اینکه این پروژه هم باعث صرفه‌جویی در زمان و انرژی می‌شه، هم به توسعه هوش مصنوعی روی گزینه‌های جدید کمک می‌کنه، هم باعث می‌شه تنوع سخت‌افزارها بیشتر شه و وابستگی به CUDA کمتر.

جمع‌بندی؟ اگه تو هم دوست داری با مدل‌های پیشرفته هوش مصنوعی کار کنی ولی گیرِ سخت‌افزار انویدیا نیستی یا دنبال یه تجربه جدید با HPUs اینتل هستی، این پروژه دقیقاً همون چیزیه که لازمش داری؛ همه نکته‌ها و ترفندها رو توش پیدا می‌کنی!
منبع: +