LLM.int8(): ضرب المصفوفات بـ 8 بت لشبكات التحويل على نطاق واسع

تم تبني نماذج اللغة الكبيرة على نطاق واسع، ولكنها تتطلب ذاكرة فيديو (GPU) كبيرة لإجراء الاستدلال. قمنا بتطوير إجراء للضرب المصفوفي من النوع Int8 لطبقات التغذية الأمامية والتركيز في النماذج المتحولة (transformers)، مما يقلل الذاكرة اللازمة للاستدلال إلى النصف مع الحفاظ على أداء الدقة الكاملة. باستخدام طريقتنا، يمكن تحميل نقطة التحقق التي تحتوي على 175 مليار معلمة ومراجعتها بنظام 16/32 بت، ثم تحويلها إلى Int8 واستخدامها فورًا دون أي تدهور في الأداء. يتم تحقيق هذا من خلال فهم وتخطي خصائص الميزات الناشئة ذات النظام العالي في نماذج اللغة المتحولة التي تسود في طبقات الاهتمام والأداء التنبؤي للمتحولين (transformer). للتعامل مع هذه الميزات، قمنا بتطوير إجراء كمّي من جزأين، وهو LLM.int8(). نستخدم أولاً كمّية متجهة مع ثوابت تطبيع منفصلة لكل حاصل ضرب داخلي في الضرب المصفوفي، للكمّية معظم الميزات. ومع ذلك، بالنسبة للميزات الناشئة الشاذة، نتضمن أيضًا نظام تحلل جديد بدقة مختلطة، والذي يعزل أبعاد الميزات الشاذة إلى ضرب مصفوفي بنظام 16 بت بينما لا يزال أكثر من 99.9٪ من القيم يتم ضربها بنظام 8 بت. باستخدام LLM.int8()، نظهر بالتجارب أنه من الممكن إجراء الاستدلال في النماذج اللغوية الكبيرة التي تحتوي على ما يصل إلى 175 مليار معلمة دون أي تدهور في الأداء. هذا النتيجة يجعل مثل هذه النماذج أكثر سهولة في الوصول إليها بكثير، على سبيل المثال يجعل استخدام OPT-175B/BLOOM ممكنًا على خادم واحد بهواتف الرسوميات المستهلكة (consumer GPUs). لقد جعلنا برنامجنا متاحًا كبرنامج مفتوح المصدر.