اخبار فارسی
آخرین
هوش مصنوعی و فناوری

Tensor Cores، Triton، شبکه‌های باقیمانده و ترنسفورمرهای بینایی

نمایی توضیحی از جزئیات تراشه یک CPU متعلق به دهه 1980، نه GPU.
نمایی توضیحی از جزئیات تراشه یک CPU متعلق به دهه 1980، نه GPU.

از سال 2015 تا امروز، یادگیری عمیق از کد GPU به زبان C++ با تنظیم دستی و شبکه‌های کانولوشنی به موتورهای ماتریسی با شتاب سخت‌افزاری و معماری‌های Transformer تکامل یافت. این سه نقطه عطف شیوه مهندسی و مقیاس‌دهی مدل‌های هوش مصنوعی امروزی را تعریف می‌کنند.

1. تکامل مدرن CUDA: ‏Tensor Cores و OpenAI Triton

در سال 2012، ‏Alex Krizhevsky کد سطح پایین CUDA C++ با نام cuda-convnet را برای محاسبه عملیات تکی ممیز شناور روی هسته‌های استاندارد CUDA نوشت. امروزه یادگیری عمیق به سخت‌افزار تخصصی ماتریسی و کامپایلرهای سطح بالا متکی است.

  • از هسته‌های CUDA تا Tensor Cores. هسته‌های سنتی CUDA در هر چرخه ساعت یک ضرب و جمع اسکالر انجام می‌دهند. NVIDIA از معماری Volta (2017) به بعد Tensor Cores را معرفی کرد که ماتریس‌های کوچک کامل (مانند بلوک‌های 4×4 یا 16×16) را در یک چرخه ساعت ضرب می‌کنند. Tensor Cores امروزی از قالب‌های دقت ترکیبی مانند FP16، ‏BF16 و FP8 استفاده می‌کنند و برای ضرب ماتریس‌ها افزایش سرعتی در حد یک مرتبه بزرگی به همراه دارند.
  • cuDNN و انتخاب خودکار کرنل. به‌جای آنکه پژوهشگران کانولوشن‌های اختصاصی C++ بنویسند، کتابخانه cuDNN شرکت NVIDIA اکنون صدها کرنل اسمبلی از پیش کامپایل‌شده دارد. هنگام اجرا، چارچوب‌هایی مانند PyTorch الگوریتم‌های مختلف را برای شکل دقیق تانسور شما محک می‌زنند و سریع‌ترین روال Tensor Core را خودکار انتخاب می‌کنند.
  • OpenAI Triton (برنامه‌نویسی GPU مبتنی بر Python). نوشتن CUDA C++ خام مستلزم مدیریت دستی اندیس‌گذاری رشته‌ها، تداخل بانک‌های حافظه اشتراکی و همگام‌سازی warp است. Triton که OpenAI منتشر کرده است، به پژوهشگران اجازه می‌دهد کرنل‌های GPU با کارایی بالا را مستقیما در Python بنویسند. شما عملیات را در سطح بلوک (کاشی‌های داده) تعریف می‌کنید و کامپایلر Triton به‌طور خودکار تجمیع دسترسی‌های حافظه، کاشی‌بندی حافظه اشتراکی و زمان‌بندی Tensor Core را انجام می‌دهد و اغلب با CUDA C++ تنظیم‌شده به‌صورت دستی برابری می‌کند یا از آن پیشی می‌گیرد.

2. اتصال‌های میان‌بر ResNet و جریان پس‌انتشار

پیش از ResNet (2015)، روی هم گذاشتن بیش از ~20 لایه کانولوشنی باعث جهش خطای آموزش می‌شد. هنگامی که گرادیان‌ها از میان ده‌ها مرحله ضرب به عقب برمی‌گشتند، به سمت صفر کوچک می‌شدند (محو شدن گرادیان‌ها) یا ناپایدار می‌شدند.

  • یادگیری باقیمانده‌ها به‌جای خروجی‌های خام. در یک بلوک استاندارد شبکه، لایه‌های روی هم قرارگرفته تلاش می‌کنند نگاشت مستقیم H(x) را از ورودی x یاد بگیرند. ResNet یک اتصال میان‌بر (میان‌بر همانی) معرفی می‌کند که ورودی اصلی x را مستقیما به خروجی بلوک می‌افزاید:

y=F(x)+x

