𝗥𝗲𝘀𝗼𝗹𝘃𝗶𝗻𝗴 𝗘𝗻𝗰𝗼𝗱𝗶𝗻𝗴 𝗘𝗿𝗿𝗼𝗿𝘀 𝗶𝗻 𝗟𝗼𝗰𝗮𝗹 𝗟𝗟𝗠 𝗕𝗲𝗻𝗰𝗵𝗺𝗮𝗿𝗸𝗶𝗻𝗴
मैं लोकल LLM मॉडल्स को स्विच करने और उनका बेंचमार्किंग करने के लिए एक टूल बनाना चाहता था। मैंने उन्हें बेहतर तरीके से टेस्ट करने के लिए कई कोरियाई बेंचमार्क प्रश्न भी जोड़े।
बेंचमार्क चलाने तक सब कुछ ठीक चल रहा था। लेकिन मुझे बार-बार यह एरर दिखने लगा:
UnicodeEncodeError: 'cp949' codec can't encode characters.
मुझे लगा कि समस्या मेरे Python कोड में है। मैंने अपनी एनकोडिंग सेटिंग्स को utf-8 में बदलने की कोशिश की। मैंने स्ट्रिंग्स को मैन्युअल रूप से डिकोड करने की कोशिश की। घंटों तक कुछ भी काम नहीं आया।
असली समस्या मेरा स्क्रिप्ट नहीं थी। लोकल LLM वर्कर सिस्टम की डिफॉल्ट एनकोडिंग का उपयोग करके मॉडल रिस्पॉन्स को सेव करने की कोशिश कर रहा था। Windows पर, यह अक्सर CP949 होता है। जब वर्कर ने CP949 का उपयोग करके कोरियाई कैरेक्टर्स को सेव करने की कोशिश की, तो वह विफल हो गया।
समाधान सरल था। मैंने फाइलों को सेव करते समय वर्कर को स्पष्ट रूप से utf-8 का उपयोग करने के लिए बदल दिया।
मैंने इस प्रक्रिया को मैनेज करने के लिए एक ऑटोमेटेड सिस्टम भी बनाया। यह इन चरणों का पालन करता है:
- कैंडिडेट मॉडल्स डाउनलोड करता है।
- वर्तमान सबसे अच्छे मॉडल पर बेंचमार्क चलाता है।
- सभी नए कैंडिडेट मॉडल्स का परीक्षण करता है।
- स्कोर के आधार पर सबसे अच्छे मॉडल का चयन और सिफारिश करता है।
इस ऑटोमेशन के माध्यम से, मैंने पाया कि कोरियाई भाषा के कार्यों के लिए Gemma2:2b, EXAONE मॉडल की तुलना में बहुत बेहतर प्रदर्शन करता है। यह समान गति पर अधिक स्वाभाविक उत्तर और बेहतर रचनात्मक परिणाम प्रदान करता है।
सीखे गए सबक:
- कभी भी डिफॉल्ट सिस्टम एनकोडिंग पर भरोसा न करें। फाइल I/O के लिए हमेशा utf-8 का उपयोग करें।
- कोरियाई टेक्स्ट के साथ
json.dumpका उपयोग करते समय,ensure_ascii=Falseका उपयोग करें और utf-8 निर्दिष्ट करें। - यदि आपको एनकोडिंग एरर दिखते हैं, तो केवल अपने तत्काल कोड की ही नहीं, बल्कि पूरे सिस्टम और फाइल सेविंग लॉजिक की जांच करें।
- अपनी विशिष्ट आवश्यकताओं के लिए सबसे अच्छे मॉडल खोजने के लिए ऑटोमेशन का उपयोग करें।
वैकल्पिक लर्निंग कम्युनिटी: https://t.me/GyaanSetuAi