Vai al contenuto
AI.info

The Pulse

Hugging Face porta i modelli quantizzati di llama.cpp su Transformers

Hugging Face ha aggiunto il supporto per eseguire i modelli quantizzati di llama.cpp tramite Transformers, consentendo agli sviluppatori di caricare checkpoint GGUF con le consuete API di Python e PyTorch.

Hugging Face porta i modelli quantizzati di llama.cpp su Transformers

AI.info Team · Scritto con l’IA · verificato ·

Hugging Face ha aggiunto il supporto per eseguire i modelli quantizzati di llama.cpp direttamente tramite Transformers, consentendo agli sviluppatori di caricare checkpoint GGUF con le consuete API di Python e PyTorch, senza passare a un runtime separato. L’azienda ha pubblicato l’aggiornamento il 22 settembre 2026, concentrandosi inizialmente sull’inferenza locale su Apple Silicon e sull’architettura Qwen3.5.

La novità collega due componenti ampiamente utilizzati dell’ecosistema dei modelli aperti. GGUF è il formato di modello sviluppato per llama.cpp, mentre Transformers è la principale libreria di Hugging Face per definire, caricare e valutare modelli. Secondo Hugging Face, il nuovo percorso riutilizza i kernel ggml attraverso la sua libreria kernels e riduce l’overhead nel metodo generate.

«Questo è il punto a cui siamo arrivati. E non mentirò: sembra quasi una magia 🧙‍♀️
Qwen3.6 27B in esecuzione all’interno dell’agente di coding Pi tramite Llama.cpp sul MacBook Pro
Per compiti non banali sulle basi di codice di Hugging Face, sembra di essere davvero molto, molto vicini a raggiungere l’ultimo Opus in Claude…»

Julien Chaumond, CTO di Hugging Face

Qwen3.5 trova più facilmente spazio sulle macchine locali

GGUF raccoglie in un unico file i pesi e i metadati del modello, comprese le informazioni sul tokenizer e, facoltativamente, un template per la chat. I suoi livelli di quantizzazione riducono l’uso di memoria memorizzando i pesi a una precisione inferiore: varianti come Q4_K_M utilizzano prevalentemente pesi a quattro bit, mantenendo una precisione maggiore per alcuni tensori selezionati.

Hugging Face usa il checkpoint GGUF Qwen3.5-4B di Unsloth per mostrare l’effetto. Il file BF16 non quantizzato è indicato come pari a 8,42 GB, contro i 3,53 GB di Q6_K, i 3,14 GB di Q5_K_M e i 2,74 GB di Q4_K_M. L’azienda consiglia di partire da Q4_K_M e passare a varianti più grandi quando è disponibile più memoria, avvertendo però che l’impatto sulla qualità dipende dal modello e dal compito.

Un argomento GGUF, poi codice Transformers standard

Il nuovo percorso di caricamento riduce al minimo la configurazione specifica per GGUF. Gli sviluppatori passano un repository Hub e un nome di file a from_pretrained, usando gguf_file sia per il tokenizer sia per il modello. Il resto del flusso di lavoro usa chiamate Transformers standard come apply_chat_template e generate.

L’esempio di Hugging Face carica unsloth/Qwen3.5-4B-GGUF con Qwen3.5-4B-Q4_K_M.gguf. Quando i pesi quantizzati rimangono in formato compatto sul backend Metal di Apple, Transformers carica automaticamente kernel ggml e Metal compatibili e usa ggml-org/ggml-attn per l’attenzione. Se non è possibile recuperare il kernel di attenzione, il modello ripiega su sdpa con un avviso. Separatamente, se non è disponibile un kernel di quantizzazione compatibile, il sistema di caricamento dequantizza il modello, che così utilizza più memoria.

Lo stesso checkpoint può essere eseguito anche tramite transformers serve, che espone un’API compatibile con OpenAI. Il comando accetta un identificativo del modello nella forma <model_id>:<filename>.gguf, consentendo di selezionare un file specifico da un repository con più varianti di quantizzazione.

