تقنية

تكميم وزن النموذج: أي قيمة يمثل العدد المخزن؟

فك رمز مؤلف مقداره 6 بطرح نقطة الصفر 3 وضرب الفرق في نصف للوصول إلى 1.5
رسم حسابي من إعداد بحر العلوم؛ لا وزن مستخرج من نموذج.

قراءة الوزن المكمم بالمقياس ونقطة الصفر تمنع الخلط بين الرمز العددي والقيمة التي يمثلها. يعرض ONNX Runtime علاقة القيمة الحقيقية بالمقياس مضروبًا في الفرق بين الرمز ونقطة الصفر. [1] نطبقها على وزن واحد بشروط معلنة.

الخلاصة السريعة

لا تقرأ الرمز وحده كوزن حقيقي؛ تحتاج إلى المقياس ونقطة الصفر، وقد تعيد العلاقة قيمة قريبة من الأصل لا مساوية له.

  • في العلاقة الموثقة نطرح نقطة الصفر من الرمز ثم نضرب بالمقياس الموجب؛ نقطة الصفر تمثل الصفر في فضاء التكميم. [1]
  • نختار مقياسًا 0.5 ونقطة صفر 3؛ وزن 1.3 يعطي رمزًا 6 في قاعدة التقريب التي أعلنّاها، ثم قيمة مفكوكة 1.5 وخطأ مقداره 0.2.
  • الرمز 3 يمثل صفرًا في هذا العقد؛ الرمز 6 مع نقطة صفر أخرى مقدارها صفر يمثل 3، فلا يكفي تشابه الرموز لتساوي الأوزان.
  • احفظ المقياس ونقطة الصفر وقاعدة التقريب والمجال مع الرمز؛ خطأ وزن واحد لا يحدد دقة النموذج أو سرعته، ولم نحول ملفًا.

أي عدد ننسبه إلى الوزن؟

تكتب وثيقة ONNX Runtime العلاقة: القيمة الحقيقية = المقياس × (الرمز المكمم − نقطة الصفر)، مع مقياس موجب. [1]

نسمي العدد الصحيح «رمزًا» هنا حتى لا نقرأه مباشرة بوصفه المقدار الذي يضرب مدخل الطبقة. هذا التمييز يخص عقد التمثيل الذي نراجعه. لا يتعلق بمعدل تعلم أو بعامل نضرب به خسارة التدريب ثم نفك تحجيم تدرجها.

سنؤلف مقياسًا ثابتًا 0.5 ونقطة صفر 3، ونسمح في ورقتنا برموز صحيحة من صفر إلى 255. نعلن التقريب إلى أقرب عدد صحيح في الحالة المختارة، ولا نحتاج قاعدة كسر التعادل لأن مثالنا ليس في منتصف عددين.

احسب الرمز ثم القيمة المفكوكة

نختار وزنًا أصليًا مقداره 1.3. نقسمه على 0.5 ثم نضيف 3، فيكون العدد قبل التقريب 2.6 + 3 = 5.6. وفق قاعدتنا اليدوية يقرب إلى 6، وهو داخل المجال المعلن فلا نقصه إلى حد آخر.

عند فك الرمز نطرح 3 من 6 ثم نضرب الناتج في 0.5؛ نحصل على 1.5. الفرق المطلق عن الأصل هو 1.5 − 1.3 = 0.2. العدد 6 ليس الوزن الأصلي، كما أن القيمة المفكوكة 1.5 ليست استعادة دقيقة للعدد 1.3.

هذه عملية على عدد مؤلف، لا خرج من أداة تكميم. لم نفحص معاملات شبكة أو نثبت أن جميعها لها هذا الخطأ. ولا نشتق إعداد المقياس من تدريب فعلي؛ اخترناه لبيان أثر العقد.

لماذا لا ننسخ الرمز إلى عقد آخر؟

في عقدنا يكون الرمز 3 ممثلًا للصفر؛ الحساب 0.5 × (3 − 3) يساوي صفرًا. أما قراءة الرمز نفسه كعدد حقيقي 3 فتغير المقدار الذي قصده العقد.

نضع بطاقة أخرى مستقلة لها المقياس نفسه 0.5 لكن نقطة الصفر فيها صفر. الرمز 6 في هذه البطاقة يفك إلى 3، بينما يفك إلى 1.5 في الأولى. لم يتغير الرمز، بل تغيرت المعلومة اللازمة لتفسيره.

لذلك لا نستنتج تطابق وزنين من تطابق رمزيهما في ملفين مجهولي الإعداد. وإذا لم نعرف مقياس أحدهما أو نقطة صفره، لا نملأها من شكل الرمز أو من بيانات ملف آخر.

ما حدود الخطأ الذي حسبناه؟

خطأ 0.2 يصف عددًا واحدًا تحت قاعدة محددة. لا يحسب خطأ الجواب النهائي، ولا يثبت أن أثره يختفي أو يتراكم داخل طبقات أخرى. يلزم تعريف العملية والمدخلات قبل إجراء حساب إضافي.

ونميز بين عدم الدقة في التمثيل وبين ضغط ملف للتخزين. لم نقرأ حجم ملف أو نوع عملية على جهاز، فلا نقدم سرعة تنفيذ أو وفر ذاكرة من هذه الورقة. كما لا يعد تقريب الوزن دليلًا أنه غير مهم للمهمة.

بطاقة المراجعة المقترحة تحفظ الأصل والرمز والمقياس ونقطة الصفر والمجال والتقريب. الرسم يتابع فك الرمز 6 إلى 1.5، ويضعه بجانب الأصل 1.3. المقارنة العددية صريحة، دون ادعاء اختبار نموذج أو تحويله.

المصادر ومتابعة القراءة

  1. ONNX Runtime: Quantize ONNX Models — representation (يفتح في نافذة جديدة)onnxruntime.ai

أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.