ما المقصود بالتكميم؟

29 يوليو 2024

المؤلفين

Bryan Clark

Senior Technology Advocate

التكميم هي عملية تهدف إلى تقليل دقة الإشارة الرقمية؛ عادةً من تنسيق عالي الدقة إلى تنسيق أقل دقة. تُستخدم هذه التقنية على نطاق واسع في مجالات متعددة، بما في ذلك معالجة الإشارات وضغط البيانات والتعلم الآلي.

التكميم هو تقنية تُستخدم في النماذج اللغوية الكبيرة (LLMs) لتحويل الأوزان وقيم التنشيط للبيانات عالية الدقة، عادةً ما تكون من الفاصلة العائمة 32 بت (FP32) أو الفاصلة العائمة 16 بت (FP16)، إلى بيانات أقل دقة، مثل العدد الصحيح 8 بت (INT8). تُسمى البيانات عالية الدقة (FP32 و FP16) بهذا الاسم لأن النماذج التي تعتمد على هذا النوع من البيانات تتميز عادة بدقة أعلى. يحدث هذا لأنه عندما يتم ضغط البيانات إلى شيء مثل INT8، يتم تقليل حجمها. هذا يؤدي إلى تقليل الدقة، ويُعرف ذلك باسم خطأ التكميم. قيمة التنشيط هي رقم (بين الصفر والواحد) يُخصص للخلية العصبية الاصطناعية في الشبكة العصبية. ويشار إلى هذا الرقم المخصص باسم قيمة التنشيط. الهدف الشائع هو الوصول إلى التكميم 8 بت، ولكن تم تحقيق تكميم البيانات باستخدام عدد صحيح 4 بت (INT4) أو أقل بنجاح. بشكل أساسي، تتم عملية التكميم باستخدام تقنيات الضغط على الشبكة العصبية لتحويل عدد كبير من البتات إلى عدد أقل من البتات. 1

يمكن أن تكون المتطلبات الحسابية لتشغيل نموذج لغوي كبير (LLM) باستخدام FP32 هائلة. بالإضافة إلى المتطلبات الحاسوبية المتزايدة، يمكن أن يؤدي الاستدلال (العملية التي يولّد بها النموذج LLM استجابة لاستعلام المستخدم) إلى تباطؤ الأداء. ويمكن أن يكون التكميم أداة تحسين فعالة لتقليل العبء الحسابي مع زيادة سرعة الاستدلال للنموذج اللغوي الكبير. تتمحور عملية التكميم حول فرضية تحويل الأوزان إلى نوع بيانات أقل دقة مع الحفاظ على أداء النموذج بصورة شبه متطابقة. ينطوي تحويل الأوزان إلى نوع بيانات أقل دقة على تكاليف حسابية أقل، نظرًا لأن عدد البتات التي تحتاج إلى معالجة في كل مرة يتم فيها تشغيل النموذج يكون أقل. كما أن تقليل عدد البتات التي يتم معالجتها سيؤدي إلى تسريع معالجة كل استعلام موجّه للنموذج اللغوي الكبير.

تصميم ثلاثي الأبعاد لكرات تتدحرج على مسار

أحدث الأخبار والرؤى حول الذكاء الاصطناعي 


تتوفر معارف وأخبار منسقة بمهارة حول الذكاء الاصطناعي والسحابة وغيرها في نشرة Think الإخبارية الأسبوعية. 

لماذا نطبق التكميم؟

استدلال أسرع

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

الفاعلية

يعد التكميم أمرا ضروريًا عند محاولة تشغيل نماذج التعلم الآلي على الأجهزة التي لا تستطيع التعامل مع المتطلبات الحسابية العالية. عندما يحوّل التكميم الفاصلة العائمة إلى تمثيل بالأعداد الصحيحة، فإنه يقلل من المتطلبات الحاسوبية لنموذج التعلم الآلي. وهذا يجعل من الممكن استخدام هذه النماذج المُكمَّمة في التطبيقات الواقعية على أجهزة الكمبيوتر المحمولة والأجهزة اللوحية والهواتف الذكية. 2

استهلاك طاقة أقل

