Transformers kjører nå GGUF-kvanter på Apple Silicon med llama.cpps egne kernels
Oppgrader transformers fra main hvis du kjører GGUF-modeller på en Apple Silicon-Mac, for biblioteket laster nå kvantiseringene direkte med llama.cpps egne Metal-kernels.
2,74 GB. Det er Q4_K_M-utgaven av Unsloths Qwen3.5-4B, ned fra 8,42 GB for den ukvantiserte BF16-varianten. Den filen kan nå lastes rett inn i transformers ved å sende model_id og filnavn til from_pretrained, uten konvertering og uten at vektene pakkes ut først. Hugging Face skriver at målet er å gjøre lokal kjøring av GGUF-sjekkpunkter like praktisk i transformers som i verktøyene GGUF allerede driver.
Ytelsen kommer fra at Hugging Face gjenbruker llama.cpps underliggende ggml-kernels gjennom kernels-biblioteket. Fem pakker er i spill: ggml-quantization leser pakkede kvantiserte vekter direkte i matriseoperasjonene og slipper å utvide hele vektmatrisen før hvert dekodingssteg, ggml-norm slår sammen normaliseringsoperasjoner, ggml-attn gir ggmls Metal-flash-attention, ggml-gated-delta-net akselererer de lineære attention-lagene i Qwen3.5- og Qwen3.8-arkitekturene, og topk velger eksperter i MoE-modeller. Den siste er Hugging Faces egen Metal-implementasjon.
To endringer i generate gjelder alle transformers-modeller, ikke bare GGUF. PR 48814 fjerner en unødvendig attention-maske tidlig når et dekoder-input er uten padding, slik at attention-koden slipper å inspisere masken gjentatte ganger. PR 47975 utsetter stoppsjekken, slik at CPU-en kan fortsette å planlegge arbeid mens GPU-en jobber. Begge fjerner synkroniseringspunkter der CPU-en ellers venter på GPU-en for hvert eneste token.
«Det er her vi er akkurat nå. Og jeg skal ikke lyve, det føles ganske magisk» — Julien Chaumond, Hugging Face, i et innlegg på X 24. april 2026 om Qwen3.6 27B kjørt lokalt via llama.cpp i kodeagenten Pi på en MacBook Pro
I det samme innlegget, som Hugging Face bygger inn i bloggposten, sammenligner Chaumond opplevelsen på ikke-trivielle oppgaver i Hugging Faces egne kodebaser med den nyeste Opus-modellen i Claude.
Begrensningene er reelle. Den pakkede inferens-stien kjører foreløpig bare på MPS, altså Apple Silicon. Lasteren dekker per nå Qwen3.5-arkitekturene, både dense og MoE, samt kompatible Qwen3.8-sjekkpunkter. Padding og batching er ikke ferdig: upaddede input drar nytte av maske-optimaliseringen, mens paddede batcher kan gi lavere ytelse. Og du trenger transformers fra main, ikke siste utgivelse på PyPI.
Samme sjekkpunkt kan serveres gjennom transformers serve, som eksponerer et OpenAI-kompatibelt API på localhost port 8000. Klienter som Jan eller Pi kobles til ved å legge inn base-URL og en modell-ID på formen repo-navn, kolon, filnavn.
Hva bør du gjøre?
- Installer transformers fra main sammen med kernels. De pakkede kernel-ene finnes ikke i siste PyPI-utgivelse ennå, og du trenger en PyTorch-versjon som de publiserte kernel-byggene støtter, som regel en av de to siste.
- Start med Q4_K_M og gå opp til Q5_K_M eller Q6_K hvis du har minne til overs. Hugging Face anbefaler å evaluere kvantiseringstapet på oppgaven du faktisk skal bruke modellen til, ikke på en generisk benchmark.
- Kontroller at kernelen lastes. Klarer ikke transformers å hente ggml-attn, faller den tilbake til sdpa med en advarsel, og uten en kompatibel kvantiseringskernel dekomprimerer lasteren modellen og bruker mer minne.
Hugging Face bruker llama.cpp som referanse og skriver at transformers ligger nær på alle tre testede sjekkpunkter. Sammenligningen er ikke helt lik: deres egen måling inkluderer prefill, mens llama-bench rapporterer ren dekodingsgjennomstrømning. Tallene er målt på en MacBook Pro med M2 Max og 32 GB delt minne.
KI-kuratert — innholdet er generert av KI-agenter basert på originalkilden.