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์€ ๋ชจ๋“  ํŒŒ์ผ ํ˜•์‹์„ ์ง€์›ํ•˜์ง€๋งŒ, ๋ชจ๋ธ์˜ ๋น ๋ฅธ ๋กœ๋”ฉ๊ณผ ์ €์žฅ์„ ์œ„ํ•ด ์ตœ์ ํ™”๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ ํ˜•์‹์ธ GGUF ํ˜•์‹์— ๋Œ€ํ•œ ๋‚ด์žฅ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ถ”๋ก  ๋ชฉ์ ์— ๋งค์šฐ ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค. GGUF๋Š” GGML ๋ฐ ๊ธฐํƒ€ ์‹คํ–‰๊ธฐ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. GGUF๋Š” ์ธ๊ธฐ ์žˆ๋Š” C/C++ LLM ์ถ”๋ก  ํ”„๋ ˆ์ž„์›Œํฌ์ธ llama.cpp์˜ ๊ฐœ๋ฐœ์ž์ด๊ธฐ๋„ ํ•œ @ggerganov์— ์˜ํ•ด ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. PyTorch์™€ ๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์ฒ˜์Œ ๊ฐœ๋ฐœ๋œ ๋ชจ๋ธ์€ ํ•ด๋‹น ์—”์ง„์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด GGUF ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ทธ๋ž˜ํ”„์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด, safetensors์™€ ๊ฐ™์ด ํ…์„œ๋งŒ ์ €์žฅํ•˜๋Š” ํŒŒ์ผ ํ˜•์‹๊ณผ ๋‹ฌ๋ฆฌ, Hub์—์„œ ๊ถŒ์žฅํ•˜๋Š” ๋ชจ๋ธ ํ˜•์‹์ด๊ธฐ๋„ ํ•œ GGUF๋Š” ํ…์„œ์™€ ํ‘œ์ค€ํ™”๋œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ๋ชจ๋‘ ์ธ์ฝ”๋”ฉํ•ฉ๋‹ˆ๋‹ค.

GGUF ํŒŒ์ผ ์ฐพ๊ธฐ

GGUF ํƒœ๊ทธ๋กœ ํ•„ํ„ฐ๋งํ•˜์—ฌ GGUF ํŒŒ์ผ์ด ํฌํ•จ๋œ ๋ชจ๋“  ๋ชจ๋ธ์„ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: hf.co/models?library=gguf. ๋˜ํ•œ, ggml-org/gguf-my-repo ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋ธ ๊ฐ€์ค‘์น˜๋ฅผ GGUF ๊ฐ€์ค‘์น˜๋กœ ๋ณ€ํ™˜/์–‘์žํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, GGUF ํŒŒ์ผ์˜ ์‹ค์ œ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด TheBloke/Mixtral-8x7B-Instruct-v0.1-GGUF๋ฅผ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ฐ ํ…์„œ ์ •๋ณด ๋ทฐ์–ด

Hub์—๋Š” GGUF ํŒŒ์ผ ๋ทฐ์–ด๊ฐ€ ์žˆ์–ด ์‚ฌ์šฉ์ž๊ฐ€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ฐ ํ…์„œ ์ •๋ณด(์ด๋ฆ„, shape, ์ •๋ฐ€๋„)๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ทฐ์–ด๋Š” ๋ชจ๋ธ ํŽ˜์ด์ง€(์˜ˆ์‹œ) ๋ฐ ํŒŒ์ผ ํŽ˜์ด์ง€(์˜ˆ์‹œ)์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜คํ”ˆ์†Œ์Šค ๋„๊ตฌ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ

@huggingface/gguf๋กœ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํŒŒ์‹ฑ

์›๊ฒฉ ํ˜ธ์ŠคํŒ… ํŒŒ์ผ(์˜ˆ: Hugging Face Hub)์—์„œ ์ž‘๋™ํ•˜๋Š” javascript ๊ธฐ๋ฐ˜ GGUF ํŒŒ์„œ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

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

์ž์„ธํ•œ ๋‚ด์šฉ์€ ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•˜์„ธ์š”.

์–‘์žํ™” ์œ ํ˜•