عادةً ما تكون للنماذج المُكمَّمة متطلبات حاسوبية أقل. وبالتالي، يؤدي التكميم إلى زيادة كفاءة استهلاك الطاقة، وهو أمر حيوي لتشغيل هذه النماذج على أجهزة الكمبيوتر المحمولة والأجهزة اللوحية والهواتف المحمولة. 3

التوافق

يسمح استخدام التكميم بتشغيل نماذج التعلم الآلي الحالية باستخدام عمليات تعتمد على الأعداد الصحيحة. وهذا يجعل النماذج المُكمَّمة متوافقة مع الأنظمة القديمة التي لا تدعم العمليات التي تعتمد على الفاصلة العائمة. كما يزيد هذا من إتاحة هذه النماذج، مما يجعل من الممكن تشغيلها على وحدات معالجة الرسومات الخاصة بالمستهلكين. 4

كيف يعمل التكميم

هناك حوالي 4 مليارات قيمة ضمن مجموعة القيم المحتملة FP32 التي تتراوح من -3.4 1038 إلى 3.4 1038. بينما مع INT8، نرى 256 قيمة فقط ضمن مجموعة القيم المحتملة التي تتراوح من -128 إلى 128. نظرا لكون الأخير مجموعة أصغر بكثير من القيم، يمكن أن يحدث ضرب المصفوفة بشكل أسرع. نظرا للتكلفة الحاسوبية الهائلة للنماذج القائمة على التعلم العميق، فإن الخوارزميات الدقيقة والفعالة ضرورية.

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

التكميم باستخدام القيمة العظمى المطلقة

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

على سبيل المثال، لنطبق خوارزمية التكميم بالقيمة العظمى المطلقة على المتجه التالي [1.6, -0.7, -3.4, 1.7, -2.9, 0.5, 2.3, 6.2]. يمكنك استخراج القيمة العظمى المطلقة منه، وهي 6.2 في هذه الحالة. يتراوح نطاق INT8 بين [-127, 127]، لذا فإننا نقسم 127 على 6.2 لنحصل على 20.5 كعامل قياس. ومن ثَمَّ، يؤدي ضرب المتجه الأصلي بهذا العامل إلى الحصول على متجه البيانات المُكمَّم [33, -14, -70, 35, -59, 10, 47, 127]. نظرًا لتقريب هذه الأرقام، سيكون هناك فقدان طفيف في الدقة. 5

خوارزمية التكميم التقاربي

لتنفيذ خوارزمية التكميم التقاربي، سنحدد مجموعة قيم الفاصلة العائمة 32 بت كالتالي [a, b]. خوارزمية التكميم التقاربي كالتالي:

𝑥𝑞 = round ((1/𝑆)𝑥+𝑍)

- 𝑥𝑞; هي قيمة INT8 المُكمَّمة التي تقابل قيمة الفاصلة العائمة 32 بت x.

- S هو عامل القياس FP32 وهو قيمة عائمة موجبة 32 بت.

- Z هي نقطة الصفر. ستكون هذه قيمة INT8 التي تقابل الصفر في حقل الفاصلة العائمة 32 بت.

- round تشير إلى تقريب القيمة الناتجة إلى أقرب عدد صحيح.

لتحديد [القيمة الصغرى والقيمة العظمى] لقيم الفاصلة العائمة المكونة من 32 بت، نحتاج إلى أخذ أي قيم خارجية في الاعتبار. يمكن أن يؤدي التغاضي عن هذه القيم الخارجية إلى تعيينها إما كقيمة عظمى أو قيمة صغرى ومن المحتمل أن يؤدي إلى انحراف دقة النموذج المُكمَّم. ولمواجهة ذلك، يمكن تقسيم النموذج إلى كتل. يمكن تقسيم الأوزان إلى مجموعات من 64 أو 128. ثم يتم تحديد هذه المجموعات لحساب القيم الخارجية وتقليل مخاطر انخفاض الدقة. 6

أنواع التكميم

التكميم بعد التدريب (PTQ)

