Flash Attention
استكشف كيفية تحسين Flash Attention للذاكرة وتسريع نماذج Transformer. تعرّف على كيفية تعزيزها للرؤية الحاسوبية ولماذا يُعد Ultralytics YOLO26 الخيار الأفضل.
Flash Attention هو خوارزمية محسّنة بدرجة كبيرة صُممت لتسريع تدريب نماذج Transformer واستدلالها من خلال إدارة الوصول إلى الذاكرة بكفاءة أكبر. في التعلم العميق (DL) الحديث، ولا سيما مع النماذج الكبيرة، لا يتمثل عنق الزجاجة الأساسي غالبًا في سرعة معالجة المعالج، بل في الوقت اللازم لنقل البيانات بين تخزين الذاكرة ووحدات الحوسبة. يعالج Flash Attention «جدار الذاكرة» هذا من خلال إعادة تنظيم طريقة معالجة آليات الانتباه للبيانات، ما يؤدي إلى أداء أسرع واستخدام أقل للذاكرة دون التضحية بـالدقة.
آلية عمل Flash Attention#
لفهم Flash Attention، من المفيد إلقاء نظرة على بنية وحدة معالجة الرسومات (GPU). تحتوي GPU على ذاكرة عالية السعة لكنها أبطأ، وهي الذاكرة عالية النطاق الترددي (HBM)، وعلى SRAM داخل الشريحة منخفضة السعة لكنها فائقة السرعة. تعيد تطبيقات الانتباه القياسية قراءة المصفوفات الكبيرة وكتابتها مرارًا إلى HBM البطيئة، ما يؤدي إلى إنشاء تراكم.
يستخدم Flash Attention تقنية تُسمى «التقسيم إلى بلاطات» لتقسيم مصفوفة الانتباه الكبيرة إلى كتل أصغر تتسع بالكامل داخل SRAM السريعة. ومن خلال إبقاء هذه الكتل في الذاكرة السريعة وإجراء المزيد من العمليات الحسابية هناك قبل كتابة النتيجة مرة أخرى، تقلل الخوارزمية بدرجة كبيرة عدد عمليات القراءة والكتابة إلى HBM. هذا الابتكار، الذي قدمه باحثون في جامعة ستانفورد، يجعل العملية «واعية بـ IO»، أي إنها تضع تكلفة نقل البيانات في الحسبان صراحةً. يمكنك استكشاف التفاصيل التقنية في الورقة البحثية الأصلية.
التمييز عن المصطلحات ذات الصلة#
من المهم تمييز Flash Attention عن المفاهيم المشابهة في مسرد الذكاء الاصطناعي (AI):
- الانتباه القياسي: التطبيق التقليدي الذي يحسب مصفوفة الانتباه كاملةً. وهو مطابق رياضيًا لـ Flash Attention في المخرجات، لكنه غالبًا ما يكون أبطأ وأكثر استهلاكًا للذاكرة لأنه لا يحسّن عمليات الإدخال والإخراج في الذاكرة.
- Flash Attention: تحسين دقيق للانتباه القياسي. وهو لا يستخدم التقريب، بل يوفر النتائج العددية نفسها تمامًا، ولكن بسرعة أعلى بكثير.
- الانتباه المتناثر: تقنية تقريب تتجاهل بعض الروابط لتوفير القدرة الحوسبية. وعلى خلاف Flash Attention، تساوم أساليب الانتباه المتناثر على بعض الدقة مقابل السرعة.
الأهمية في الرؤية الحاسوبية وYOLO#
على الرغم من أن Flash Attention طُوّر في الأصل لـمعالجة اللغة الطبيعية (NLP) للتعامل مع التسلسلات النصية الطويلة، فقد أصبح بالغ الأهمية في الرؤية الحاسوبية (CV). تنشئ الصور عالية الدقة تسلسلات هائلة من البيانات عند معالجتها بواسطة محولات الرؤية (ViT).
تؤثر هذه التقنية في تطوير كاشفات الأجسام. فعلى سبيل المثال، قدّمت بعض النماذج التجريبية، مثل YOLO12 الذي يقوده المجتمع، طبقات انتباه تستفيد من هذه المبادئ. ومع ذلك، قد تعاني البنى المعتمدة بالكامل على الانتباه من عدم استقرار التدريب وبطء سرعات CPU. بالنسبة إلى معظم التطبيقات الاحترافية، يُعد Ultralytics YOLO26 المعيار الموصى به. ويستخدم YOLO26 بنية محسّنة بدرجة كبيرة توازن بين السرعة والدقة من أجل اكتشاف الأجسام وتجزئة الصور من البداية إلى النهاية، مع تجنب الحمل الزائد المرتبط غالبًا بطبقات الانتباه الثقيلة على الأجهزة الطرفية.
التطبيقات الواقعية#
تتيح مكاسب الكفاءة التي يحققها Flash Attention تطبيقات كان تشغيلها في السابق مكلفًا جدًا أو بطيئًا جدًا.
-
الذكاء الاصطناعي التوليدي ذو السياق الطويل: في عالم نماذج اللغة الكبيرة (LLMs) مثل GPT-4، يتيح Flash Attention للنموذج «تذكّر» كميات هائلة من المعلومات. ويمكّن ذلك من إنشاء نافذة سياق ضخمة، ما يسمح للمستخدمين بتحميل كتب كاملة أو قواعد شفرات قانونية كاملة لإجراء تلخيص النصوص من دون تعطل النموذج بسبب حدود الذاكرة.
-
التشخيص الطبي عالي الدقة: في تحليل الصور الطبية، التفاصيل مهمة. يحلل اختصاصيو علم الأمراض مسوحًا للعينات النسيجية تبلغ دقتها مليارات البكسلات. ويتيح Flash Attention للنماذج معالجة هذه الصور الهائلة بدقتها الأصلية، وتحديد الشذوذات الصغيرة مثل أورام الدماغ في مراحلها المبكرة من دون تصغير الصورة وفقدان البيانات الحيوية.
مثال على التعليمات البرمجية#
على الرغم من أن Flash Attention يمثل غالبًا تحسينًا داخليًا ضمن مكتبات مثل PyTorch، يمكنك الاستفادة بسهولة من النماذج المعتمدة على الانتباه باستخدام Ultralytics. يوضح المقتطف التالي كيفية تحميل نموذج RT-DETR، الذي يستخدم آليات الانتباه، لإجراء الاستدلال على صورة.
from ultralytics import RTDETR
# Load a pre-trained RT-DETR model which utilizes transformer attention
model = RTDETR("rtdetr-l.pt")
# Perform inference on an image to detect objects
results = model("https://ultralytics.com/images/bus.jpg")
# Display the number of detected objects
print(f"Detected {len(results[0].boxes)} objects.")باستخدام أدوات مثل منصة Ultralytics، يمكن للمطورين تدريب هذه النماذج المتقدمة ونشرها من دون الحاجة إلى تنفيذ نوى GPU المعقدة يدويًا. وتتولى المنصة البنية التحتية، ما يتيح للفرق التركيز على تنسيق مجموعات بيانات عالية الجودة وتفسير النتائج.