typesource์„ค๋ช…
F64Wikipedia64๋น„ํŠธ ํ‘œ์ค€ IEEE 754 ์ด์ค‘ ์ •๋ฐ€๋„ ๋ถ€๋™ ์†Œ์ˆ˜์  ์ˆซ์ž.
I64GH64๋น„ํŠธ ๊ณ ์ •ํญ ์ •์ˆ˜.
F32Wikipedia32๋น„ํŠธ ํ‘œ์ค€ IEEE 754 ๋‹จ์ผ ์ •๋ฐ€๋„ ๋ถ€๋™ ์†Œ์ˆ˜์  ์ˆซ์ž.
I32GH32๋น„ํŠธ ๊ณ ์ •ํญ ์ •์ˆ˜.
F16Wikipedia16-bit ํ‘œ์ค€ IEEE 754 ๋ฐ˜์ •๋ฐ€ ๋ถ€๋™์†Œ์ˆ˜์  ์ˆซ์ž.
BF16Wikipedia32๋น„ํŠธ IEEE 754 ๋‹จ์ผ ์ •๋ฐ€๋„ ๋ถ€๋™ ์†Œ์ˆ˜์  ์ˆซ์ž์˜ 16๋น„ํŠธ ์ถ•์†Œ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.
I16GH16๋น„ํŠธ ๊ณ ์ •ํญ ์ •์ˆ˜
Q8_KGH8-bit ์–‘์žํ™”(q). ๊ฐ ๋ธ”๋ก์—๋Š” 256๊ฐœ์˜ ๊ฐ€์ค‘์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ค‘๊ฐ„ ๊ฒฐ๊ณผ ์–‘์žํ™”์—๋งŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ์–‘์žํ™” ์œ ํ˜•์— ๋Œ€ํ•ด 2~6๋น„ํŠธ ๋‚ด์ ์ด ๋ชจ๋‘ ๊ตฌํ˜„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์ค‘์น˜ ๊ณต์‹: w = q * block_scale.
I8GH8๋น„ํŠธ ๊ณ ์ •ํญ ์ •์ˆ˜
Q6_KGH6-bit ์–‘์žํ™”(q). 16๊ฐœ์˜ ๋ธ”๋ก์œผ๋กœ ๊ตฌ์„ฑ๋œ ์Šˆํผ ๋ธ”๋ก์ด๋ฉฐ, ๊ฐ ๋ธ”๋ก์—๋Š” 16๊ฐœ์˜ ๊ฐ€์ค‘์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์ค‘์น˜ ๊ณต์‹: w = q * block_scale(8-bit)๋กœ, ๊ฐ€์ค‘์น˜๋‹น 6.5625๋น„ํŠธ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
Q5_KGH5-bit ์–‘์žํ™”(q). 8๊ฐœ์˜ ๋ธ”๋ก์œผ๋กœ ๊ตฌ์„ฑ๋œ ์Šˆํผ ๋ธ”๋ก์ด๋ฉฐ, ๊ฐ ๋ธ”๋ก์—๋Š” 32๊ฐœ์˜ ๊ฐ€์ค‘์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์ค‘์น˜ ๊ณต์‹: w = q * block_scale(6-bit) + block_min(6-bit)๋กœ, ๊ฐ€์ค‘์น˜๋‹น 5.5๋น„ํŠธ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
Q4_KGH4-bit ์–‘์žํ™”(q). 8๊ฐœ์˜ ๋ธ”๋ก์œผ๋กœ ๊ตฌ์„ฑ๋œ ์Šˆํผ๋ธ”๋ก์ด๋ฉฐ, ๊ฐ ๋ธ”๋ก์—๋Š” 32๊ฐœ์˜ ๊ฐ€์ค‘์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์ค‘์น˜ ๊ณต์‹: w = q * block_scale(6-bit) + block_min(6-bit)๋กœ, ๊ฐ€์ค‘์น˜๋‹น 4.5๋น„ํŠธ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
Q3_KGH3-bit ์–‘์žํ™”(q). 16๊ฐœ์˜ ๋ธ”๋ก์œผ๋กœ ๊ตฌ์„ฑ๋œ ์Šˆํผ ๋ธ”๋ก์ด๋ฉฐ, ๊ฐ ๋ธ”๋ก์—๋Š” 16๊ฐœ์˜ ๊ฐ€์ค‘์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์ค‘์น˜ ๊ณต์‹: w = q * block_scale(6-bit)๋กœ, ๊ฐ€์ค‘์น˜๋‹น 3.4375๋น„ํŠธ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
Q2_KGH2-bit ์–‘์žํ™”(q). 16๊ฐœ์˜ ๋ธ”๋ก์œผ๋กœ ๊ตฌ์„ฑ๋œ ์Šˆํผ ๋ธ”๋ก์ด๋ฉฐ, ๊ฐ ๋ธ”๋ก์—๋Š” 16๊ฐœ์˜ ๊ฐ€์ค‘์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์ค‘์น˜ ๊ณต์‹: w = q * block_scale(4-bit) + block_min(4-bit)๋กœ, ๊ฐ€์ค‘์น˜๋‹น 2.625๋น„ํŠธ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
IQ4_NLGH4-bit ์–‘์žํ™”(q). 256๊ฐœ์˜ ๊ฐ€์ค‘์น˜๋ฅผ ๊ฐ€์ง„ ์Šˆํผ ๋ธ”๋ก. ๊ฐ€์ค‘์น˜ w๋Š” super_block_scale ๋ฐ importance matrix๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์–ป์Šต๋‹ˆ๋‹ค.
IQ4_XSHF4-bit ์–‘์žํ™”(q). 256๊ฐœ์˜ ๊ฐ€์ค‘์น˜๋ฅผ ๊ฐ€์ง„ ์Šˆํผ ๋ธ”๋ก. ๊ฐ€์ค‘์น˜ w๋Š” super_block_scale ๋ฐ importance matrix๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์–ป์–ด์ง€๋ฉฐ, ๊ฐ€์ค‘์น˜๋‹น 4.25๋น„ํŠธ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
IQ3_SHF3-bit ์–‘์žํ™”(q). 256๊ฐœ์˜ ๊ฐ€์ค‘์น˜๋ฅผ ๊ฐ€์ง„ ์Šˆํผ๋ธ”๋ก. ๊ฐ€์ค‘์น˜ w๋Š” super_block_scale ๋ฐ importance matrix๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์–ป์–ด์ง€๋ฉฐ, ๊ทธ ๊ฒฐ๊ณผ ๊ฐ€์ค‘์น˜๋‹น 3.44๋น„ํŠธ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
IQ3_XXSHF3-bit ์–‘์žํ™”(q). 256๊ฐœ์˜ ๊ฐ€์ค‘์น˜๋ฅผ ๊ฐ€์ง„ ์Šˆํผ๋ธ”๋ก. ๊ฐ€์ค‘์น˜ w๋Š” super_block_scale ๋ฐ importance matrix๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์–ป์–ด์ง€๋ฉฐ, ๊ทธ ๊ฒฐ๊ณผ 3.06 bits-per-weight๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
IQ2_XXSHF2-bit ์–‘์žํ™”(q). 256๊ฐœ์˜ ๊ฐ€์ค‘์น˜๋ฅผ ๊ฐ€์ง„ ์Šˆํผ๋ธ”๋ก. ๊ฐ€์ค‘์น˜ w๋Š” super_block_scale ๋ฐ importance matrix๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์–ป์–ด์ง€๋ฉฐ, ๊ทธ ๊ฒฐ๊ณผ 2.06 bits-per-weight๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
IQ2_SHF2-bit ์–‘์žํ™”(q). 256๊ฐœ์˜ ๊ฐ€์ค‘์น˜๋ฅผ ๊ฐ€์ง„ ์Šˆํผ๋ธ”๋ก. ๊ฐ€์ค‘์น˜ w๋Š” super_block_scale ๋ฐ importance matrix๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์–ป์–ด์ง€๋ฉฐ, ๊ฐ€์ค‘์น˜๋‹น 2.5๋น„ํŠธ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
IQ2_XSHF2-bit ์–‘์žํ™”(q). 256๊ฐœ์˜ ๊ฐ€์ค‘์น˜๋ฅผ ๊ฐ€์ง„ ์Šˆํผ๋ธ”๋ก. ๊ฐ€์ค‘์น˜ w๋Š” super_block_scale ๋ฐ importance matrix๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์–ป์–ด์ง€๋ฉฐ, ๊ฐ€์ค‘์น˜๋‹น 2.31๋น„ํŠธ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
IQ1_SHF1-bit ์–‘์žํ™”(q). 256๊ฐœ์˜ ๊ฐ€์ค‘์น˜๋ฅผ ๊ฐ€์ง„ ์Šˆํผ๋ธ”๋ก. ๊ฐ€์ค‘์น˜ w๋Š” super_block_scale ๋ฐ importance matrix๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์–ป์–ด์ง€๋ฉฐ, ๊ฐ€์ค‘์น˜๋‹น 1.56๋น„ํŠธ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
IQ1_MGH1-bit ์–‘์žํ™”(q). 256๊ฐœ์˜ ๊ฐ€์ค‘์น˜๋ฅผ ๊ฐ€์ง„ ์Šˆํผ๋ธ”๋ก. ๊ฐ€์ค‘์น˜ w๋Š” super_block_scale ๋ฐ importance matrix๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์–ป์–ด์ง€๋ฉฐ, ๊ฐ€์ค‘์น˜๋‹น 1.75๋น„ํŠธ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
TQ1_0GH์‚ผ์› ์–‘์žํ™”.
TQ2_0GH์‚ผ์› ์–‘์žํ™”.
MXFP4GH4-bit Microscaling Block Floating Point.
๋ ˆ๊ฑฐ์‹œ ์œ ํ˜•
Q8_0GH8-bit round-to-nearest ์–‘์žํ™”(q). ๊ฐ ๋ธ”๋ก์—๋Š” 32๊ฐœ์˜ ๊ฐ€์ค‘์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์ค‘์น˜ ๊ณต์‹: w = q * block_scale. ๋ ˆ๊ฑฐ์‹œ ์–‘์žํ™” ๋ฐฉ๋ฒ•(ํ˜„์žฌ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ).
Q8_1GH8-bit round-to-nearest ์–‘์žํ™”(q). ๊ฐ ๋ธ”๋ก์—๋Š” 32๊ฐœ์˜ ๊ฐ€์ค‘์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์ค‘์น˜ ๊ณต์‹: w = q * block_scale + block_minimum. ๋ ˆ๊ฑฐ์‹œ ์–‘์žํ™” ๋ฐฉ๋ฒ•(ํ˜„์žฌ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ).
Q5_0GH5-bit round-to-nearest ์–‘์žํ™”(q). ๊ฐ ๋ธ”๋ก์—๋Š” 32๊ฐœ์˜ ๊ฐ€์ค‘์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์ค‘์น˜ ๊ณต์‹: w = q * block_scale. ๋ ˆ๊ฑฐ์‹œ ์–‘์žํ™” ๋ฐฉ๋ฒ•(ํ˜„์žฌ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ).
Q5_1GH5-bit round-to-nearest ์–‘์žํ™”(q). ๊ฐ ๋ธ”๋ก์—๋Š” 32๊ฐœ์˜ ๊ฐ€์ค‘์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์ค‘์น˜ ๊ณต์‹: w = q * block_scale + block_minimum. ๋ ˆ๊ฑฐ์‹œ ์–‘์žํ™” ๋ฐฉ๋ฒ•(ํ˜„์žฌ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ).
Q4_0GH4-bit round-to-nearest ์–‘์žํ™”(q). ๊ฐ ๋ธ”๋ก์—๋Š” 32๊ฐœ์˜ ๊ฐ€์ค‘์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์ค‘์น˜ ๊ณต์‹: w = q * block_scale. ๋ ˆ๊ฑฐ์‹œ ์–‘์žํ™” ๋ฐฉ๋ฒ•(ํ˜„์žฌ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ).
Q4_1GH4-bit round-to-nearest ์–‘์žํ™”(q). ๊ฐ ๋ธ”๋ก์—๋Š” 32๊ฐœ์˜ ๊ฐ€์ค‘์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์ค‘์น˜ ๊ณต์‹: w = q * block_scale + block_minimum. ๋ ˆ๊ฑฐ์‹œ ์–‘์žํ™” ๋ฐฉ๋ฒ•(ํ˜„์žฌ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ).

์œ„ ํ‘œ์— ๋ถ€์ •ํ™•ํ•œ ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋ฉด ์ด ํŒŒ์ผ์— PR์„ ์—ด์–ด ์ฃผ์„ธ์š”.

Update on GitHub