GGUF

(перенаправлено с «GGML (формат файла)»)

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, он не предназначен для идеального анализа в полевых условиях.

Компоненты:

  1. BaseName: Описательное имя базового типа или архитектуры модели. Его можно получить из метаданных gguf general.basename, заменив тире пробелами.
  2. SizeLabel: Весовой класс параметра[1], представленный как <expertCount>x<count><scale-prefix>. Его можно получить из метаданных gguf general.size_label, если они доступны, или рассчитать, если они отсутствуют. Поддерживается округлённая десятичная точка в счётчике с однобуквенным префиксом масштаба для упрощения возведения в степень с плавающей запятой, как показано ниже: Q: Квадриллион параметров. T: Триллион параметров. B: Миллиард параметров. M: Миллион параметров. K: Тысяча параметров. При необходимости можно добавить дополнительные <attributes><count><scale-prefix> для указания других интересующих вас атрибутов.
  3. FineTune: Описательное имя для цели тонкой настройки модели (например, Chat, Instruct и т. д.). - Его можно получить из метаданных gguf general.finetune, заменив тире пробелами.
  4. Версия: (Необязательно) Обозначает номер версии модели в формате v<Major>.<Minor> Если у модели отсутствует номер версии, предполагается v1.0 (первый публичный выпуск). Эту информацию можно получить из метаданных gguf general.version
  5. Кодировка: Указывает схему кодирования весов, примененную к модели. Содержание, сочетание типов и расположение определяются пользовательским кодом и могут меняться в зависимости от потребностей проекта.
  6. Тип: Указывает тип файла gguf и его назначение. Если параметр отсутствует, то по умолчанию это типичный файл тензорной модели gguf. LoRA`: Файл GGUF является адаптером LoRA. vocab: Файл GGUF, содержащий только данные словаря и метаданные.
  7. Шард: (Необязательно) Указывает и обозначает, что модель разделена на несколько шардов, в формате <ShardNum>-of-<ShardTotal>. ShardNum: Позиция шарда в этой модели. Должна состоять из 5 цифр, дополненных нулями. Номер шарда всегда начинается с 00001 (например, первый шард всегда начинается с 00001-of-XXXXX, а не с 00000-of-XXXXX). ShardTotal: Общее количество сегментов в этой модели. Должно состоять из 5 цифр, дополненных нулями.

Сравнение с другими форматами файлов машинного обученияПравить

СсылкиПравить

ПримечанияПравить

  1. Полезно для понимания сравнительных таблиц с разными моделями.