𝗥𝗲𝘀𝗼𝗹𝘃𝗶𝗻𝗴 𝗘𝗻𝗰𝗼𝗱𝗶𝗻𝗴 𝗘𝗿𝗿𝗼𝗿𝘀 𝗶𝗻 𝗟𝗼𝗰𝗮𝗹 𝗟𝗟𝗠 𝗕𝗲𝗻𝗰𝗵𝗺𝗮𝗿𝗸𝗶𝗻𝗴
ನಾನು ಲೋಕಲ್ LLM ಮಾಡೆಲ್ಗಳನ್ನು ಬದಲಾಯಿಸಲು ಮತ್ತು ಬೆಂಚ್ಮಾರ್ಕ್ ಮಾಡಲು ಒಂದು ಸಾಧನವನ್ನು ನಿರ್ಮಿಸಲು ಬಯಸಿದ್ದೆ. ಅವುಗಳನ್ನು ಉತ್ತಮವಾಗಿ ಪರೀಕ್ಷಿಸಲು ನಾನು ಅನೇಕ ಕೊರಿಯನ್ ಬೆಂಚ್ಮಾರ್ಕ್ ಪ್ರಶ್ನೆಗಳನ್ನು ಸಹ ಸೇರಿಸಿದೆ.
ನಾನು ಬೆಂಚ್ಮಾರ್ಕ್ಗಳನ್ನು ರನ್ ಮಾಡುವವರೆಗೆ ಎಲ್ಲವೂ ಸರಿಯಾಗಿ ಕೆಲಸ ಮಾಡುತ್ತಿತ್ತು. ಆದರೆ ನನಗೆ ಈ ದೋಷ ಪದೇ ಪದೇ ಕಾಣಿಸುತ್ತಿತ್ತು:
UnicodeEncodeError: 'cp949' codec can't encode characters.
ಸಮಸ್ಯೆ ನನ್ನ Python ಕೋಡ್ನಲ್ಲಿದೆ ಎಂದು ನಾನು ಭಾವಿಸಿದೆ. ನಾನು ನನ್ನ ಎನ್ಕೋಡಿಂಗ್ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು utf-8 ಗೆ ಬದಲಾಯಿಸಲು ಪ್ರಯತ್ನಿಸಿದೆ. ಸ್ಟ್ರಿಂಗ್ಗಳನ್ನು ಮ್ಯಾನುಯಲ್ ಆಗಿ ಡಿಕೋಡ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಿದೆ. ಗಂಟೆಗಟ್ಟಲೆ ಪ್ರಯತ್ನಿಸಿದರೂ ಯಾವುದೂ ಕೆಲಸ ಮಾಡಲಿಲ್ಲ.
ನಿಜವಾದ ಸಮಸ್ಯೆ ನನ್ನ ಸ್ಕ್ರಿಪ್ಟ್ನಲ್ಲಿರಲಿಲ್ಲ. ಲೋಕಲ್ LLM ವರ್ಕರ್ (worker) ಸಿಸ್ಟಮ್ನ ಡಿಫಾಲ್ಟ್ ಎನ್ಕೋಡಿಂಗ್ ಬಳಸಿ ಮಾಡೆಲ್ ಪ್ರತಿಕ್ರಿಯೆಗಳನ್ನು ಉಳಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತಿತ್ತು. ವಿಂಡೋಸ್ನಲ್ಲಿ, ಇದು ಹೆಚ್ಚಾಗಿ CP949 ಆಗಿರುತ್ತದೆ. ವರ್ಕರ್ CP949 ಬಳಸಿ ಕೊರಿಯನ್ ಅಕ್ಷರಗಳನ್ನು ಉಳಿಸಲು ಪ್ರಯತ್ನಿಸಿದಾಗ, ಅದು ವಿಫಲವಾಯಿತು.
ಪರಿಹಾರ ಸರಳವಾಗಿತ್ತು. ಫೈಲ್ಗಳನ್ನು ಉಳಿಸುವಾಗ ವರ್ಕರ್ ಅನ್ನು ಸ್ಪಷ್ಟವಾಗಿ utf-8 ಬಳಸುವಂತೆ ನಾನು ಬದಲಾಯಿಸಿದೆ.
ಈ ಪ್ರಕ್ರಿಯೆಯನ್ನು ನಿರ್ವಹಿಸಲು ನಾನು ಒಂದು ಸ್ವಯಂಚಾಲಿತ ವ್ಯವಸ್ಥೆಯನ್ನು ಸಹ ನಿರ್ಮಿಸಿದೆ. ಇದು ಈ ಹಂತಗಳನ್ನು ಅನುಸರಿಸುತ್ತದೆ:
- ಅಭ್ಯರ್ಥಿ ಮಾಡೆಲ್ಗಳನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡುತ್ತದೆ.
- ಪ್ರಸ್ತುತ ಅತ್ಯುತ್ತಮ ಮಾಡೆಲ್ ಮೇಲೆ ಬೆಂಚ್ಮಾರ್ಕ್ಗಳನ್ನು ರನ್ ಮಾಡುತ್ತದೆ.
- ಎಲ್ಲಾ ಹೊಸ ಅಭ್ಯರ್ಥಿ ಮಾಡೆಲ್ಗಳನ್ನು ಪರೀಕ್ಷಿಸುತ್ತದೆ.
- ಸ್ಕೋರ್ಗಳ ಆಧಾರದ ಮೇಲೆ ಅತ್ಯುತ್ತಮ ಮಾಡೆಲ್ ಅನ್ನು ಆಯ್ಕೆ ಮಾಡುತ್ತದೆ ಮತ್ತು ಶಿಫಾರಸು ಮಾಡುತ್ತದೆ.
ಈ ಸ್ವಯಂಚಾಲಿತಗೊಳಿಸುವಿಕೆಯ ಮೂಲಕ, ಕೊರಿಯನ್ ಭಾಷೆಯ ಕಾರ್ಯಗಳಿಗಾಗಿ Gemma2:2b ಮಾಡೆಲ್, EXAONE ಮಾಡೆಲ್ನಿಗಿಂತ ಉತ್ತಮವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂದು ನಾನು ಕಂಡುಕೊಂಡೆ. ಇದು ಅಷ್ಟೇ ವೇಗದಲ್ಲಿ ಹೆಚ್ಚು ನೈಸರ್ಗಿಕವಾದ ಉತ್ತರಗಳನ್ನು ಮತ್ತು ಉತ್ತಮ ಸೃಜನಾತ್ಮಕ ಫಲಿತಾಂಶಗಳನ್ನು ನೀಡುತ್ತದೆ.
ಕಲಿತ ಪಾಠಗಳು:
- ಎಂದಿಗೂ ಡಿಫಾಲ್ಟ್ ಸಿಸ್ಟಮ್ ಎನ್ಕೋಡಿಂಗ್ ಮೇಲೆ ಅವಲಂಬಿತರಾಗಬೇಡಿ. ಫೈಲ್ I/O ಗಾಗಿ ಯಾವಾಗಲೂ utf-8 ಬಳಸಿ.
- ಕೊರಿಯನ್ ಪಠ್ಯದೊಂದಿಗೆ
json.dumpಬಳಸುವಾಗ,ensure_ascii=Falseಬಳಸಿ ಮತ್ತು utf-8 ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿ. - ನೀವು ಎನ್ಕೋಡಿಂಗ್ ದೋಷಗಳನ್ನು ನೋಡಿದರೆ, ಕೇವಲ ನಿಮ್ಮ ಕೋಡ್ ಅನ್ನು ಮಾತ್ರವಲ್ಲದೆ, ಇಡೀ ಸಿಸ್ಟಮ್ ಮತ್ತು ಫೈಲ್ ಉಳಿಸುವ ತರ್ಕವನ್ನು (logic) ಪರಿಶೀಲಿಸಿ.
- ನಿಮ್ಮ ನಿರ್ದಿಷ್ಟ ಅಗತ್ಯಗಳಿಗೆ ಉತ್ತಮ ಮಾಡೆಲ್ಗಳನ್ನು ಕಂಡುಹಿಡಿಯಲು ಸ್ವಯಂಚಾಲಿತ ವ್ಯವಸ್ಥೆಯನ್ನು ಬಳಸಿ.
Optional learning community: https://t.me/GyaanSetuAi