خطوات الاستخدام
قم بإدخال طول التسلسل (seqLen) وهو عدد المواضع أو الرموز في التسلسل المدخل. على سبيل المثال، في جملة مكونة من 10 كلمات، يكون seqLen = 10. هذا العدد يمثل عدد الصفوف في مصفوفة الترميز الموضعي.
أدخل بُعد النموذج (dModel) وهو عدد الأبعاد لكل تمثيل موضعي. هذا البعد يحدد عدد الأعمدة في مصفوفة الترميز الموضعي. في نماذج مثل Transformer الأساسي، يكون dModel = 512 غالبًا.
تقوم الحاسبة بضرب seqLen في dModel لإعطاء الحجم الإجمالي للمصفوفة (عدد العناصر). تكون أبعاد المصفوفة : (seqLen × dModel). هذا الحجم يمثل مساحة التخزين المطلوبة للترميز الموضعي الجيبي.
لفهم أعمق: الترميز الموضعي يستخدم دوال جيبية (sin) وجيب تمام (cos) بترددات مختلفة لكل بعد. معادلة الترميز للموضع pos والبعد i هي: PE(pos, 2i) = sin(pos / 10000^(2i/dModel)) و PE(pos, 2i+1) = cos(pos / 10000^(2i/dModel)). هذه المعادلة تضمن أن كل موضع له تمثيل فريد وأن النموذج يمكنه تعلم العلاقات بين المواضع.
يمكنك استخدام الناتج لتقدير متطلبات الذاكرة أو مقارنة أحجام الترميزات لمختلف الإعدادات. على سبيل المثال، إذا كان seqLen = 1024 و dModel = 768، فالحجم هو 1024*768 = 786,432 عنصرًا، أي حوالي 3 ميجابايت إذا كان كل عنصر يمثل float 32 (4 بايت).
أمثلة محلولة
تطبيقات عملية على حجم مصفوفة الترميز الموضعي بخطوات الحل كاملة.
الحل
المدخلات: seqLen = 50, dModel = 128. الحجم = 50 * 128 = 6400 عنصر. إذا تم تخزين كل عنصر بصيغة float32 (4 بايت)، فإن الذاكرة المطلوبة = 6400 * 4 = 25,600 بايت ≈ 25 كيلوبايت. هذا حجم صغير جداً، مما يعني أن الترميز الموضعي لن يشكل عبئاً على الذاكرة حتى مع تسلسلات أطول. لاحظ أن الترميز الموضعي عادة ما يُحسب مسبقاً ويُخزن في الذاكرة، أو يُحسب ديناميكياً. في الحالتين، هذا الحجم لا يمثل مشكلة. ولكن إذا كان seqLen = 10000 و dModel = 1024، يصبح الحجم 10,240,000 عنصر أي حوالي 40 ميجابايت، وهو حجم أكبر يتطلب اهتماماً في التطبيقات محدودة الذاكرة.
الحل
المدخلات: seqLen = 512, dModel = 768. الحجم = 512 * 768 = 393,216 عنصر. في float32، الذاكرة = 393,216 * 4 = 1,572,864 بايت ≈ 1.5 ميجابايت. دلالة الأبعاد: كل بعد i (من 0 إلى 767) له تردد مختلف. الأبعاد الزوجية تستخدم دالة sin، والأبعاد الفردية تستخدم cos. التردد يتناقص مع زيادة i، بحيث أن الأبعاد الأولى تلتقط تغييرات سريعة (مواضع قريبة)، والأبعاد الأخيرة تلتقط تغييرات بطيئة (مواضع بعيدة). هذا التمثيل متعدد الترددات يسمح للنموذج بالتقاط العلاقات على مسافات مختلفة. المصفوفة نفسها ثابتة (غير قابلة للتعلم) في معظم تطبيقات Transformer الأصلية، ولكن بعض المتغيرات مثل BERT تستخدم ترميزاً قابلاً للتعلم بدلاً من الجيبي.
أمثلة محسوبة
قيم مُدخَلة ونتيجة محسوبة فعليًا بواسطة حجم مصفوفة الترميز الموضعي.
مثال 1: 50 موضعًا × 128 بعدًا = 6400 عنصرًا (25.6 كيلوبايت)
- طول التسلسل
- 50
- بعد النموذج
- 128
مثال 2: BERT-large 512×768 = 393,216 عنصرًا = 1.5 ميبي بايت
- طول التسلسل
- 512
- بعد النموذج
- 768
الخطوة 5: 1024×768 = 786,432 عنصرًا = 3 ميبي بايت
- طول التسلسل
- 1,024
- بعد النموذج
- 768
سياق طويل 10,000×1024: 40,960,000 بايت (39.0625 ميبي)
- طول التسلسل
- 10,000
- بعد النموذج
- 1,024
حجم GPT-3: 2048×12288 = 25,165,824 عنصرًا = 96 ميبي
- طول التسلسل
- 2,048
- بعد النموذج
- 12,288