Hub documentation

GGUF

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

GGUF

Hugging Face Hub tüm dosya biçimlerini destekler ancak modellerin hızlı yüklenmesi ve kaydedilmesi için optimize edilmiş bir ikili biçim olan GGUF formatı için yerleşik özelliklere sahiptir; bu da onu çıkarım (inference) amaçları için son derece verimli kılar. GGUF, GGML ve diğer yürütücülerle (executors) kullanılmak üzere tasarlanmıştır. GGUF, popüler C/C++ LLM çıkarım çerçevesi olan llama.cpp'nin de geliştiricisi olan @ggerganov tarafından geliştirilmiştir. PyTorch gibi çerçevelerde başlangıçta geliştirilen modeller, bu motorlarla kullanılmak üzere GGUF formatına dönüştürülebilir.

Bu grafikte görebileceğimiz üzere, safetensors gibi yalnızca tensör içeren dosya biçimlerinin aksine – ki Hub için önerilen model biçimlerinden biridir – GGUF, hem tensörleri hem de standartlaştırılmış bir metadata setini kodlar.

GGUF dosyalarını bulma

GGUF etiketiyle filtreleyerek GGUF dosyalarına sahip tüm modellere göz atabilirsiniz: hf.co/models?library=gguf. Ayrıca, model ağırlıklarınızı GGUF ağırlıklarına dönüştürmek/kuantize etmek için ggml-org/gguf-my-repo aracını kullanabilirsiniz.

Örneğin, GGUF dosyalarının nasıl çalıştığını görmek için TheBloke/Mixtral-8x7B-Instruct-v0.1-GGUF deposuna göz atabilirsiniz.

Üstveri ve tensör bilgisi görüntüleyicisi

Hub, GGUF dosyaları için bir görüntüleyiciye sahiptir; bu görüntüleyici kullanıcıların meta verileri ve tensör bilgilerini (ad, şekil, hassasiyet) incelemesini sağlar. Görüntüleyici, model sayfasında (örnek) ve dosyalar sayfasında (örnek) kullanılabilir.

Açık kaynak araçlarla kullanım

@huggingface/gguf ile meta verileri ayrıştırma

Uzak konaklamalı dosyalarla (ör. Hugging Face Hub) çalışan bir javascript GGUF ayrıştırıcısı da oluşturduk.

npm install @huggingface/gguf
import { gguf } from "@huggingface/gguf";
// remote GGUF file from https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGUF
const URL_LLAMA = "https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGUF/resolve/191239b/llama-2-7b-chat.Q2_K.gguf";
const { metadata, tensorInfos } = await gguf(URL_LLAMA);

Daha fazla bilgi için buraya bakın.

Kantizasyon Türleri

