رفتن به محتوای اصلی
توضیح کوهستانزیرساخت هوش مصنوعیمقاله تشریحی· 5 دقیقه مطالعه· در هوش مصنوعی

فلش‌اتنشن چگونه سد حافظه پردازنده‌های گرافیکی را می‌شکند تا هوش مصنوعی با حافظه طولانی خلق شود

یک الگوریتم دقیق ریاضی با سازماندهی مجدد نحوه جابه‌جایی داده‌ها بین لایه‌های حافظه، توانست جریمه حافظه توانی (مربعی) در معماری ترانسفورمر را از بین ببرد. این بهینه‌سازی، پنجره‌های زمینه بسیار بزرگی را باز کرد و بهره‌وری سخت‌افزار را به سطوحی بی‌سابقه رساند.

به قلم آرش رضایی

این خبر را به اشتراک بگذارید

گوش‌ دهید

به‌طور خلاصه

  • الگوریتم‌های توجه استاندارد، قدرت پردازشی را با انتظار برای انتقال داده‌ها از حافظه کند هدر می‌دهند.
  • فلش‌اتنشن از تکنیکی به نام کاشی‌کاری برای محاسبه توجه در بلوک‌های کوچک روی حافظه فوق‌سریع SRAM پردازنده گرافیکی استفاده می‌کند.
  • این الگوریتم نیاز به حافظه برای مکانیزم توجه را از حالت مربعی به خطی کاهش می‌دهد.

سرعت یک مدل هوش مصنوعی به ندرت به سرعت ضرب اعداد توسط پردازنده‌هایش محدود می‌شود؛ بلکه محدودیت اصلی در سرعت انتقال این اعداد از حافظه است. در پردازنده‌های گرافیکی (GPU) مدرن، هسته‌های محاسباتی می‌توانند تریلیون‌ها عملیات را در ثانیه انجام دهند، به شرطی که داده‌ها به موقع برسند.

اما در معماری استاندارد ترانسفورمر که موتور محرک مدل‌های زبانی بزرگ است، داده‌ها تقریباً هرگز به موقع نمی‌رسند. گلوگاه اصلی در مکانیزم توجه (Attention) نهفته است؛ جایی که مدل برای درک زمینه، باید هر کلمه در یک توالی را با تمام کلمات دیگر مقایسه کند.

با طولانی‌تر شدن این توالی، حافظه مورد نیاز برای ذخیره این مقایسه‌ها به صورت توانی (مربعی) افزایش می‌یابد. یک توالی ۲۰۰۰ توکنی قابل مدیریت است، اما دو برابر کردن آن به ۴۰۰۰ توکن، فضای حافظه اشغالی را چهار برابر می‌کند.

زمانی که مدل تلاش می‌کند یک کتاب ۶۴ هزار توکنی را بخواند، ماتریس توجه میانی آن‌قدر بزرگ می‌شود که دیگر در حافظه پنهان فوق‌سریع روی تراشه پردازنده گرافیکی، موسوم به حافظه دسترسی تصادفی ایستا (SRAM)، جا نمی‌گیرد. در عوض، سخت‌افزار مجبور می‌شود داده‌ها را مدام در حافظه بزرگ‌تر اما کندترِ با پهنای باند بالا (HBM) بخواند و بنویسد.

این جابه‌جایی مداوم داده‌ها یک ترافیک سنگین ایجاد می‌کند. به گفته پژوهشگران دانشگاه استنفورد، پیاده‌سازی‌های استاندارد مکانیزم توجه روی پردازنده گرافیکی انویدیا A100، بخش اعظم زمان خود را صرفاً در انتظار انتقال حافظه می‌گذرانند و تنها به ۲۵ تا ۴۰ درصد از حداکثر ظرفیت محاسباتی نظری سخت‌افزار دست می‌یابند. در حالی که گذرگاه حافظه برای همگام شدن دست و پا می‌زند، هسته‌های محاسباتی بی‌کار می‌مانند.[2]

این الگوریتم با تقسیم ماتریس توجه به کاشی‌های کوچک‌تر، از نوشتن نتایج میانی حجیم در حافظه کند جلوگیری می‌کند.

در ماه مه ۲۰۲۲، پژوهشگرانی به نام‌های تری دائو (Tri Dao) و دن فو (Dan Fu) راه حلی را منتشر کردند که نحوه آموزش مدل‌های زبانی در این صنعت را از اساس تغییر داد. الگوریتم آن‌ها که فلش‌اتنشن (FlashAttention) نام گرفت، نه با تغییر ریاضیات، بلکه با تغییر مکان انجام محاسبات ریاضی، از گلوگاه حافظه عبور کرد.

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

