Andrej Karpathy di OpenAI, famoso per i suoi contributi nel campo del deep learning, ha speso il suo weekend in modo sorprendente. Mentre molti pensavano che stesse lavorando a GPT-5, in realtà ha trascorso del tempo testando le capacità di Llama 2, un modello open source. La sua ricerca sull’esecuzione di LLM su un singolo computer ha portato a un progetto interessante: creare una versione semplificata di Llama 2 utilizzando il linguaggio di programmazione C.
Karpathy ha preso nanoGPT e l’ha adattato per implementare l’architettura Llama 2 anziché GPT-2. Ha chiamato questo progetto “Llama2.c” e ha scritto il motore di inferenza C in “run.c”. Il repository GitHub di questo progetto ha già ottenuto 2.2K stelle!
Il successo di Karpathy risiede nella sua abilità di raggiungere tassi di inferenza altamente interattivi, anche con modelli di dimensioni ragionevoli contenenti pochi milioni di parametri. Ha addestrato un modello di 15 milioni di parametri utilizzando il set di dati TinyStories e ha dimostrato che, sul suo MacBook Air M1, il modello Llama 2 con circa 15 milioni di parametri può dedurre circa 100 token al secondo in fp32, tutto attraverso il codice C da lui sviluppato. Questi risultati sono sorprendenti perché dimostrano la possibilità di eseguire modelli complessi su dispositivi con risorse limitate utilizzando un’implementazione semplice.
Karpathy è stato ispirato dal progetto di Georgi Gerganov, “llama.cpp”, che consisteva nell’utilizzo della prima versione di LLaMA su un MacBook con C e C++. Il suo approccio prevede l’addestramento da zero dell’architettura Llama 2 LLM utilizzando PyTorch e il salvataggio dei pesi del modello in un file binario non elaborato. Quindi, ha scritto un file C di 500 righe chiamato “run.c”, che carica il modello salvato ed esegue inferenze utilizzando calcoli in virgola mobile a precisione singola (fp32). Questo approccio minimalista permette un footprint di memoria ridotto e non richiede librerie esterne, consentendo un’efficiente esecuzione su un singolo laptop M1 senza l’uso di GPU.
Karpathy ha anche esplorato diverse tecniche per migliorare le prestazioni del codice C, tra cui l’uso di vari flag di compilazione come -O3, -Ofast, -march=native e altro. Queste ottimizzazioni consentono agli utenti di ottenere inferenze ancora più veloci sui loro sistemi specifici.
Se volete provare il modello baby Llama 2 sul vostro dispositivo, potete scaricare il checkpoint del modello pre-addestrato dal repository di Karpathy. Il codice fornito vi permetterà di compilare ed eseguire il codice C sul vostro sistema, mostrandovi la magia dell’esecuzione di un modello di deep learning in un ambiente minimalista.
È importante notare che questo progetto è solo un esperimento del fine settimana e non è destinato alla distribuzione a livello di produzione. L’obiettivo principale di Karpathy era dimostrare la fattibilità dell’esecuzione di modelli Llama 2 su dispositivi a bassa potenza utilizzando codice C puro, dimostrando che il linguaggio C, che per molto tempo non è stato considerato utile per l’apprendimento automatico, può essere altrettanto valido.
Sembra che l’avvento di Llama 2 sia stato accompagnato da un’interessante partnership con Qualcomm, un produttore di chip, e ciò permetterà di far girare Llama 2 su hardware locale. Inoltre, Apple ha rilasciato l’architettura Transformers ottimizzata per Apple Silicon, dimostrando che molto è possibile anche su dispositivi più piccoli. Chissà, potremmo vedere una serie di piccoli LLM basati su Llama 2 grazie alla partnership con Meta e Microsoft.
Insomma, il futuro sembra pieno di possibilità interessanti nel campo del deep learning e siamo entusiasti di vedere cosa ci riserverà il prossimo progetto di Karpathy!”
Nota: Le informazioni riportate nel post sono state prese dal testo originale, ma è possibile che alcuni dettagli siano stati semplificati o riformulati per rendere il testo più fluido.