خطوات الاستخدام
الخطوة 1: إدخال طول التسلسل (seqLen). يمثل عدد الرموز (tokens) في تسلسل الإدخال. كلما زاد طول التسلسل، زادت العمليات الحسابية بشكل تربيعي في طبقة الانتباه (O(seqLen^2)) وخطي في الطبقات الأخرى. أدخل قيمة صحيحة موجبة.
الخطوة 2: إدخال بُعد النموذج (dModel). هو حجم تمثيل كل رمز بعد التضمين (embedding). يُستخدم في جميع طبقات المحول، ويؤثر بشكل خطي على معظم العمليات الحسابية. أدخل قيمة صحيحة موجبة (مثل 512 أو 1024).
الخطوة 3: إدخال بُعد الشبكة العصبية التغذية الأمامية (ffnDim). يمثل عدد الوحدات في الطبقة المخفية للشبكة الأمامية (FFN) داخل كل طبقة. عادةً ما يكون 4 أضعاف dModel. أدخل قيمة صحيحة موجبة.
الخطوة 4: حساب FLOPs الكلية. تستخدم الآلة الحاسبة المعادلة: FLOPs = 4*seqLen*dModel^2 + 2*seqLen^2*dModel + 2*seqLen*dModel*ffnDim. تمثل هذه المعادلة عدد عمليات الفاصلة العائمة لطبقة مشفر محول واحدة (بدون طبقات التطبيع و التجميع). الناتج بوحدة FLOPs (يمكن تحويله إلى GFLOPs بالقسمة على 10^9).
أمثلة محلولة
تطبيقات عملية على عمليات مشفر المحول بخطوات الحل كاملة.
الحل
نطبق المعادلة: seqLen=512, dModel=1024, ffnDim=4096.
الجزء الأول (الانتباه): 4 × 512 × 1024² = 4 × 512 × 1,048,576 = 4 × 536,870,912 = 2,147,483,648.
الجزء الثاني (الانتباه التربيعي): 2 × 512² × 1024 = 2 × 262,144 × 1024 = 2 × 268,435,456 = 536,870,912.
الجزء الثالث (الشبكة الأمامية): 2 × 512 × 1024 × 4096 = 2 × 512 × 4,194,304 = 2 × 2,147,483,648 = 4,294,967,296.
المجموع = 2,147,483,648 + 536,870,912 + 4,294,967,296 = 6,979,321,856 FLOPs ≈ 6.98 GFLOPs لكل طبقة.
إذا كان النموذج يحتوي على 24 طبقة، فإن إجمالي FLOPs للترميز ≈ 24 × 6.98 = 167.5 GFLOPs.
الحل
seqLen=2048, dModel=12288, ffnDim=49152.
الجزء الأول: 4 × 2048 × 12288² = 4 × 2048 × 150,994,944 = 4 × 309,237,645,312 = 1,236,950,581,248.
الجزء الثاني: 2 × 2048² × 12288 = 2 × 4,194,304 × 12288 = 2 × 51,539,607,552 = 103,079,215,104.
الجزء الثالث: 2 × 2048 × 12288 × 49152 = 2 × 2048 × 603,979,776 = 2 × 1,236,950,581,248 = 2,473,901,162,496.
المجموع = 1,236,950,581,248 + 103,079,215,104 + 2,473,901,162,496 = 3,813,930,958,848 FLOPs ≈ 3.81 TFLOPs لكل طبقة.
لاحظ أن الجزء التربيعي صغير نسبياً مقارنة بالجزء الخطي بسبب طول التسلسل الكبير، لكنه لا يزال مهمًا للنماذج الضخمة.
أمثلة محسوبة
قيم مُدخَلة ونتيجة محسوبة فعليًا بواسطة عمليات مشفر المحول.
مثال 1: طبقة BERT Large = 6,979,321,856 (كانت تُحسب 4.8 مليار)
- طول التسلسل
- 512
- بعد النموذج
- 1,024
- بعد شبكة التغذية الأمامية
- 4,096
مثال 2: طبقة بعرض GPT-3 = 3,813,930,958,848
- طول التسلسل
- 2,048
- بعد النموذج
- 12,288
- بعد شبكة التغذية الأمامية
- 49,152
حالة الوحدة: 4 + 2 + 2 = 8 عملية
- طول التسلسل
- 1
- بعد النموذج
- 1
- بعد شبكة التغذية الأمامية
- 1
طبقة صغيرة: 52,428,800 عملية و4% للحد التربيعي
- طول التسلسل
- 64
- بعد النموذج
- 256
- بعد شبكة التغذية الأمامية
- 1,024
سياق طويل: الحد التربيعي يعادل الشبكة الأمامية (40% من الطبقة)
- طول التسلسل
- 4,096
- بعد النموذج
- 1,024
- بعد شبكة التغذية الأمامية
- 4,096