نوآوری اصلی فلش‌اتنشن تکنیکی به نام کاشی‌کاری (Tiling) است. این الگوریتم به جای بارگذاری کل توالی در حافظه HBM، محاسبه ماتریس عظیم توجه و بازنویسی آن، ورودی را به بلوک‌های کوچک‌تر یا همان کاشی‌ها تقسیم می‌کند. سپس یک کاشی منفرد را از حافظه ۸۰ گیگابایتی HBM به حافظه کوچک اما فوق‌العاده سریع ۲۰ مگابایتی SRAM که پهنای باندی برابر با ۱۹ ترابایت بر ثانیه دارد، منتقل می‌کند.[1][3]

به محض اینکه کاشی وارد SRAM می‌شود، پردازنده گرافیکی محاسبات توجه را به صورت محلی انجام داده و خروجی نهایی را مستقیماً به‌روزرسانی می‌کند. ماتریس‌های میانی عظیم اصلاً در HBM نوشته نمی‌شوند.

با حذف این خواندن و نوشتن‌های غیرضروری در حافظه، نسخه اولیه الگوریتم فلش‌اتنشن توانست به ۱۵ درصد افزایش سرعت کلی در مدل‌های BERT-large و ۳ برابر افزایش سرعت در GPT-2 دست یابد. مهم‌تر از آن، این روش نیاز به حافظه را از حالت مربعی به خطی کاهش داد و ناگهان آموزش مدل‌ها روی توالی‌های ۱۶ هزار توکنی یا بیشتر را ممکن ساخت.[1]

فلش‌اتنشن ردپای حافظه مکانیزم توجه را از حالت مربعی به خطی کاهش داده و پنجره‌های زمینه عظیم را امکان‌پذیر می‌سازد.

تأثیر این دستاورد بر صنعت هوش مصنوعی فوری بود. پلتفرم هاگینگ فیس (Hugging Face) این الگوریتم را در کتابخانه هسته ترانسفورمرز خود ادغام کرد و خاطرنشان ساخت که «با موازی‌سازی مضاعف محاسبات توجه در طول توالی، می‌تواند سرعت استنتاج را به طور چشمگیری افزایش دهد.» مدل‌های متن‌باز بزرگی از جمله لاما (Llama) و فالکون (Falcon) نیز آن را به عنوان استانداردی برای آموزش و استنتاج پذیرفتند.[4]

با این حال، نسخه اول هنوز جای پیشرفت داشت. اگرچه این نسخه ترافیک حافظه را کاهش داد، اما نتوانست کار محاسباتی را به شکلی بی‌نقص بین رشته‌های (Threads) داخلی پردازنده گرافیکی تقسیم کند. در ژوئیه ۲۰۲۳، دائو فلش‌اتنشن-۲ را منتشر کرد که در آن کرنل برای بهینه‌سازی تقسیم کار بازنویسی شده بود. این به‌روزرسانی، بار کاری را با کارایی بیشتری در میان وارپ‌های (Warps) پردازنده گرافیکی - گروه‌های ۳۲ تایی از رشته‌ها که دستورالعمل‌ها را همزمان اجرا می‌کنند - توزیع کرد.[2]

این تقسیم‌بندی، نیاز رشته‌ها به همگام‌سازی و اشتراک‌گذاری حافظه با یکدیگر را کاهش داد. نتایج حاصل، بهره‌وری سخت‌افزار را به سطوحی بی‌سابقه رساند. فلش‌اتنشن-۲ به سرعت آموزشی معادل ۲۲۵ ترافلاپس بر ثانیه روی پردازنده گرافیکی A100 رسید و توانست ۷۲ درصد از حداکثر بهره‌وری نظری فلاپ (FLOP) مدل را محقق کند. این نسخه تقریباً دو برابر سریع‌تر از نسخه اصلی بود.[2]

بهینه‌سازی تقسیم کار در میان رشته‌های پردازنده گرافیکی به نسخه‌های بعدی این الگوریتم اجازه داد تا از نزدیک به سه چهارم ظرفیت نظری سخت‌افزار استفاده کنند.

مقیاس‌پذیری خطی حافظه، قابلیت‌های کاملاً جدیدی را برای مدل‌های زبانی به ارمغان آورد. پیش از سال ۲۰۲۲، پنجره‌های زمینه عمدتاً به ۲۰۴۸ یا ۴۰۹۶ توکن محدود می‌شدند. پس از پذیرش گسترده الگوریتم‌های توجهِ آگاه از ورودی/خروجی (IO-aware)، توسعه‌دهندگان شروع به انتشار مدل‌هایی کردند که قادر به پردازش همزمان ۳۲ هزار، ۱۰۰ هزار و در نهایت یک میلیون توکن بودند. این امر به کاربران اجازه داد تا کل پایگاه‌های کد، گزارش‌های مالی یا رمان‌ها را در یک پرامپت واحد بارگذاری کنند.