در اینجا F(x) نشان‌دهنده لایه‌های کانولوشنی روی هم است. به‌جای بازسازی کل بازنمایی از صفر، لایه‌ها فقط باید باقیمانده (تعدیل کوچک F(x) = y - x) را یاد بگیرند. اگر لایه‌ای لازم نباشد، شبکه به‌سادگی می‌تواند F(x) را به صفر نزدیک کند و یک مسیر عبور همانی بدون تغییر باقی بگذارد.

  • مسیر بی‌وقفه گرادیان. در پس‌انتشار، قاعده زنجیره‌ای گرادیان زیان (L) را نسبت به ورودی x محاسبه می‌کند:

(∂ L)/(∂ x)=(∂ L)/(∂ y)((∂ F(x))/(∂ x)+1)

به‌دلیل جمله + 1 که میان‌بر همانی ایجاد می‌کند، گرادیان بالادست ((∂ L)/(∂ y)) مستقیما به لایه‌های قبلی بازمی‌گردد، بدون آنکه ماتریس‌های کوچک وزن در (∂ F(x))/(∂ x) آن را کوچک کنند. این کار انتشار بدون اختلال گرادیان‌ها را در بیش از 100 یا حتی بیش از 1,000 لایه ممکن می‌سازد.

3. گذار از CNNها به ترنسفورمرهای بینایی (ViT)

تقریبا یک دهه پس از AlexNet، شبکه‌های عصبی کانولوشنی (CNNs) با لغزاندن فیلترهای محلی کوچک روی تصاویر بر بینایی رایانه‌ای مسلط بودند. در سال 2020، ‏Google ترنسفورمر بینایی (ViT) را معرفی کرد و معماری Transformer را از پردازش زبان طبیعی برای تصاویر سازگار ساخت.

ویژگیشبکه‌های عصبی کانولوشنی (CNNs)ترنسفورمرهای بینایی (ViT)
پردازش ورودیکل شبکه دوبعدی تصویر را با فیلترهای لغزان (مثلا 3×3) پردازش می‌کند.تصویر را به تکه‌هایی با اندازه ثابت (مثلا 16×16 پیکسل) تقسیم می‌کند و آن‌ها را به دنباله‌ای از توکن‌ها تخت می‌کند.
میدان پذیرشابتدا محلی. لایه‌های اولیه فقط پیکسل‌های مجاور را می‌بینند؛ زمینه سراسری به‌آرامی در لایه‌های عمیق شکل می‌گیرد.بلافاصله سراسری. خودتوجهی از همان لایه 1 هر تکه تصویر را به تمام تکه‌های دیگر متصل می‌کند.
سوگیری استقراییزیاد. فرض‌های از پیش تعبیه‌شده درباره ناوردایی نسبت به جابه‌جایی و محلی بودن فضایی دوبعدی به CNNها کمک می‌کنند روی مجموعه‌داده‌های کوچک‌تر خوب یاد بگیرند.کم. قواعد فضایی دوبعدی از پیش تعبیه‌شده ندارد (بر تعبیه‌های موقعیتی تکیه می‌کند) و برای یادگیری ساختار بصری به مجموعه‌داده‌های عظیم نیاز دارد.
مقیاس‌پذیری سخت‌افزاریبه کرنل‌های تخصصی کانولوشن و الگوهای پیچیده دسترسی به حافظه متکی است.تقریبا به‌طور کامل به ضرب ماتریس‌های متراکم (GEMMs) متکی است که Tensor Cores در GPUهای امروزی را با حداکثر کارایی اشباع می‌کنند.
  • چرا ViTها بر هوش مصنوعی امروزی مسلط شدند. اگرچه CNNها همچنان برای دستگاه‌های سبک موبایل و لبه کارآمدند، ترنسفورمرهای بینایی هنگام آموزش روی صدها میلیون تصویر بسیار بهتر مقیاس می‌گیرند. افزون بر این، چون ViTها تصاویر را به‌صورت دنباله‌های توکن نمایش می‌دهند، دقیقا همان قالبی که برای متن و صوت به کار می‌رود، به مدل‌های چندوجهی هوش مصنوعی امروزی (مانند GPT-4o و Gemini) امکان دادند بینایی و زبان را درون یک معماری یکپارچه پردازش کنند.

اخبار بیشتر: هوش مصنوعی و فناوری