llama.ttf è un font file che ha una particolarità: è anche un LLM (Large Language Model). Un po' come GPT di OpenAI o Llama di Meta. Nel contempo opera come motore di inferenza per il modello stesso. Alla base del progetto troviamo HarfBuzz, una libreria per il supporto al text sharping scritta in linguaggio C++. Il text sharping è in pratica il processo con il quale i testi Unicode vengono convertiti in glyphs, come per esempio quelli offerti da un servizio noto ai web designer quale Font Awesome.
Come funziona llama.ttf
Anche se poco nota, HarfBuzz è una soluzione ampiamente utilizzata in applicazioni come i Web browser. Gli sviluppatori di Chrome e Firefox la impiegano ad esempio perché dotata di uno shaper basato su WebAssembly che consente di utilizzare codice arbitrario per dare forma ai testi. Tale codice può essere anche un motore di inferenza per un modello generativo, basta che i parametri utilizzati per il training siano integrati in esso.
A livello pratico ciò significa che il font può essere sfruttato per l'esecuzione di un LLM. Lo si può quindi utilizzare per la generazione automatica del testo in qualsiasi applicazione basata su HarfBuzz abilitata per WebAssembly.
llama.ttf può essere utilizzato anche in associazione ad un editor di immagini (GIMP), testo (gedit), un client e-mail o qualunque altra applicazione senza dover aspettare che la casa madre si decida ad includere in esse funzionalità simili all'assistente Copilot.
Uno dei maggiori vantaggi di questo progetto riguarda il fatto che tutto funziona completamente in locale. Il modello llama.ttf non viene animato da piattaforme residenti nel Cloud e questo offre dei benefici anche dal punto di vista della privacy.
Come utilizzare l'LLM
Per utilizzare llama.ttf basta scaricare il file che pesa circa 60 MB in quanto è basato sul modello TinyStories da 15 milioni di parametri. Lo si può sfruttare come qualsiasi altro font ma è necessario operare in un ambiente in cui HarfBuzz è stato compilato con il supporto Wasm.
Il modo più semplice per testarlo è quello di effettuare il building di HarfBuzz con:
-Dwasm=enabled
e poi di lanciare il building di wasm-micro-runtime
con
-DWAMR_BUILD_REF_TYPES=1
Per poi aggiungere le librerie condivise libharfbuzz.so.0.60811.0
e libiwasm.so
alla variabile d'ambiente LD_PRELOAD
. Non è necessaria invece la ricompilazione delle applicazioni.