𝗥𝗲𝘀𝗼𝗹𝘃𝗶𝗻𝗴 𝗘𝗻𝗰𝗼𝗱𝗶𝗻𝗴 𝗘𝗿𝗿𝗼𝗿𝘀 𝗶𝗻 𝗟𝗼𝗰𝗮𝗹 𝗟𝗟𝗠 𝗕𝗲𝗻𝗰𝗵𝗺𝗮𝗿𝗸𝗶𝗻𝗴 -> Menyelesaikan Ralat Pengekodan dalam Penanda Aras LLM Tempatan
Saya ingin membina satu alat untuk menukar dan membuat penanda aras model LLM tempatan. Saya juga menambah banyak soalan penanda aras bahasa Korea untuk mengujinya dengan lebih baik.
Segalanya berjalan lancar sehinggalah saya menjalankan penanda aras tersebut. Saya terus-menerus melihat ralat ini:
UnicodeEncodeError: 'cp949' codec can't encode characters.
Saya menyangka masalahnya terletak pada kod Python saya. Saya cuba menukar tetapan pengekodan saya kepada utf-8. Saya cuba menyahkod (decoding) rentetan secara manual. Tiada apa yang berjaya selama berjam-jam.
Masalah sebenarnya bukan pada skrip saya. Pekerja (worker) LLM tempatan cuba menyimpan respons model menggunakan pengekodan lalai sistem. Pada Windows, ini selalunya adalah CP949. Apabila pekerja tersebut cuba menyimpan aksara Korea menggunakan CP949, ia gagal.
Penyelesaiannya mudah. Saya menukar pekerja tersebut untuk menggunakan utf-8 secara eksplisit semasa menyimpan fail.
Saya juga membina sistem automatik untuk menguruskan proses ini. Ia mengikut langkah-langkah berikut:
- Memuat turun model calon.
- Menjalankan penanda aras pada model terbaik semasa.
- Menguji semua model calon baharu.
- Memilih dan mengesyorkan model terbaik berdasarkan skor.
Melalui automasi ini, saya mendapati bahawa Gemma2:2b berprestasi jauh lebih baik daripada model EXAONE untuk tugasan bahasa Korea. Ia memberikan jawapan yang lebih semula jadi dan hasil kreatif yang lebih baik pada kelajuan yang sama.
Pengajaran yang diperoleh:
- Jangan sesekali bergantung pada pengekodan lalai sistem. Sentiasa gunakan utf-8 untuk I/O fail.
- Apabila menggunakan
json.dumpdengan teks Korea, gunakanensure_ascii=Falsedan nyatakan utf-8. - Jika anda melihat ralat pengekodan, periksa keseluruhan sistem dan logik penyimpanan fail, bukan sekadar kod anda sahaja.
- Gunakan automasi untuk mencari model terbaik bagi keperluan khusus anda.
Komuniti pembelajaran pilihan: https://t.me/GyaanSetuAi