Hub documentation
GGUF
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);Подробнее — здесь.
Типы квантования
| type | source | Описание |
|---|---|---|
| F64 | Wikipedia | 64-битное число с плавающей точкой двойной точности, соответствующее стандарту IEEE 754. |
| I64 | GH | 64-битное целое число фиксированной ширины. |
| F32 | Wikipedia | 32-битное число с плавающей точкой одинарной точности, соответствующее стандарту IEEE 754. |
| I32 | GH | 32-битное целое число фиксированной ширины. |
| F16 | Wikipedia | 16-битное число с плавающей точкой половинной точности, стандарт IEEE 754. |
| BF16 | Wikipedia | 16-битная сокращенная версия 32-битного числа с плавающей точкой одинарной точности по стандарту IEEE 754. |
| I16 | GH | 16-битное целое число с фиксированной шириной. |
| Q8_K | GH | 8-битное квантование (q). Каждый блок содержит 256 весов. Используется только для квантования промежуточных результатов. Для этого типа квантования реализованы все скалярные произведения с точностью от 2 до 6 бит. Формула весов: w = q * block_scale. |
| I8 | GH | 8-битное целое число фиксированной ширины. |
| Q6_K | GH | 6-битовая квантизация (q). Суперблоки из 16 блоков, каждый блок содержит 16 весов. Формула весов: w = q * block_scale(8-bit), что даёт 6.5625 бит на вес. |
| Q5_K | GH | 5-битовая квантизация (q). Суперблоки из 8 блоков, каждый блок содержит 32 веса. Формула веса: w = q * block_scale(6-bit) + block_min(6-bit), что даёт 5,5 бит на вес. |
| Q4_K | GH | 4-битовая квантизация (q). Суперблоки из 8 блоков, каждый блок содержит 32 веса. Формула веса: w = q * block_scale(6-bit) + block_min(6-bit), что даёт 4,5 бита на вес. |
| Q3_K | GH | 3-битовая квантизация (q). Суперблоки из 16 блоков, каждый блок содержит 16 весов. Формула веса: w = q * block_scale(6-bit), что даёт 3.4375 бит на вес. |
| Q2_K | GH | 2-битовая квантизация (q). Суперблоки из 16 блоков, каждый блок содержит 16 весов. Формула веса: w = q * block_scale(4-bit) + block_min(4-bit), что даёт 2.625 бит на вес. |
| IQ4_NL | GH | 4-битовая квантизация (q). Суперблоки с 256 весами. Вес w получается с помощью super_block_scale & importance matrix. |
| IQ4_XS | HF | 4-битовая квантизация (q). Суперблоки из 256 весов. Вес w получается с помощью super_block_scale & importance matrix, что даёт 4,25 бита на вес. |
| IQ3_S | HF | 3-битовая квантизация (q). Суперблоки из 256 весов. Вес w получается с помощью super_block_scale & importance matrix, что даёт 3,44 бита на вес. |
| IQ3_XXS | HF | 3-битовая квантизация (q). Суперблоки из 256 весов. Вес w получается с помощью super_block_scale & importance matrix, что даёт 3,06 бита на вес. |
| IQ2_XXS | HF | 2-битовая квантизация (q). Суперблоки из 256 весов. Вес w получается с помощью super_block_scale & importance matrix, что даёт 2,06 бита на вес. |
| IQ2_S | HF | 2-битовая квантизация (q). Суперблоки из 256 весов. Вес w получается с помощью super_block_scale & importance matrix, что даёт 2,5 бита на вес. |
| IQ2_XS | HF | 2-битовая квантизация (q). Суперблоки из 256 весов. Вес w получается с помощью super_block_scale & importance matrix, что даёт 2,31 бита на вес. |
| IQ1_S | HF | 1-битовая квантизация (q). Суперблоки из 256 весов. Вес w получается с помощью super_block_scale & importance matrix, что даёт 1,56 бита на вес. |
| IQ1_M | GH | 1-битовая квантизация (q). Суперблоки из 256 весов. Вес w получается с помощью super_block_scale & importance matrix, что даёт 1,75 бит на вес. |
| TQ1_0 | GH | Тернарная квантизация. |
| TQ2_0 | GH | Тернарная квантизация. |
| MXFP4 | GH | 4-битный Microscaling Block Floating Point. |
| Устаревшие типы | ||
| Q8_0 | GH | 8-битное квантование с округлением до ближайшего (q). Каждый блок содержит 32 веса. Формула веса: w = q * block_scale. Устаревший метод квантования (на сегодняшний день не используется широко). |
| Q8_1 | GH | 8-битное квантование с округлением до ближайшего (q). Каждый блок содержит 32 веса. Формула веса: w = q * block_scale + block_minimum. Устаревший метод квантования (на сегодняшний день не используется широко). |
| Q5_0 | GH | 5-битное квантование с округлением до ближайшего (q). Каждый блок содержит 32 веса. Формула веса: w = q * block_scale. Устаревший метод квантования (на сегодняшний день не используется широко). |
| Q5_1 | GH | 5-битное квантование с округлением до ближайшего (q). Каждый блок содержит 32 веса. Формула веса: w = q * block_scale + block_minimum. Устаревший метод квантования (на сегодняшний день не используется широко). |
| Q4_0 | GH | 4-битное квантование с округлением до ближайшего (q). Каждый блок содержит 32 веса. Формула веса: w = q * block_scale. Устаревший метод квантования (на сегодняшний день не используется широко). |
| Q4_1 | GH | 4-битное квантование с округлением до ближайшего (q). Каждый блок содержит 32 веса. Формула веса: w = q * block_scale + block_minimum. Устаревший метод квантования (на сегодняшний день не используется широко). |
Если в таблице выше есть неточности, пожалуйста, создайте PR для этого файла.
Update on GitHub