الأبحاثمفتوح المصدر 🇺🇸 29.07.2026 23:03

تحليل الأداء في PyTorch (الجزء 3): الانتباه هو كل ما تحتاج لتحليله

PyTorchPyTorch NVIDIANVIDIA
تقوم هذه المقالة بتحليل أداء آليات الانتباه في PyTorch، مقارنة الانتباه الساذج والتحسين الموضعي والخلفيات الخاصة بـ Scaled Dot Product Attention (SDPA). تكشف النتائج أن الخلفية الرياضية لـ SDPA أبطأ من الانتباه الساذج بسبب ضعف استخدام Tensor Core، وإعادة بناء القناع، وزيادة التكلفة الحسابية لـ safe softmax.
المقال الثالث في سلسلة "تحليل الأداء في PyTorch" يحلل آليات الانتباه. يبدأ بوحدة انتباه بسيطة (ضرب المصفوفات، القياس، القناع، softmax، ضرب المصفوفات) ويظهر تتبعها 5 نوى GPU لكل تمرير أمامي. استبدال masked_fill غير الموضعي بـ masked_fill_ الموضعي يزيل نواة نسخ الذاكرة، مما يوفر الوقت والذاكرة. بعد ذلك، يتم تقديم الانتباه النقطي القياسي (Scaled Dot Product Attention - SDPA)؛ واجهته الخلفية الحسابية، رغم أنها أكثر أمانًا (معالجة حالات NaN) وأكثر دقة (FP32)، إلا أنها أبطأ بمقدار 3.7 مرات من الانتباه البسيط لأنها تُطلق 20 نواة GPU، ولا تستخدم Tensor Cores (تستخدم sgemm بدلاً من ضرب مصفوفات bf16 Tensor Core)، وتعيد بناء قناع السببية في كل استدعاء، وتستخدم _safe_softmax. تشير المقالة إلى أن SDPA عادةً ما تختار الواجهة الخلفية الأسرع تلقائيًا.
المصدر: Hugging Face blog — الأصلي
منشوراتنا السابقة حول هذا الموضوع ↓
أخبار جديدة