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 был создан @ggerganov, который также является разработчиком llama.cpp — популярного фреймворка инференса LLM на C/C++. Модели, изначально разработанные в фреймворках вроде PyTorch, можно конвертировать в формат GGUF для использования с этими движками.

Как видно на этом графике, в отличие от форматов файлов, содержащих только тензоры, таких как safetensors – который также является рекомендуемым форматом моделей для Hub – GGUF кодирует как тензоры, так и стандартизированный набор метаданных.

Поиск файлов GGUF

Вы можете просмотреть все модели с файлами GGUF, отфильтровав их по тегу GGUF: hf.co/models?library=gguf. Кроме того, вы можете использовать инструмент ggml-org/gguf-my-repo для конвертации/квантования весов вашей модели в веса формата GGUF.

Например, вы можете посмотреть TheBloke/Mixtral-8x7B-Instruct-v0.1-GGUF, чтобы увидеть файлы GGUF в действии.

Просмотрщик метаданных и информации о тензорах

В Hub есть просмотрщик для файлов GGUF, который позволяет пользователю ознакомиться с метаданными и информацией о тензорах (имя, форма, точность). Просмотрщик доступен на странице модели (пример) и на странице с файлами (пример).

Использование с инструментами с открытым исходным кодом

Разбор метаданных с помощью @huggingface/gguf

Мы также создали парсер GGUF на JavaScript, который работает с файлами, размещёнными на удалённых хостах (например, 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);

Подробнее — здесь.

Типы квантования

typesourceОписание
F64Wikipedia64-битное число с плавающей точкой двойной точности, соответствующее стандарту IEEE 754.
I64GH64-битное целое число фиксированной ширины.
F32Wikipedia32-битное число с плавающей точкой одинарной точности, соответствующее стандарту IEEE 754.
I32GH32-битное целое число фиксированной ширины.
F16Wikipedia16-битное число с плавающей точкой половинной точности, стандарт IEEE 754.
BF16Wikipedia16-битная сокращенная версия 32-битного числа с плавающей точкой одинарной точности по стандарту IEEE 754.
I16GH16-битное целое число с фиксированной шириной.
Q8_KGH8-битное квантование (q). Каждый блок содержит 256 весов. Используется только для квантования промежуточных результатов. Для этого типа квантования реализованы все скалярные произведения с точностью от 2 до 6 бит. Формула весов: w = q * block_scale.
I8GH8-битное целое число фиксированной ширины.
Q6_KGH6-битовая квантизация (q). Суперблоки из 16 блоков, каждый блок содержит 16 весов. Формула весов: w = q * block_scale(8-bit), что даёт 6.5625 бит на вес.
Q5_KGH5-битовая квантизация (q). Суперблоки из 8 блоков, каждый блок содержит 32 веса. Формула веса: w = q * block_scale(6-bit) + block_min(6-bit), что даёт 5,5 бит на вес.
Q4_KGH4-битовая квантизация (q). Суперблоки из 8 блоков, каждый блок содержит 32 веса. Формула веса: w = q * block_scale(6-bit) + block_min(6-bit), что даёт 4,5 бита на вес.
Q3_KGH3-битовая квантизация (q). Суперблоки из 16 блоков, каждый блок содержит 16 весов. Формула веса: w = q * block_scale(6-bit), что даёт 3.4375 бит на вес.
Q2_KGH2-битовая квантизация (q). Суперблоки из 16 блоков, каждый блок содержит 16 весов. Формула веса: w = q * block_scale(4-bit) + block_min(4-bit), что даёт 2.625 бит на вес.
IQ4_NLGH4-битовая квантизация (q). Суперблоки с 256 весами. Вес w получается с помощью super_block_scale & importance matrix.
IQ4_XSHF4-битовая квантизация (q). Суперблоки из 256 весов. Вес w получается с помощью super_block_scale & importance matrix, что даёт 4,25 бита на вес.
IQ3_SHF3-битовая квантизация (q). Суперблоки из 256 весов. Вес w получается с помощью super_block_scale & importance matrix, что даёт 3,44 бита на вес.
IQ3_XXSHF3-битовая квантизация (q). Суперблоки из 256 весов. Вес w получается с помощью super_block_scale & importance matrix, что даёт 3,06 бита на вес.
IQ2_XXSHF2-битовая квантизация (q). Суперблоки из 256 весов. Вес w получается с помощью super_block_scale & importance matrix, что даёт 2,06 бита на вес.
IQ2_SHF2-битовая квантизация (q). Суперблоки из 256 весов. Вес w получается с помощью super_block_scale & importance matrix, что даёт 2,5 бита на вес.
IQ2_XSHF2-битовая квантизация (q). Суперблоки из 256 весов. Вес w получается с помощью super_block_scale & importance matrix, что даёт 2,31 бита на вес.
IQ1_SHF1-битовая квантизация (q). Суперблоки из 256 весов. Вес w получается с помощью super_block_scale & importance matrix, что даёт 1,56 бита на вес.
IQ1_MGH1-битовая квантизация (q). Суперблоки из 256 весов. Вес w получается с помощью super_block_scale & importance matrix, что даёт 1,75 бит на вес.
TQ1_0GHТернарная квантизация.
TQ2_0GHТернарная квантизация.
MXFP4GH4-битный Microscaling Block Floating Point.
Устаревшие типы
Q8_0GH8-битное квантование с округлением до ближайшего (q). Каждый блок содержит 32 веса. Формула веса: w = q * block_scale. Устаревший метод квантования (на сегодняшний день не используется широко).
Q8_1GH8-битное квантование с округлением до ближайшего (q). Каждый блок содержит 32 веса. Формула веса: w = q * block_scale + block_minimum. Устаревший метод квантования (на сегодняшний день не используется широко).
Q5_0GH5-битное квантование с округлением до ближайшего (q). Каждый блок содержит 32 веса. Формула веса: w = q * block_scale. Устаревший метод квантования (на сегодняшний день не используется широко).
Q5_1GH5-битное квантование с округлением до ближайшего (q). Каждый блок содержит 32 веса. Формула веса: w = q * block_scale + block_minimum. Устаревший метод квантования (на сегодняшний день не используется широко).
Q4_0GH4-битное квантование с округлением до ближайшего (q). Каждый блок содержит 32 веса. Формула веса: w = q * block_scale. Устаревший метод квантования (на сегодняшний день не используется широко).
Q4_1GH4-битное квантование с округлением до ближайшего (q). Каждый блок содержит 32 веса. Формула веса: w = q * block_scale + block_minimum. Устаревший метод квантования (на сегодняшний день не используется широко).

Если в таблице выше есть неточности, пожалуйста, создайте PR для этого файла.

Update on GitHub