లోకల్ LLM బెంచ్మార్కింగ్లో ఎన్కోడింగ్ లోపాలను పరిష్కరించడం
నేను లోకల్ LLM మోడళ్లను మార్చడానికి మరియు బెంచ్మార్క్ చేయడానికి ఒక సాధనాన్ని తయారు చేయాలనుకున్నాను. వాటిని మరింత మెరుగ్గా పరీక్షించడానికి నేను అనేక కొరియన్ బెంచ్మార్క్ ప్రశ్నలను కూడా జోడించాను.
నేను బెంచ్మార్క్లను రన్ చేసే వరకు అంతా బాగానే సాగింది. కానీ నాకు ఈ ఎర్రర్ పదేపదే కనిపిస్తూనే ఉంది:
UnicodeEncodeError: 'cp949' codec can't encode characters.
సమస్య నా పైథాన్ కోడ్లోనే ఉందని నేను అనుకున్నాను. నా ఎన్కోడింగ్ సెట్టింగ్లను utf-8కి మార్చడానికి ప్రయత్నించాను. స్ట్రింగ్లను మాన్యువల్గా డీకోడ్ చేయడానికి ప్రయత్నించాను. గంటల తరబడి ఏదీ పని చేయలేదు.
అసలు సమస్య నా స్క్రిప్ట్లో లేదు. లోకల్ LLM వర్కర్, సిస్టమ్ డిఫాల్ట్ ఎన్కోడింగ్ను ఉపయోగించి మోడల్ స్పందనలను సేవ్ చేయడానికి ప్రయత్నిస్తోంది. విండోస్లో, ఇది తరచుగా CP949 గా ఉంటుంది. వర్కర్ CP949ని ఉపయోగించి కొరియన్ అక్షరాలను సేవ్ చేయడానికి ప్రయత్నించినప్పుడు, అది విఫలమైంది.
పరిష్కారం చాలా సరళమైనది. ఫైళ్లను సేవ్ చేసేటప్పుడు స్పష్టంగా utf-8ని ఉపయోగించేలా నేను వర్కర్ను మార్చాను.
ఈ ప్రక్రియను నిర్వహించడానికి నేను ఒక ఆటోమేటెడ్ సిస్టమ్ను కూడా రూపొందించాను. ఇది ఈ క్రింది దశలను అనుసరిస్తుంది:
- అభ్యర్థి (candidate) మోడళ్లను డౌన్లోడ్ చేస్తుంది.
- ప్రస్తుతం ఉన్న ఉత్తమ మోడల్పై బెంచ్మార్క్లను రన్ చేస్తుంది.
- అన్ని కొత్త అభ్యర్థి మోడళ్లను పరీక్షిస్తుంది.
- స్కోర్ల ఆధారంగా ఉత్తమ మోడల్ను ఎంపిక చేసి సిఫార్సు చేస్తుంది.
ఈ ఆటోమేషన్ ద్వారా, కొరియన్ భాషా పనుల కోసం EXAONE మోడల్ కంటే Gemma2:2b చాలా మెరుగ్గా పనిచేస్తుందని నేను కనుగొన్నాను. ఇది అదే వేగంతో మరింత సహజమైన సమాధానాలను మరియు మెరుగైన సృజనాత్మక ఫలితాలను అందిస్తుంది.
నేర్చుకున్న పాఠాలు:
- ఎప్పుడూ డిఫాల్ట్ సిస్టమ్ ఎన్కోడింగ్పై ఆధారపడకండి. ఫైల్ I/O కోసం ఎల్లప్పుడూ utf-8ని ఉపయోగించండి.
- కొరియన్ టెక్స్ట్తో
json.dumpఉపయోగిస్తున్నప్పుడు,ensure_ascii=Falseని ఉపయోగించి utf-8ని పేర్కొనండి. - మీకు ఎన్కోడింగ్ లోపాలు కనిపిస్తే, కేవలం మీ కోడ్ను మాత్రమే కాకుండా, మొత్తం సిస్టమ్ మరియు ఫైల్ సేవింగ్ లాజిక్ను తనిఖీ చేయండి.
- మీ నిర్దిష్ట అవసరాలకు తగిన ఉత్తమ మోడళ్లను కనుగొనడానికి ఆటోమేషన్ను ఉపయోగించండి.
ఐచ్ఛిక అభ్యాస సమూహం: https://t.me/GyaanSetuAi