การแก้ไขข้อผิดพลาดด้านการเข้ารหัส (Encoding Errors) ในการทำ Benchmark สำหรับ Local LLM

ผมต้องการสร้างเครื่องมือสำหรับสลับและทำ Benchmark โมเดล Local LLM นอกจากนี้ผมยังได้เพิ่มคำถามสำหรับ Benchmark ภาษาเกาหลีจำนวนมากเพื่อให้ทดสอบโมเดลได้ดียิ่งขึ้น

ทุกอย่างทำงานได้ปกติจนกระทั่งผมเริ่มรัน Benchmark แล้วผมก็เจอข้อผิดพลาดนี้ซ้ำๆ: UnicodeEncodeError: 'cp949' codec can't encode characters.

ผมคิดว่าปัญหาอยู่ที่โค้ด Python ของผม ผมพยายามเปลี่ยนการตั้งค่า encoding เป็น utf-8 และพยายามถอดรหัส (decode) สตริงด้วยตัวเอง แต่ก็ไม่มีอะไรได้ผลเลยเป็นเวลาหลายชั่วโมง

ปัญหาที่แท้จริงไม่ได้อยู่ที่สคริปต์ของผม แต่เป็นเพราะตัว Local LLM worker พยายามบันทึกคำตอบของโมเดลโดยใช้การเข้ารหัสเริ่มต้นของระบบ (system default encoding) ซึ่งใน Windows มักจะเป็น CP949 เมื่อ worker พยายามบันทึกตัวอักษรเกาหลีโดยใช้ CP949 มันจึงล้มเหลว

วิธีแก้ไขนั้นง่ายมาก ผมแค่เปลี่ยนให้ worker ใช้ utf-8 อย่างชัดเจน (explicitly) เมื่อทำการบันทึกไฟล์

นอกจากนี้ผมยังได้สร้างระบบอัตโนมัติเพื่อจัดการกระบวนการนี้ โดยมีขั้นตอนดังนี้:

จากการใช้ระบบอัตโนมัตินี้ ผมพบว่า Gemma2:2b ทำงานได้ดีกว่าโมเดล EXAONE มากสำหรับงานภาษาเกาหลี โดยให้คำตอบที่เป็นธรรมชาติกว่าและให้ผลลัพธ์เชิงสร้างสรรค์ที่ดีกว่าในความเร็วที่ใกล้เคียงกัน

บทเรียนที่ได้รับ:

แหล่งที่มา: https://dev.to/junhee916/resolving-cp949-errors-in-local-llm-benchmarking-and-building-an-automatic-model-recommendation-128g

ชุมชนการเรียนรู้เพิ่มเติม (Optional): https://t.me/GyaanSetuAi