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 mendukung semua format file, tetapi memiliki fitur bawaan untuk format GGUF, yaitu format biner yang dioptimalkan untuk pemuatan dan penyimpanan model yang cepat, sehingga sangat efisien untuk keperluan inferensi. GGUF dirancang untuk digunakan dengan GGML dan eksekutor lainnya. GGUF dikembangkan oleh @ggerganov yang juga merupakan pengembang llama.cpp, sebuah framework inferensi LLM C/C++ yang populer. Model yang awalnya dikembangkan dalam framework seperti PyTorch dapat dikonversi ke format GGUF untuk digunakan dengan mesin-mesin tersebut.

Seperti yang dapat kita lihat pada grafik ini, berbeda dengan format file yang hanya berisi tensor seperti safetensors – yang juga merupakan format model yang direkomendasikan untuk Hub – GGUF mengkodekan baik tensor maupun seperangkat metadata yang distandarkan.

Mencari file GGUF

Anda dapat menelusuri semua model dengan file GGUF dengan memfilter berdasarkan tag GGUF: hf.co/models?library=gguf. Selain itu, Anda dapat menggunakan alat ggml-org/gguf-my-repo untuk mengonversi/mengkantisasi bobot model Anda menjadi bobot GGUF.

Sebagai contoh, Anda dapat melihat TheBloke/Mixtral-8x7B-Instruct-v0.1-GGUF untuk melihat file GGUF dalam praktik.

Penampil untuk metadata & info tensor

Hub memiliki viewer untuk file GGUF yang memungkinkan pengguna memeriksa metadata & info tensor (nama, shape, presisi). Viewer ini tersedia di halaman model (contoh) & halaman file (contoh).

Penggunaan dengan alat sumber terbuka

Menganalisis metadata dengan @huggingface/gguf

Kami juga telah membuat parser GGUF javascript yang berfungsi pada file yang di-hosting secara jarak jauh (misalnya Hugging Face Hub).

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);

Temukan informasi lebih lanjut di sini.

Jenis Kuantisasi

