Nella generazione automatica di programmi, una delle sfide più complesse riguarda l’efficienza: come far sì che un sistema trovi soluzioni significative con pochi tentativi, senza consumare risorse astronomiche? Sakana AI ha appena presentato una risposta molto interessante: un framework chiamato ShinkaEvolve, reso open source, che promette di superare i limiti degli approcci evolutivi tradizionali combinando la “creatività” dei modelli linguistici con tecniche ispirate all’evoluzione biologica.
Il termine “Shinka” in giapponese significa “evoluzione” e ben si adatta all’obiettivo del progetto: far sì che programmi (algoritmi, frammenti di codice, architetture) possano migliorare nel tempo grazie a mutazioni guidate e selezione. Ma ShinkaEvolve non è un “evolutore cieco”: è un sistema ibrido che sfrutta i Large Language Model (LLM) come motori di mutazione intelligentemente controllati e ottimizzati. Sakana AI lo descrive come un’alternativa molto più leggera degli approcci esistenti, che in genere richiedono migliaia di tentativi per arrivare a soluzioni utili — ShinkaEvolve invece riesce a ottenere buoni risultati in poche centinaia di prove.
L’architettura del sistema si basa su tre idee innovative che interagiscono in modo sinergico:
- Campionamento adattivo dei genitori: non sempre si selezionano per mutazione i programmi migliori, né sempre quelli “casuali”; il sistema cerca un bilanciamento tra esplorare nuove regioni del “campo delle soluzioni” e sfruttare le soluzioni già promettenti.
- Filtraggio della novità (novelty rejection sampling): prima di eseguire una variante generata, si valuta quanto essa sia “nuova” rispetto a quelle già esplorate. Se è troppo simile, viene scartata in anticipo, per evitare sprecare tempo su mutazioni banali. In parte, questa valutazione è supportata da embedding del codice e, in casi limite, da un giudizio fornito da un LLM.
- Selezione dinamica del modello LLM per attività (bandit-based prioritization): quando il sistema evolve, può usare diversi modelli di base (ad esempio vari LLM) per proporre mutazioni. La scelta di quale usare in ciascuna fase è guidata da una strategia “bandit” (cioè che esplora modelli meno usati quando promettenti, ma sfrutta quelli che producono progressi).
Queste componenti, integrate, permettono di spremere molto di più da ogni tentativo: ShinkaEvolve dichiara infatti una sample efficiency (cioè capacità di trovare soluzioni buone con pochi campioni) molto superiore rispetto ai sistemi precedenti.
Per capire quanto “funzioni sul campo” questo framework, Sakana AI e gli autori del lavoro hanno testato ShinkaEvolve su quattro domini diversi, ottenendo risultati notevoli:
- Circle Packing: questo è un problema classico di ottimizzazione geometrica — disporre cerchi in uno spazio limitato senza sovrapposizioni, massimizzando certi criteri. ShinkaEvolve è riuscito a trovare una nuova soluzione all’avanguardia usando solo ~150 valutazioni. Un risultato impressionante rispetto ai metodi che richiedevano migliaia di prove.
- Ragionamento matematico (AIME): nel contesto di problemi matematici complessi, il framework ha evoluto strutture di agenti (scaffold) in poco più di 70–80 generazioni, generando strategie “a tre fasi” che superano modelli esistenti e generalizzano bene su problemi nuovi o con LLM diversi.
- Programmazione competitiva (ALE-Bench): partendo da soluzioni già buone trovate da agenti, ShinkaEvolve ha migliorato le performance in diversi task, ottenendo incrementi medi e, in alcuni casi, spostando un algoritmo dal quinto al secondo posto se fosse stato competitore reale.
- Design di modelli LLM (Mixture-of-Experts, MoE): il framework è stato usato per evolvere una funzione di “loss” per l’equilibrio del carico tra esperti (expert balancing) nei modelli MoE, superando la loss globale usata da DeepSeek in poche decine di epoche. Questo dimostra che ShinkaEvolve non è solo generatore di frammenti, ma può intervenire nei meccanismi interni dell’allenamento dei modelli.
Tali risultati suggeriscono che il potenziale di ShinkaEvolve non si limita a compiti “accademici”, ma può avere applicazioni reali in ricerca, ingegneria e ottimizzazione.
Un aspetto fondamentale che distingue ShinkaEvolve è che è stato rilasciato open source (licenza Apache 2.0), con documentazione, strumenti e interfaccia per visualizzare le evoluzioni. Questo lo rende disponibile anche a ricercatori e sviluppatori che non dispongono di risorse infinite.