خطوات الاستخدام
1. فهم الانتباه المتقاطع (Cross-Attention): في نموذج المحول (Transformer)، يحدث الانتباه المتقاطع بين المشفر (Encoder) وفك التشفير (Decoder). يقوم فك التشفير باستخدام تمثيلات المشفر كقيم (Values) ومفاتيح (Keys)، بينما يستخدم استعلامات (Queries) من حالته المخفية. الهدف هو السماح لفك التشفير بالتركيز على أجزاء مختلفة من تسلسل الإدخال. يتم حساب مصفوفة الانتباه عبر: Attention(Q, K, V) = softmax(QK^T / √d_k) V، حيث d_k هو بُعد المفاتيح (عادةً dModel).
2. حساب عدد عمليات الفاصلة العائمة (FLOPs) لحساب QK^T: هذه هي الخطوة الأكثر تكلفة. حجم كل من Q و K: decSeqLen × dModel و encSeqLen × dModel على التوالي. ضرب المصفوفات ينتج مصفوفة بحجم decSeqLen × encSeqLen. عدد عمليات الضرب والجمع لكل عنصر: dModel ضرب و (dModel-1) جمع، ولكن في FLOPs نعد كل عملية ضرب وجمع كعملية واحدة. العدد التقريبي: 2 * decSeqLen * encSeqLen * dModel (لأن كل عنصر يتطلب dModel ضرب و dModel جمع).
3. حساب FLOPs لعملية softmax وتطبيقها على V: عملية softmax تحتوي على أسس وجمع وتقسيم، ولكن عملياتها صغيرة نسبيًا. بعد softmax، لدينا مصفوفة attention weights بحجم decSeqLen × encSeqLen. ثم ضرب هذه المصفوفة مع V (حجم encSeqLen × dModel) ينتج مخرجات بحجم decSeqLen × dModel. عدد FLOPs لهذه الضرب: 2 * decSeqLen * encSeqLen * dModel (مماثل للخطوة السابقة).