Kutatua Makosa ya Encoding katika Upimaji wa LLM wa Ndani
Nilitaka kutengeneza zana ya kubadilisha na kupima (benchmark) modeli za LLM za ndani. Pia niliongeza maswali mengi ya upimaji ya Kikorea ili kuzijaribu vizuri zaidi.
Kila kitu kilikuwa kinafanya kazi vizuri hadi nilipofanya upimaji. Nilikuwa nikiendelea kuona kosa hili: UnicodeEncodeError: 'cp949' codec can't encode characters.
Nilidhani tatizo lilikuwa kwenye kodi yangu ya Python. Nilijaribu kubadilisha mipangilio yangu ya encoding kuwa utf-8. Nilijaribu kutafsiri (decode) maandishi (strings) kwa mkono. Hakuna kilichofanya kazi kwa saa kadhaa.
Tatizo halisi halikuwa kwenye skripti yangu. Local LLM worker ilikuwa ikijaribu kuhifadhi majibu ya modeli kwa kutumia encoding ya mfumo (system default encoding). Kwenye Windows, hii mara nyingi huwa ni CP949. Wakati worker ilipojaribu kuhifadhi herufi za Kikorea kwa kutumia CP949, ilishindwa.
Suluhisho lilikuwa rahisi. Nilibadilisha worker itumie utf-8 waziwazi wakati wa kuhifadhi faili.
Pia nilitengeneza mfumo wa kiotomatiki wa kusimamia mchakato huu. Unafuata hatua hizi:
- Inapakua modeli zinazofuzu (candidate models).
- Inafanya upimaji kwenye modeli bora ya sasa.
- Inajaribu modeli zote mpya zinazofuzu.
- Inachagua na kupendekeza modeli bora kulingana na alama.
Kupitia otomatiki hii, niligundua kuwa Gemma2:2b inafanya kazi vizuri zaidi kuliko modeli ya EXAONE kwa kazi za lugha ya Kikorea. Inatoa majibu ya asili zaidi na matokeo bora ya ubunifu kwa kasi inayofanana.
Mafunzo niliyopata:
- Usitegemee encoding ya mfumo kwa asili. Tumia utf-8 kila wakati kwa I/O ya faili.
- Unapotumia json.dump na maandishi ya Kikorea, tumia ensure_ascii=False na uainishe utf-8.
- Ukiona makosa ya encoding, kagua mfumo mzima na mantiki ya kuhifadhi faili, si kodi yako ya karibu tu.
- Tumia otomatiki ili kupata modeli bora kwa mahitaji yako maalum.
Jumuia ya hiari ya kujifunza: https://t.me/GyaanSetuAi