يحدث التكميم بعد التدريب عندما يتم تطبيق التكميم على نموذج موجود بالفعل. هذا يحول النموذج من تمثيل بالفاصلة العائمة إلى تمثيل باستخدام عدد صحيح ثابت أقل دقة دون الحاجة إلى إعادة التدريب. لا تتطلب هذه الطريقة بيانات بقدر ما يتطلبه التدريب الواعي بالتكميم، كما أنها أسرع بكثير. ومع ذلك، نظرًا لأن النموذج الموجود بالفعل يتم تحويله بشكل أساسي إلى حجم أصغر، يمكن أن يؤدي التكميم بعد التدريب إلى تدهور الأداء. من الأمثلة على وقت استخدام التكميم بعد التدريب (PTQ) هو عندما يكون لديك نموذج يعمل بالفعل وترغب في زيادة السرعة والكفاءة. يحدث PTQ بعد تدريب النموذج (أي نموذج موجود بالفعل)، لذلك لا يلزم وجود كمية كبيرة من بيانات التدريب لهذه العملية.7

التدريب الواعي بالتكميم (QAT)

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

أساليب التكميم الديناميكي مقابل أساليب التكميم الثابت

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

المخاطر والقيود

دقة أقل

عند تحويل الأوزان خلال عملية التكميم، قد يحدث فقدان في الدقة داخل القيم المُكمَّمة في نماذج التعلم الآلي المُكمَّمة. يجب أخذ حجم النموذج في الاعتبار، لأن تكميم النماذج اللغوية الكبيرة (LLMs) التي تحتوي على العديد من المعلمات والطبقات يمكن أن يؤدي إلى تراكم خطأ التكميم بشكل كبير. 8

التكلفة

يمكن أن يكون تدريب نموذج التعلم الآلي ذي النطاق الواسع مكلفًا للغاية، خاصةً مع التدريب الواعي بالتكميم (QAT). وهذا يجعل التكميم بعد التدريب (PTQ) الخيار الأفضل من حيث التكلفة. ومع ذلك، فإنه يحد من النموذج في بعض الجوانب، حيث إن QAT عادةً ما ينتج نموذجًا أكثر دقة. 9

الحواشي

¹ Dong Liu, Meng Jiang, Kaiser Pister, "LLMEasyQuant - An Easy to Use Toolkit for LLM Quantization", https://arxiv.org/pdf/2406.19657v2.

² Benoit Jacob, Skirmantas Kligys, Bo Chen, Menglong Zhu, Matthew Tang, Andrew Howard, Hartwig Adam, Dmitry Kalenichenko, "Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference", https://arxiv.org/pdf/1712.05877v1.

³ Ravi Kishore Kodali, Yatendra Prasad Upreti, Lakshmi Boppana, "A Quantization Approach for the Reduced Size of Large Language Models", https://ieeexplore.ieee.org/document/10499664.

⁴ Xiao Sun, Naigang Wang, Chia-yu Chen, Jia-min Ni, Ankur Agrawal, Xiaodong Cui, Swagath Venkataramani, Kaoutar El Maghraoui, Vijayalakshmi Srinivasan, "Ultra-Low Precision 4-bit Training of Deep Neural Networks", https://research.ibm.com/publications/ultra-low-precision-4-bit-training-of-deep-neural-networks

⁵ Tim Dettmers, Mike Lewis, Younes Belkada, Luke Zettlemoyer, "LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale", https://arxiv.org/pdf/2208.07339

⁶ Amir Gholami, Sehoon Kim, Zhen Dong, Zhewei Yao, Michael W. Mahoney, Kurt Keutzer, "A Survey of Quantization Methods for Efficient Neural Network Inference", https://arxiv.org/pdf/2103.13630

⁷ Hao Wu, Patrick Judd, Xiaojie Zhang, Mikhail Isaev, Paulius Micikevicius, "A Survey of Quantization Methods for Efficient Neural Network Inference", https://arxiv.org/pdf/2004.09602

⁸ Zhuocheng Gong, Jiahao Liu, Jingang Wang, Xunliang Cai, Dongyan Zhao, Rui Yan, "What Makes Quantization for Large Language Models Hard? An Empirical Study from the Lens of Perturbation", https://arxiv.org/pdf/2403.06408v1.

⁹ Sehoon Kim, Coleman Hooper, Amir Gholami, Zhen Dong, Xiuyu Li, Sheng Shen, Michael W. Mahoney, Kurt Keutzer, "SqueezeLLM: Dense-and-Sparse Quantization", https://arxiv.org/pdf/2306.07629v4.