حل مشكلات الترميز في اختبارات أداء نماذج LLM المحلية
أردت بناء أداة للتبديل بين نماذج LLM المحلية واختبار أدائها. كما أضفت العديد من أسئلة الاختبار الكورية لاختبارها بشكل أفضل.
سار كل شيء على ما يرام حتى بدأت بتشغيل اختبارات الأداء. استمر ظهور هذا الخطأ:
UnicodeEncodeError: 'cp949' codec can't encode characters.
اعتقدت أن المشكلة تكمن في كود Python الخاص بي. حاولت تغيير إعدادات الترميز إلى utf-8 وحاولت فك ترميز النصوص يدويًا، لكن دون جدوى لساعات.
لم تكن المشكلة في السكربت الخاص بي، بل كانت في "عامل" (worker) الـ LLM المحلي الذي كان يحاول حفظ استجابات النموذج باستخدام ترميز النظام الافتراضي. في نظام Windows، غالبًا ما يكون هذا الترميز هو CP949. وعندما حاول العامل حفظ أحرف كورية باستخدام CP949، فشل الأمر.
كان الحل بسيطًا؛ قمت بتغيير العامل ليستخدم utf-8 بشكل صريح عند حفظ الملفات.
كما قمت ببناء نظام مؤتمت لإدارة هذه العملية، وهو يتبع الخطوات التالية:
- تحميل النماذج المرشحة.
- تشغيل اختبارات الأداء على أفضل نموذج حالي.
- اختبار جميع النماذج المرشحة الجديدة.
- اختيار وترشيح أفضل نموذج بناءً على النتائج.
من خلال هذه الأتمتة، وجدت أن Gemma2:2b يتفوق بكثير على نموذج EXAONE في مهام اللغة الكورية، حيث يقدم إجابات أكثر طبيعية ونتائج إبداعية أفضل وبسرعة مماثلة.
الدروس المستفادة:
- لا تعتمد أبدًا على ترميز النظام الافتراضي. استخدم دائمًا
utf-8لعمليات الإدخال والإخراج للملفات (file I/O). - عند استخدام
json.dumpمع نصوص كورية، استخدمensure_ascii=Falseوحددutf-8. - إذا واجهت أخطاء في الترميز، فافحص النظام بالكامل ومنطق حفظ الملفات، وليس الكود المباشر الذي تكتبه فقط.
- استخدم الأتمتة للعثور على أفضل النماذج لاحتياجاتك الخاصة.
مجتمع تعليمي اختياري: https://t.me/GyaanSetuAi