typesourcedeskripsi
F64WikipediaAngka floating-point presisi ganda standar IEEE 754 64-bit.
I64GHAngka integer lebar tetap 64-bit.
F32WikipediaAngka floating-point presisi tunggal standar IEEE 754 32-bit.
I32GHAngka integer lebar tetap 32-bit.
F16WikipediaAngka floating-point presisi setengah standar IEEE 754 16-bit.
BF16WikipediaVersi 16-bit yang dipersingkat dari bilangan floating-point presisi tunggal IEEE 754 32-bit.
I16GHBilangan bulat lebar tetap 16-bit.
Q8_KGHKuantisasi 8-bit (q). Setiap blok memiliki 256 bobot. Hanya digunakan untuk mengkuantisasi hasil antara. Semua perkalian titik 2-6 bit diimplementasikan untuk tipe kuantisasi ini. Rumus bobot: w = q * block_scale.
I8GHBilangan bulat lebar tetap 8-bit.
Q6_KGHKuantisasi 6-bit (q). Super-blok dengan 16 blok, di mana setiap blok memiliki 16 bobot. Rumus bobot: w = q * block_scale(8-bit), menghasilkan 6,5625 bit-per-bobot.
Q5_KGHKuantisasi 5-bit (q). Super-blok dengan 8 blok, di mana setiap blok memiliki 32 bobot. Rumus bobot: w = q * block_scale(6-bit) + block_min(6-bit), menghasilkan 5,5 bit-per-bobot.
Q4_KGHKuantisasi 4-bit (q). Super-blok dengan 8 blok, di mana setiap blok memiliki 32 bobot. Rumus bobot: w = q * block_scale(6-bit) + block_min(6-bit), menghasilkan 4,5 bit-per-bobot.
Q3_KGHKuantisasi 3-bit (q). Super-blok dengan 16 blok, di mana setiap blok memiliki 16 bobot. Rumus bobot: w = q * block_scale(6-bit), menghasilkan 3,4375 bit-per-bobot.
Q2_KGHKuantisasi 2-bit (q). Super-blok dengan 16 blok, di mana setiap blok memiliki 16 bobot. Rumus bobot: w = q * block_scale(4-bit) + block_min(4-bit), menghasilkan 2,625 bit-per-bobot.
IQ4_NLGHKuantisasi 4-bit (q). Super-blok dengan 256 bobot. Bobot w diperoleh menggunakan super_block_scale & importance matrix.
IQ4_XSHF4-bit quantization (q). Super-blocks with 256 weights. Weight w is obtained using super_block_scale & importance matrix, resulting in 4.25 bits-per-weight.
IQ3_SHF3-bit quantization (q). Super-blocks with 256 weights. Weight w is obtained using super_block_scale & importance matrix, resulting in 3.44 bits-per-weight.
IQ3_XXSHF3-bit quantization (q). Super-blocks with 256 weights. Weight w is obtained using super_block_scale & importance matrix, resulting in 3.06 bits-per-weight.
IQ2_XXSHF2-bit quantization (q). Super-blocks with 256 weights. Weight w is obtained using super_block_scale & importance matrix, resulting in 2.06 bits-per-weight.
IQ2_SHFKuantisasi 2-bit (q). Super-blok dengan 256 bobot. Bobot w diperoleh menggunakan super_block_scale & importance matrix, menghasilkan 2,5 bit per bobot.
IQ2_XSHFKuantisasi 2-bit (q). Super-blok dengan 256 bobot. Bobot w diperoleh menggunakan super_block_scale & importance matrix, menghasilkan 2,31 bit-per-bobot.
IQ1_SHFKuantisasi 1-bit (q). Super-blok dengan 256 bobot. Bobot w diperoleh menggunakan super_block_scale & importance matrix, menghasilkan 1,56 bit per bobot.
IQ1_MGHKuantisasi 1-bit (q). Super-blok dengan 256 bobot. Bobot w diperoleh menggunakan super_block_scale & importance matrix, menghasilkan 1,75 bit per bobot.
TQ1_0GHKuantisasi ternary.
TQ2_0GHKuantisasi ternary.
MXFP4GH4-bit Microscaling Block Floating Point.
Tipe lama
Q8_0GHKuantisasi pembulatan ke terdekat 8-bit (q). Setiap blok memiliki 32 bobot. Rumus bobot: w = q * block_scale. Metode kuantisasi lama (tidak banyak digunakan hingga saat ini).
Q8_1GHKuantisasi pembulatan ke terdekat 8-bit (q). Setiap blok memiliki 32 bobot. Rumus bobot: w = q * block_scale + block_minimum. Metode kuantisasi lama (tidak banyak digunakan hingga saat ini).
Q5_0GHKuantisasi pembulatan ke terdekat 5-bit (q). Setiap blok memiliki 32 bobot. Rumus bobot: w = q * block_scale. Metode kuantisasi lama (tidak banyak digunakan hingga saat ini).
Q5_1GHKuantisasi pembulatan ke terdekat 5-bit (q). Setiap blok memiliki 32 bobot. Rumus bobot: w = q * block_scale + block_minimum. Metode kuantisasi lama (tidak banyak digunakan hingga saat ini).
Q4_0GHKuantisasi 4-bit round-to-nearest (q). Setiap blok memiliki 32 bobot. Rumus bobot: w = q * block_scale. Metode kuantisasi lama (tidak banyak digunakan hingga saat ini).
Q4_1GHKuantisasi 4-bit round-to-nearest (q). Setiap blok memiliki 32 bobot. Rumus bobot: w = q * block_scale + block_minimum. Metode kuantisasi lama (tidak banyak digunakan hingga saat ini).

jika ada ketidakakuratan pada tabel di atas, silakan buka PR pada file ini.

Update on GitHub