𝗥𝗲𝘀𝗼𝗹𝘃𝗶𝗻𝗴 𝗘𝗻𝗰𝗼𝗱𝗶𝗻𝗴 𝗘𝗿𝗿𝗼𝗿𝘀 𝗶𝗻 𝗟𝗼𝗰𝗮𝗹 𝗟𝗟𝗠 𝗕𝗲𝗻𝗰𝗵𝗺𝗮𝗿𝗸𝗶𝗻𝗴
હું લોકલ 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 સ્પષ્ટ કરો.
- જો તમે એન્કોડિંગ ભૂલો જુઓ છો, તો માત્ર તમારા તાત્કાલિક કોડને જ નહીં, પરંતુ સમગ્ર સિસ્ટમ અને ફાઇલ સેવિંગ લોજિક તપાસો.
- તમારી ચોક્કસ જરૂરિયાતો માટે શ્રેષ્ઠ મોડલ્સ શોધવા માટે ઓટોમેશનનો ઉપયોગ કરો.
Optional learning community: https://t.me/GyaanSetuAi