Hugging Face si misura con llama.cpp

Hugging Face confronta la propria implementazione con llama.cpp su tre checkpoint GGUF: un modello denso piccolo, un modello denso più grande e un modello mixture-of-experts. I test vengono eseguiti su un MacBook Pro con processore M2 Max, 32 GB di memoria unificata, macOS 26.6, PyTorch 2.12.1 e kernels 0.17.0.

Secondo l’azienda, Transformers si avvicina a llama.cpp su tutti e tre i checkpoint. Il confronto non si basa su test identici: la misurazione di Transformers genera 128 token da un prompt di 12 token e include l’elaborazione del prompt, mentre il risultato di llama-bench di llama.cpp riporta il throughput della sola decodifica. Le prove di Hugging Face usano inoltre tre ripetizioni dopo il riscaldamento e includono lunghi intervalli di raffreddamento, perché i test eseguiti uno dopo l’altro hanno ridotto le prestazioni del 10% o più sulla macchina di prova.

Hugging Face continua a raccomandare llama.cpp quando il requisito principale è un’inferenza locale efficiente. Il suo runtime dedicato, la gestione della memoria e il supporto hardware restano progettati specificamente per questo compito. La nuova integrazione si rivolge invece agli sviluppatori che vogliono esaminare le attivazioni, modificare il codice del modello, valutare checkpoint quantizzati o testare modifiche alla generazione all’interno di Python.

I kernel GGML vanno oltre GGUF

Il lavoro porta anche diversi kernel derivati da ggml nell’esecuzione dei modelli PyTorch. Il kernel ggml-quantization legge direttamente i pesi in formato compatto per le operazioni sulle matrici, mentre ggml-norm gestisce la normalizzazione e ggml-attn fornisce l’attenzione su Metal. Un kernel gated delta-network supporta i livelli di attenzione lineare usati da Qwen3.5 e Qwen3.8, e Hugging Face ha aggiunto una propria implementazione top-k per l’instradamento nei modelli mixture-of-experts.

Questo approccio potrebbe in futuro aiutare i modelli che non hanno un’implementazione dedicata in llama.cpp. Transformers contiene già versioni PyTorch di molte architetture, quindi kernel ggml compatibili potrebbero accelerare alcune operazioni selezionate senza richiedere un’implementazione completa in C++ in llama.cpp, secondo Hugging Face. La stessa tecnica potrebbe applicarsi anche ai modelli di visione artificiale, audio e multimodali, sebbene ogni architettura richieda comunque integrazione e validazione.

Apple Silicon è il primo limite

Il percorso iniziale per l’inferenza con pesi in formato compatto è limitato al backend MPS di Apple Silicon. L’importazione di GGUF tramite dequantizzazione rimane disponibile come percorso separato, ma il supporto per il formato di file non significa che i kernel per i pesi in formato compatto funzionino su ogni dispositivo.

Anche il padding e il batching richiedono ulteriore lavoro. Gli input senza padding beneficiano di un’ottimizzazione che rimuove una maschera di attenzione non necessaria nelle prime fasi della generazione, mentre i batch con padding non possono usare questa scorciatoia e potrebbero essere più lenti. La copertura delle architetture si concentra attualmente sui modelli Qwen3.5 densi e mixture-of-experts, oltre che sui checkpoint Qwen3.8 compatibili.

Per ora, il risultato pratico è circoscritto ma utile: uno sviluppatore può prendere un checkpoint GGUF compatto creato per llama.cpp, caricarlo tramite Transformers, mantenere il ciclo di generazione in Python e usare gli strumenti di PyTorch per esaminare o modificare il modello. La prima versione supporta l’inferenza di Qwen3.5 con pesi in formato compatto su Apple Silicon; una copertura più ampia di architetture e hardware arriverà in seguito.

Fonte

Notizie correlate

Esplora

Altri articoli