Un utente di nome Joey (e/λ) ha condiviso su un social network un video in cui esegue il file “llama.c” su un Samsung Galaxy Watch 4. Il progetto, chiamato Baby Llama, è stato sviluppato da Andrej Karpathy di OpenAI durante il fine settimana. Questo progetto mirava a far funzionare Llama 2 su dispositivi edge, ispirato al lavoro di Georgi Gerganov e al suo “llama.cpp”, che portava LLaMA su un MacBook usando C e C++.
Karpathy ha iniziato addestrando l’architettura Llama 2 LLM da zero con PyTorch, salvando poi i pesi in un file binario. La parte cruciale è stata la scrittura di un file C di 500 righe, “run.c”, per caricare il modello e eseguire inferenze con calcoli a precisione singola in virgola mobile (fp32), riducendo l’utilizzo della memoria e senza dipendere da librerie esterne. Questo permette l’esecuzione su un laptop M1 senza GPU.
Ha anche esplorato diverse tecniche di ottimizzazione del codice C, come l’uso di flag di compilazione come -O3, -Ofast e -march=native, per migliorare vettorizzazione, srotolamento del loop e altre ottimizzazioni specifiche dell’hardware. Questo ha permesso inferenze più veloci sui sistemi degli utenti.
Per testare Baby Llama 2 sul tuo dispositivo, è possibile scaricare il checkpoint del modello da Karpathy. Il codice consente di compilare ed eseguire il codice C, mostrando l’esecuzione di un modello di deep learning in un ambiente minimalista.
Karpathy sottolinea che il progetto è un esperimento e non per uso in produzione. L’obiettivo era dimostrare che è possibile eseguire i modelli Llama 2 su dispositivi a basso consumo con codice C puro, una novità nell’apprendimento automatico, tradizionalmente non associato all’uso di GPU.