türkaynakaçıklama
F64Wikipedia64-bit standart IEEE 754 çift hassasiyetli kayan noktalı sayı.
I64GH64-bit sabit genişlikli tamsayı.
F32Wikipedia32-bit standart IEEE 754 tek hassasiyetli kayan noktalı sayı.
I32GH32-bit sabit genişlikli tamsayı.
F16Wikipedia16-bit standart IEEE 754 yarı hassasiyetli kayan noktalı sayı.
BF16Wikipedia32-bit IEEE 754 tek hassasiyetli kayan noktalı sayının 16-bit kısaltılmış versiyonu.
I16GH16-bit sabit genişlikli tamsayı.
Q8_KGH8-bit kuantizasyon (q). Her blok 256 ağırlık içerir. Yalnızca ara sonuçların kuantize edilmesi için kullanılır. Bu kuantizasyon tipi için tüm 2-6 bit nokta çarpımları uygulanmıştır. Ağırlık formülü: w = q * block_scale.
I8GH8-bit sabit genişlikli tamsayı.
Q6_KGH6-bit kuantizasyon (q). 16 bloktan oluşan süper bloklar, her blok 16 ağırlık içerir. Ağırlık formülü: w = q * block_scale(8-bit), bu da ağırlık başına 6.5625 bit sonucunu verir.
Q5_KGH5-bit kuantizasyon (q). 8 bloktan oluşan süper bloklar, her blok 32 ağırlık içerir. Ağırlık formülü: w = q * block_scale(6-bit) + block_min(6-bit), bu da ağırlık başına 5,5 bit sonucunu verir.
Q4_KGH4-bit kuantizasyon (q). 8 bloktan oluşan süper bloklar, her blok 32 ağırlık içerir. Ağırlık formülü: w = q * block_scale(6-bit) + block_min(6-bit), bu da ağırlık başına 4,5 bit sonucunu verir.
Q3_KGH3-bit kuantizasyon (q). 16 bloktan oluşan süper bloklar, her blok 16 ağırlık içerir. Ağırlık formülü: w = q * block_scale(6-bit), bu da ağırlık başına 3.4375 bit sonucunu verir.
Q2_KGH2-bit kuantizasyon (q). 16 bloktan oluşan süper bloklar, her blok 16 ağırlık içerir. Ağırlık formülü: w = q * block_scale(4-bit) + block_min(4-bit), bu da ağırlık başına 2.625 bit sonucunu verir.
IQ4_NLGH4-bit kuantizasyon (q). 256 ağırlıklı süper bloklar. w ağırlığı, super_block_scale & importance matrix kullanılarak elde edilir.
IQ4_XSHF4-bit kuantizasyon (q). 256 ağırlıklı süper bloklar. w ağırlığı, super_block_scale & importance matrix kullanılarak elde edilir ve bu, ağırlık başına 4,25 bit sonucunu verir.
IQ3_SHF3-bit kuantizasyon (q). 256 ağırlıklı süper bloklar. w ağırlığı, super_block_scale & importance matrix kullanılarak elde edilir ve bu, ağırlık başına 3,44 bit sonucunu verir.
IQ3_XXSHF3-bit kuantizasyon (q). 256 ağırlıklı süper bloklar. w ağırlığı, super_block_scale & importance matrix kullanılarak elde edilir ve bu, ağırlık başına 3,06 bit sonucunu verir.
IQ2_XXSHF2-bit kuantizasyon (q). 256 ağırlıklı süper bloklar. w ağırlığı, super_block_scale & importance matrix kullanılarak elde edilir ve bu, ağırlık başına 2,06 bit sonucunu verir.
IQ2_SHF2-bit kuantizasyon (q). 256 ağırlıklı süper bloklar. w ağırlığı, super_block_scale & importance matrix kullanılarak elde edilir ve bu, ağırlık başına 2,5 bit sonucunu verir.
IQ2_XSHF2-bit kuantizasyon (q). 256 ağırlıklı süper bloklar. w ağırlığı, super_block_scale & importance matrix kullanılarak elde edilir ve bu, ağırlık başına 2,31 bit sonucunu verir.
IQ1_SHF1-bit kuantizasyon (q). 256 ağırlıklı süper bloklar. w ağırlığı, super_block_scale & importance matrix kullanılarak elde edilir ve bu, ağırlık başına 1,56 bit sonucunu verir.
IQ1_MGH1-bit kuantizasyon (q). 256 ağırlıklı süper bloklar. w ağırlığı, super_block_scale & importance matrix kullanılarak elde edilir ve bu, ağırlık başına 1,75 bit sonucunu verir.
TQ1_0GHÜçlü kuantizasyon.
TQ2_0GHÜçlü kuantizasyon.
MXFP4GH4-bit Microscaling Blok Kayan Nokta.
Eski türler
Q8_0GH8-bit en yakın yuvarlama kuantizasyonu (q). Her blok 32 ağırlık içerir. Ağırlık formülü: w = q * block_scale. Eski kuantizleme yöntemi (bugüne kadar yaygın olarak kullanılmamıştır).
Q8_1GH8-bit en yakın yuvarlama kuantizasyonu (q). Her blok 32 ağırlık içerir. Ağırlık formülü: w = q * block_scale + block_minimum. Eski kuantizleme yöntemi (bugüne kadar yaygın olarak kullanılmamıştır).
Q5_0GH5-bit en yakın yuvarlama kuantizasyonu (q). Her blok 32 ağırlık içerir. Ağırlık formülü: w = q * block_scale. Eski kuantizleme yöntemi (bugüne kadar yaygın olarak kullanılmamıştır).
Q5_1GH5-bit en yakın yuvarlama kuantizasyonu (q). Her blok 32 ağırlık içerir. Ağırlık formülü: w = q * block_scale + block_minimum. Eski kuantizleme yöntemi (bugüne kadar yaygın olarak kullanılmamıştır).
Q4_0GH4-bit en yakın yuvarlama kuantizasyonu (q). Her blok 32 ağırlık içerir. Ağırlık formülü: w = q * block_scale. Eski kuantizleme yöntemi (bugüne kadar yaygın olarak kullanılmamıştır).
Q4_1GH4-bit en yakın yuvarlama kuantizasyonu (q). Her blok 32 ağırlık içerir. Ağırlık formülü: w = q * block_scale + block_minimum. Eski kuantizasyon yöntemi (bugüne kadar yaygın olarak kullanılmamıştır).

yukarıdaki tabloda herhangi bir hata varsa, lütfen bu dosya için bir PR açın.

Update on GitHub