GGUF
GGUF — двоичный формат файла, предназначенный для хранения переносимых моделей машинного обучения, предназначенных для использования в библиотеке GGML и совместимых с ней. Является обобщением предшествующих форматов GGML, GGMF, GGJT, заменяя их.
В настоящее время существуют следующие форматы файлов GGML для LLM:
- GGML (без версионирования): базовый формат без версионирования и выравнивания.
- GGMF (с версионированием): то же, что и GGML, но с версионированием. Существует только одна версия.
- GGJT выравнивает тензоры для использования с mmap. Версии v1, v2 и v3 идентичны, но последние используют другую схему квантования, несовместимую с предыдущими версиями.
- GGUF - последняя версия формата.
GGML в основном используется в примерах в `ggml`, тогда как GGJT используется в моделях `llama.cpp`.
Внутреннее устройствоПравить
GGUF — это формат, основанный на существующем GGJT, но вносящий несколько изменений для большей расширяемости и удобства использования.
Важные особенности реализации:
- Развертывание в виде одного файла: модели легко распространяются и загружаются, не требуя дополнительных внешних файлов.
- Расширяемость: новые функции могут быть добавлены к исполнителям на основе GGML/новая информация может быть добавлена в модели GGUF без нарушения совместимости с существующими моделями.
- Совместимость с mmap: модели можно загружать с помощью mmap, что радикально ускоряет их использования.
- Простота использования: модели можно легко загружать и сохранять, используя небольшой объём кода, без необходимости использования внешних библиотек, независимо от используемого языка.
- Полная информация: вся информация, необходимая для загрузки модели, содержится в файле модели, и пользователю не требуется предоставлять дополнительную информацию.
Ключевым отличием GGJT от GGUF является использование структуры «ключ-значение» для гиперпараметров (теперь называемой метаданными), а не списка нетипизированных значений. Это позволяет добавлять новые метаданные без нарушения совместимости с существующими моделями и аннотировать модель дополнительной информацией, которая может быть полезна для вывода или идентификации модели.
Соглашение об именовании моделейПравить
GGUF следует соглашению об именовании `<BaseName><SizeLabel><FineTune><Version><Encoding><Type><Shard>.gguf`, где каждый компонент разделяется символом `-`, если он присутствует.
В конечном счёте, это сделано для того, чтобы упростить для пользователей быстрый доступ к наиболее важным деталям модели.
В связи с разнообразием имён существующих файлов gguf, он не предназначен для идеального анализа в полевых условиях.
Компоненты:
- BaseName: Описательное имя базового типа или архитектуры модели. Его можно получить из метаданных gguf general.basename, заменив тире пробелами.
- SizeLabel: Весовой класс параметра[1], представленный как <expertCount>x<count><scale-prefix>. Его можно получить из метаданных gguf general.size_label, если они доступны, или рассчитать, если они отсутствуют. Поддерживается округлённая десятичная точка в счётчике с однобуквенным префиксом масштаба для упрощения возведения в степень с плавающей запятой, как показано ниже: Q: Квадриллион параметров. T: Триллион параметров. B: Миллиард параметров. M: Миллион параметров. K: Тысяча параметров. При необходимости можно добавить дополнительные <attributes><count><scale-prefix> для указания других интересующих вас атрибутов.
- FineTune: Описательное имя для цели тонкой настройки модели (например, Chat, Instruct и т. д.). - Его можно получить из метаданных gguf general.finetune, заменив тире пробелами.
- Версия: (Необязательно) Обозначает номер версии модели в формате v<Major>.<Minor> Если у модели отсутствует номер версии, предполагается v1.0 (первый публичный выпуск). Эту информацию можно получить из метаданных gguf general.version
- Кодировка: Указывает схему кодирования весов, примененную к модели. Содержание, сочетание типов и расположение определяются пользовательским кодом и могут меняться в зависимости от потребностей проекта.
- Тип: Указывает тип файла gguf и его назначение. Если параметр отсутствует, то по умолчанию это типичный файл тензорной модели gguf. LoRA`: Файл GGUF является адаптером LoRA. vocab: Файл GGUF, содержащий только данные словаря и метаданные.
- Шард: (Необязательно) Указывает и обозначает, что модель разделена на несколько шардов, в формате <ShardNum>-of-<ShardTotal>. ShardNum: Позиция шарда в этой модели. Должна состоять из 5 цифр, дополненных нулями. Номер шарда всегда начинается с 00001 (например, первый шард всегда начинается с 00001-of-XXXXX, а не с 00000-of-XXXXX). ShardTotal: Общее количество сегментов в этой модели. Должно состоять из 5 цифр, дополненных нулями.
Сравнение с другими форматами файлов машинного обученияПравить
СсылкиПравить
ПримечанияПравить
- ↑ Полезно для понимания сравнительных таблиц с разными моделями.