Dün gece nanochat d32'ye çilekte (veya benzer varyasyonlarda) 'r' saymayı öğrettim. Bunun nanochat'e nasıl yetenek ekleneceğine dair iyi/eğlenceli bir örnek olacağını düşündüm ve burada tam bir rehber yazdım: Bu, bu tür bir sorunu soran bir kullanıcının örneklerini ve bir asistandan ideal bir çözümü üreten yeni bir sentetik görev olan 'SpellingBee' aracılığıyla yapılır. Daha sonra LLM'ye yetenek kazandırmak için bunlar üzerinde orta eğitim/SFT ince ayarı yapıyoruz veya daha sağlam hale getirmek için RL ile daha fazla eğitim alıyoruz. Özellikle daha küçük model boyutlarında doğru yapılması gereken birçok ayrıntı vardır ve kılavuz bunların üzerinden geçer. Kısa bir genel bakış olarak: - Kullanıcı istemlerinde/sorgularında çeşitliliği sağlamalısınız - Özellikle nanochat gibi küçük modellerde, bir LLM'nin işini kolaylaştırmak için tokenizasyon ayrıntılarına gerçekten dikkat etmeniz gerekir. Özellikle, boşluklara dikkat etmelisiniz ve ardından akıl yürütme hesaplamasını birçok kısmi çözüm belirtecine yaymanız gerekir: önce kelimeyi tırnak işaretleri halinde standartlaştırırız, sonra heceleriz (belirteçleri bölmek için), sonra yineleriz ve açık bir sayaç tutarız, vb. - Modeli, modeli iki ayrı şekilde çözmeye teşvik ediyorum: manuel bir yol (kafasında zihinsel aritmetik) ve ayrıca nanochat'in erişebildiği Python yorumlayıcısının araç kullanımı yoluyla. Bu biraz "duman ve aynalar" çünkü her çözüm atm hatasız "temiz". Hataların benzetimini yapmak ve kurtarmaları örnekle göstermek için görev ayarlanabilir veya RL çalıştırılabilir. Büyük olasılıkla, her ikisinin bir kombinasyonu en iyi sonucu verir, burada birincisi RL için ön olarak hareket eder ve ona üzerinde çalışacak şeyler verir. Nanochat çok daha büyük bir model olsaydı, bu yeteneğin bir noktada daha kolay "ortaya çıkmasını" bekler veya umardınız. Ancak nanochat d32 "beyni" bir ~bal arısı büyüklüğünde olduğu için, çilekteki r'leri saymasını istiyorsak, modeli daha erken öğrenmeye teşvik etmek için bunu verilerde aşırı temsil ederek yapmalıyız. Ama işe yarıyor! :)