رقابت برای بهینه‌سازی در کنار استقرار سخت‌افزارهای جدید همچنان ادامه دارد. در ژوئیه ۲۰۲۴، پژوهشگران فلش‌اتنشن-۳ را معرفی کردند که به طور خاص برای معماری هاپر (Hopper) انویدیا، از جمله پردازنده گرافیکی H100 طراحی شده بود. این نسخه از قابلیت‌های ناهمگام هسته‌های تنسور (Tensor Cores) جدید بهره می‌برد و به تراشه اجازه می‌دهد تا محاسبات و جابه‌جایی داده‌ها را به صورت همزمان و هم‌پوشانی‌شده انجام دهد.

فلش‌اتنشن-۳ با درهم‌آمیختن ضرب ماتریس و عملیات سافت‌مکس (Softmax)، پردازنده H100 را به ۷۵ درصد از حداکثر ظرفیت نظری خود می‌رساند و در دقت ۱۶ بیتی به سرعت ۷۴۰ ترافلاپس دست می‌یابد. هنگام استفاده از فرمت‌های ممیز شناور ۸ بیتی با دقت پایین‌تر، این الگوریتم به مرز ۱.۲ پتافلاپس نزدیک می‌شود.

هنگام استفاده از فرمت‌های ممیز شناور ۸ بیتی با دقت پایین‌تر، این الگوریتم به مرز ۱.۲ پتافلاپس نزدیک می‌شود.

سیر تکامل این الگوریتم‌ها نشان‌دهنده یک تغییر جهت در پژوهش‌های هوش مصنوعی است. سال‌ها تمرکز اصلی بر طراحی معماری‌های نوین شبکه‌های عصبی بود. اما امروزه، تأثیرگذارترین پیشرفت‌ها اغلب در نقطه تلاقی نرم‌افزار و سخت‌افزار رخ می‌دهند؛ جایی که پژوهشگران محدودیت‌های فیزیکی سیلیکون را به عنوان بخشی از خود الگوریتم در نظر می‌گیرند. سقف عملکرد یک مدل، اکنون توسط فاصله فیزیکی‌ای که داده‌ها باید طی کنند تعیین می‌شود.

اصطلاحات کلیدی

کاشی‌کاری (Tiling)
تکنیکی که یک مجموعه داده بزرگ را به بلوک‌های کوچک‌تر تقسیم می‌کند تا بتوان آن‌ها را به صورت متوالی در یک حافظه پنهان کوچک و سریع پردازش کرد.
SRAM
حافظه دسترسی تصادفی ایستا؛ یک حافظه پنهان بسیار کوچک اما فوق‌العاده سریع که مستقیماً روی تراشه پردازشی قرار دارد.
HBM
حافظه با پهنای باند بالا؛ استخر ذخیره‌سازی اصلی روی یک کارت گرافیک که بزرگ‌تر است اما دسترسی به آن بسیار کندتر از SRAM است.
بهره‌وری فلاپ (FLOP Utilization)
درصدی از حداکثر سرعت محاسباتی نظری یک پردازنده که در طول یک کار به طور واقعی استفاده می‌شود.
وارپ (Warp)
گروهی متشکل از ۳۲ رشته موازی در داخل یک پردازنده گرافیکی که یک دستورالعمل یکسان را به طور همزمان اجرا می‌کنند.

پرسش‌های متداول

تفاوت بین HBM و SRAM چیست؟

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

آیا فلش‌اتنشن خروجی مدل را تغییر می‌دهد؟

خیر. برخلاف روش‌های توجه تقریبی که دقت را فدای سرعت می‌کنند، فلش‌اتنشن یک الگوریتم دقیق است که دقیقاً همان نتیجه ریاضی توجه استاندارد را تولید می‌کند.

چرا توجه استاندارد به صورت مربعی مقیاس می‌شود؟

در توجه استاندارد، هر توکن در یک توالی باید با تمام توکن‌های دیگر مقایسه شود که این امر یک ماتریس N در N از روابط ایجاد می‌کند و با رشد توالی، به سرعت ظرفیت حافظه را پر می‌کند.

بررسی عمیق دیدگاه‌ها

طراحان الگوریتم آگاه از سخت‌افزار

این گروه استدلال می‌کنند که نرم‌افزار باید بر اساس محدودیت‌های فیزیکی سیلیکون طراحی شود.

