Tadi malam saya mengajari nanochat d32 cara menghitung 'r' dalam stroberi (atau variasi serupa). Saya pikir ini akan menjadi contoh yang bagus/menyenangkan tentang cara menambahkan kemampuan ke nanochat dan saya menulis panduan lengkap di sini: Ini dilakukan melalui tugas sintetis baru 'SpellingBee' yang menghasilkan contoh pengguna yang meminta masalah semacam ini, dan solusi ideal dari asisten. Kami kemudian menyempurnakan ini untuk memberikan kemampuan LLM, atau melatih lebih lanjut dengan RL untuk membuatnya lebih kuat. Ada banyak detail yang harus diperbaiki, terutama pada ukuran model yang lebih kecil dan panduan melangkahnya. Sebagai gambaran singkat: - Anda harus memastikan keragaman dalam perintah/kueri pengguna - Untuk model kecil seperti nanochat khususnya, Anda harus benar-benar berhati-hati dengan detail tokenisasi untuk memudahkan tugas LLM. Secara khusus, Anda harus berhati-hati dengan spasi kosong, dan kemudian Anda harus menyebarkan perhitungan penalaran di banyak token solusi parsial: pertama kita menstandarkan kata menjadi tanda kutip, kemudian kita mengejanya (untuk memecah token), kemudian kita mengulangi dan menyimpan penghitung eksplisit, dll. - Saya mendorong model untuk memecahkan model dengan dua cara terpisah: cara manual (aritmatika mental di kepalanya) dan juga melalui penggunaan alat penerjemah Python yang dapat diakses oleh nanochat. Ini sedikit "asap dan cermin" karena setiap solusi atm "bersih", tanpa kesalahan. Seseorang dapat menyesuaikan tugas untuk mensimulasikan kesalahan dan mendemonstrasikan pemulihan dengan contoh, atau menjalankan RL. Kemungkinan besar, kombinasi keduanya bekerja paling baik, di mana yang pertama bertindak sebagai pendahulu untuk RL dan memberinya hal-hal untuk dikerjakan. Jika nanochat adalah model yang jauh lebih besar, Anda akan mengharapkan atau berharap kemampuan ini lebih mudah "muncul" di beberapa titik. Tetapi karena nanochat d32 "otak" adalah ukuran ~lebah madu, jika kita ingin menghitung r dalam stroberi, kita harus melakukannya dengan merepresentasikannya secara berlebihan dalam data, untuk mendorong model mempelajarinya lebih awal. Tapi itu berhasil! :)