پژوهشگران این حوزه خاطرنشان می‌کنند که اگر تراشه نتواند داده‌ها را به اندازه کافی سریع جابه‌جا کند، ریاضیات نظری بی‌اهمیت است. آن‌ها بر «آگاهی از ورودی/خروجی» - یعنی به حداقل رساندن فاصله فیزیکی جابه‌جایی داده‌ها بین لایه‌های حافظه - به عنوان محرک اصلی شتاب‌دهی هوش مصنوعی مدرن تمرکز دارند و معماری پردازنده گرافیکی را به عنوان بخش اصلی الگوریتم در نظر می‌گیرند. با طراحی کرنل‌هایی که محدودیت‌های پهنای باند HBM و محدودیت‌های اندازه SRAM را رعایت می‌کنند، آن‌ها به عملکردی دست می‌یابند که بهینه‌سازی صرفاً ریاضی قادر به رسیدن به آن نیست.

پژوهشگران معماری مدل

این گروه بر قابلیت‌های ثانویه‌ای تمرکز دارند که به واسطه مقیاس‌پذیری کارآمد حافظه باز شده‌اند.

برای پژوهشگرانی که خودِ مدل‌ها را می‌سازند، مدیریت دقیق حافظه در درجه دوم اهمیت قرار دارد و نتیجه نهایی یعنی مقیاس‌پذیری خطی مهم است. با حذف جریمه حافظه مربعی، آن‌ها آزادند تا با پنجره‌های زمینه عظیم آزمایش کنند. این امر به هوش مصنوعی اجازه می‌دهد تا کل مخازن کد یا ادبیات طولانی را بدون کمبود حافظه هضم کند و اساساً کاربرد مدل‌های زبانی در محیط‌های تولیدی را تغییر دهد.

نگهدارندگان زیرساخت‌های متن‌باز

این جامعه، استانداردسازی بهینه‌سازی‌های سطح پایین را برای استفاده گسترده در اولویت قرار می‌دهد.

نگهدارندگان کتابخانه‌هایی مانند پای‌تورچ (PyTorch) و هاگینگ فیس (Hugging Face) این کرنل‌های سفارشی را به عنوان ابزارهای ضروری می‌بینند که باید از دید کاربر نهایی پنهان (انتزاع) شوند. هدف آن‌ها ادغام یکپارچه بهینه‌سازی‌های پیچیده سخت‌افزاری است تا توسعه‌دهندگان بتوانند تنها با به‌روزرسانی یک بسته نرم‌افزاری، از افزایش سرعت چشمگیر بهره‌مند شوند. تمرکز آن‌ها بر پایداری، سازگاری با سخت‌افزارهای مختلف و اطمینان از این است که این ترفندهای سطح پایین، معماری‌های موجود مدل را مختل نکنند.

طراحان الگوریتم آگاه از سخت‌افزار 40%پژوهشگران معماری مدل 35%نگهدارندگان زیرساخت‌های متن‌باز 25%
طراحان الگوریتم آگاه از سخت‌افزار
این گروه استدلال می‌کنند که نرم‌افزار باید بر اساس محدودیت‌های فیزیکی سیلیکون طراحی شود.
پژوهشگران معماری مدل
این گروه بر قابلیت‌های ثانویه‌ای تمرکز دارند که به واسطه مقیاس‌پذیری کارآمد حافظه باز شده‌اند.
نگهدارندگان زیرساخت‌های متن‌باز
این جامعه، استانداردسازی بهینه‌سازی‌های سطح پایین را برای استفاده گسترده در اولویت قرار می‌دهد.

دیدگاه‌هایی که این گزارش پوشش نداده

  • تولیدکنندگان سخت‌افزار
  • ارائه‌دهندگان محاسبات ابری

منابع

پوشش منابع

5 منبع

3 دیدگاه شناسایی‌شده

طراحان الگوریتم آگاه از سخت‌افزار 40%پژوهشگران معماری مدل 35%نگهدارندگان زیرساخت‌های متن‌باز 25%
  1. [1]arXivطراحان الگوریتم آگاه از سخت‌افزار

    FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness

    مطالعه در arXiv →
  2. [2]arXivطراحان الگوریتم آگاه از سخت‌افزار

    FlashAttention-2: Faster Attention with Better Parallelism and Work Partitioning

    مطالعه در arXiv →
  3. [3]Latent Spaceپژوهشگران معماری مدل

    FlashAttention 2: making Transformers 800% faster w/o approximation - with Tri Dao of Together AI

    مطالعه در Latent Space →
  4. [4]Hugging Faceنگهدارندگان زیرساخت‌های متن‌باز

    GPU inference

    مطالعه در Hugging Face →
  5. [5]تیم سردبیری کوهستاننگهدارندگان زیرساخت‌های متن‌باز

    تحلیل تیم سردبیری کوهستان

    مطالعه در تیم سردبیری کوهستان →
گوش‌ دهید

نظرات

همیشه در جریان باشید

هر زاویه. هر روز.

اخبار هوش مصنوعی با پوشش کامل منابع و تحلیل دیدگاه‌ها، هر روز و رایگان.