- Формат GGUF — это эволюция GGML, оптимизированная для быстрой и эффективной загрузки языковых моделей на домашнем оборудовании.
- Это позволяет квантовать веса, уменьшая потребление видеопамяти и памяти процессора без существенной потери точности результатов.
- Он совместим с различными архитектурами и популярными инструментами, такими как llama.cpp, Ollama и LM Studio.
Если вы углублялись в мир локального искусственного интеллекта, вы, вероятно, сталкивались с файлами, заканчивающимися на .ggufЭтот формат позволяет распространять и запускать языковые модели на домашних компьютерах с помощью таких инструментов, как llama.cpp, Ollama, LM Studio или Jan.
Его популярность обусловлена тем, что он объединяет веса модели, архитектуру и различные метаданные, необходимые для ее загрузки, в один или несколько файлов. Кроме того, он поддерживает квантованные модели, которые Они занимают меньше места и требуют меньше памяти. чем их оригинальные версии в FP16 или FP32.
Благодаря этому модель, для которой изначально требовалась профессиональная видеокарта, может работать на ноутбуке или стандартном настольном компьютере. Это не означает, что любая модель совместима с любым устройством: необходимо выбрать правильный размер, квантизацию и длину контекста.
Скорость накопителя, на котором хранится файл, также играет роль. Хотя GGUF разработан для обеспечения эффективной загрузки с помощью таких методов, как отображение памяти, медленный диск все равно может повлиять на запуск. Если это занимает слишком много времени, стоит проверить, не... SSD-накопитель выступает в качестве узкого места при загрузке моделей искусственного интеллекта..
Что такое формат GGUF и для чего он используется?

GGUF — это бинарный формат, разработанный для хранения моделей для вывода результатов с помощью GGML и движков, основанных на этом проекте. Его название происходит от Универсальный файл GGML и был создан как преемник более ранних форматов, таких как GGML, GGMF и GGJT.
Его главная цель — предоставить формат. Расширяемый, легко распределяется и быстро загружается.Файл GGUF может содержать тензоры модели, а также информацию о ее архитектуре, словаре, токенизаторе, контексте и других параметрах, необходимых для ее правильной интерпретации.
К его основным характеристикам относятся:
- Хранение весов модели и метаданных.
- Совместимость с различными уровнями и методами квантования.
- Эффективная загрузка посредством отображения памяти или
mmap. - Возможность расширения метаданных без полной переработки формата.
- Простое распределение моделей, подготовленных для вывода заключений.
- Совместимость со многими архитектурами, поддерживаемыми файлом llama.cpp.
GGUF — это не программа, которая напрямую управляет искусственным интеллектом. Это... контейнер, в котором хранится модельДля его использования вам потребуется совместимый движок, например llama.cpp, или приложение, созданное на основе этой экосистемы.
Эволюция от GGML к GGUF
Чтобы понять происхождение GGUF, необходимо вернуться к GGML, библиотеке, созданной Георгием Гергановым для эффективного выполнения вычислений в области машинного обучения, особенно на процессорах и устройствах с ограниченными ресурсами.
Первоначальные форматы, связанные с проектом, развивались по мере появления новых архитектур, методов квантования и параметров. Проблема заключалась в том, что некоторые изменения могли создавать несовместимости и заставлять приложения интерпретировать различные структуры.
В GGUF была введена более понятная структура пар ключ-значение для метаданных. Это позволяет добавлять новую информацию, не нарушая функциональность приложений, которым она не нужна. В результате получается более гибкий контейнер, готовый к развитию.
Еще одно преимущество заключается в том, что информация, необходимая для распознавания и загрузки модели, может передаваться вместе с ее весами. Это уменьшает проблемы, вызванные отсутствием внешних конфигураций, некорректными словарями или параметрами, не соответствующими загруженной модели.
Тем не менее, совместимость не гарантируется навсегда. Если появляется новая архитектура, используемый движок должен обеспечивать её поддержку. Именно поэтому новый файл GGUF может не работать в более старых версиях llama.cpp, Ollama или LM Studio.
Как работает квантование модели GGUF?

Квантование предполагает представление весов модели с использованием меньшего количества битов. В исходной модели большая часть параметров может храниться в формате FP16 или BF16, в то время как квантованная версия использует 8, 6, 5, 4, 3 или даже 2-битные представления для многих своих тензоров.
Снижение точности уменьшает как размер файла, так и объем памяти, необходимый во время вывода. Это также может повысить скорость, если оборудование эффективно обрабатывает этот тип квантования. В свою очередь, Часть точности модели теряется..
GGUF не регулирует квантизацию автоматически в зависимости от вашего компьютера. Обычно для одной и той же модели используются разные файлы, и вам потребуется загрузить тот, который лучше всего подходит для вашей оперативной или видеопамяти.
Вот некоторые из наиболее распространенных вариантов:
- Q4_K_M: Обычно он предлагает хороший баланс между размером, потреблением памяти и качеством. Это разумный выбор для начала.
- Q5_K_M: Она обеспечивает несколько более высокую точность, чем Q4_K_M, но генерирует файлы большего размера и увеличивает потребление памяти.
- Q6_K: Высокое качество обеспечивается при наличии достаточного объема памяти у оборудования и отсутствии необходимости значительного уменьшения размера модели.
- Q8_0: Она поддерживает качество, очень близкое к более точным версиям, хотя и экономит меньше памяти.
- IQ4_XS: Цель состоит в том, чтобы уменьшить размер по сравнению с другими четырехбитными аналогами, сохраняя при этом приемлемое качество.
- IQ3 и IQ2: Они значительно снижают потребление, но потеря качества может быть более очевидной.
Универсально оптимального квантования не существует. Результат зависит от архитектуры, размера модели, задачи и аппаратного обеспечения. Большая модель, квантованная до трех бит, может превосходить гораздо меньшую модель при Q8_0, хотя при этом она может давать менее стабильные результаты, чем квантование той же модели до четырех или пяти бит.
Поэтому не всегда правильно отказываться от двух- или трехбитных версий. Они могут быть полезны, когда альтернативой является невозможность загрузки модели. Однако для работы, где точность имеет первостепенное значение, обычно предпочтительнее использовать двух- или трехбитные версии. оставаться на уровнях Q4_K_M, Q5_K_M или выше.
Сколько памяти требуется модели GGUF?
Размер файла служит отправной точкой, но он не отражает весь необходимый объем памяти. Во время вывода также необходимо зарезервировать место для кэша ключ-значение, контекста, вычислительных буферов и других компонентов движка.
Например, файл GGUF размером 8 ГБ не гарантирует корректной работы на графическом процессоре с ровно 8 ГБ видеопамяти. Программе потребуется дополнительная память, и если её недостаточно, ей придётся разделить часть модели между графическим процессором и оперативной памятью или запустить её с помощью центрального процессора.
Чтобы рассчитать, будет ли модель работать на вашем компьютере, необходимо учесть следующее:
- Размер файла GGUF.
- Доступные объемы оперативной и видеопамяти.
- Заданная длина контекста.
- Размер и квантование кэша ключ-значение.
- Слои, которые будут обрабатываться графическим процессором.
- Приложения, которые остаются открытыми одновременно.
Как правило, рекомендуется оставлять некоторый запас по размеру файла. Если модель не помещается полностью на графическом процессоре, llama.cpp и другие инструменты позволяют отрегулировать размер файла. загрузить на видеокарту только часть её слоёв а оставшиеся обработать с помощью ЦП.
GGUF против GPTQ, AWQ и других форматов
GGUF — не единственный способ распространения квантованных моделей. Существуют также методы и форматы, такие как GPTQ, AWQ, EXL2 и bitsandbytes, каждый из которых имеет свои собственные механизмы, ускорители и области применения.
Одно из главных преимуществ GGUF — это её способность работать в Конфигурации с процессором, видеокартой или гибридные конфигурацииЭто делает его особенно полезным в домашних компьютерах, системах с небольшим объемом видеопамяти, устройствах ARM и системах, использующих унифицированную память.
GPTQ, AWQ и EXL2, как правило, ориентированы на выполнение задач с использованием определенных графических процессоров и специализированных движков. Хотя на некоторых системах они могут обеспечить отличную производительность, они не всегда обеспечивают одинаковую гибкость в распределении ресурсов между процессором, оперативной памятью и видеокартой.
Выбор зависит от используемого приложения. Если вы работаете с llama.cpp, Ollama или LM Studio, GGUF обычно является наиболее практичным вариантом. Если у вас мощный графический процессор NVIDIA и вы используете специализированный движок, другой метод может обеспечить лучшие результаты в определенных конфигурациях.
Рекомендуемые инструменты для работы с файлами GGUF

Для начала работы вам не нужно напрямую управлять всеми параметрами файла llama.cpp. Существуют приложения, упрощающие загрузку, установку и настройку моделей.
LM Studio
LM Studio Он предоставляет графический интерфейс для поиска доступных моделей в Hugging Face, загрузки различных квантизаций и взаимодействия с ними локально. Он также может запустить сервер с конечными точками, совместимыми с API OpenAI.
Приложение позволяет выбирать объем используемого контекста, количество слоев, отправляемых на графический процессор, и другие параметры движка. Если вы сталкиваетесь с чрезмерно высоким временем отклика, вы можете применить различные настройки. Повышение производительности при медленной работе LM Studio.
оллама
оллама Он предназначен для загрузки, организации и запуска моделей с помощью простых команд. Он использует компоненты из экосистемы llama.cpp и позволяет работать как с его библиотекой, так и с файлами GGUF из других источников.
Файлы моделей позволяют настраивать базовую модель, системное сообщение, шаблон и такие параметры, как температура или контекст. Если вы хотите использовать собственный файл, вы можете следовать нашему руководству. Загрузите модель GGUF, используя файл модели..
llama.cpp
llama.cpp Это эталонный движок для работы с GGUF. Он предлагает терминальные инструменты, HTTP-сервер, совместимый с различными конечными точками API OpenAI, и множество опций для оптимизации использования ЦП, ГП и памяти.
В зависимости от системы и установленной сборки, она может использовать технологии ускорения, такие как CUDA, Metal, Vulkan, SYCL и HIP. Она также позволяет запускать модель, распределяя её слои по различным устройствам.
Ян и GPT4All
Приложения, такие как Ян и GPT4All Они также позволяют загружать или импортировать совместимые модели и использовать их через графический интерфейс. Это интересные альтернативы для тех, кто ищет простоту в использовании без ущерба для локального выполнения.
Метаданные, токенизаторы и модели разделения
Файл GGUF содержит не только квантованные веса. Он также может хранить информацию об архитектуре, количестве слоев, размере контекста, словаре, специальных токенах и шаблоне диалога.
Эти метаданные позволяют движку определить, как интерпретировать модель. Однако некорректный шаблон или устаревшая версия программы всё ещё могут вызывать неожиданные ответы, повторения или ошибки при загрузке файла.
Хотя GGUF разработан для упрощения распространения в виде одного файла, большие модели также могут быть опубликованы в нескольких частях. В этом случае отображаются имена, указывающие номер фрагмента, например:
modelo-Q4_K_M-00001-of-00003.gguf
modelo-Q4_K_M-00002-of-00003.gguf
modelo-Q4_K_M-00003-of-00003.gguf
Необходимо загрузить все фрагменты, сохранить их названия и разместить в одной папке. В противном случае движок не сможет корректно перестроить модель.
GGUF, LoRA и скорректированные модели
Модели, настроенные с использованием таких методов, как LoRA, могут быть преобразованы или распространены для использования в экосистеме GGUF. Файл llama.cpp позволяет применять определенные адаптеры LoRA во время вывода, а также существуют инструменты для их объединения с базовой моделью перед ее квантизацией.
Однако важно различать несколько понятий. LoRA и QLoRA — это методы, связанные с обучением или настройкой моделей.В то время как GGUF — это формат, ориентированный в первую очередь на хранение и выполнение данных.
QLoRA позволяет точно настраивать модели, используя квантованное представление, чтобы уменьшить потребление памяти во время обучения. После завершения этого процесса результат можно объединить, преобразовать и квантовать для создания совместимого файла GGUF, при условии, что архитектура поддерживается.
Аналогичным образом, связь с такими фреймворками, как LangChain, осуществляется не напрямую через GGUF. Интеграция выполняется через движки и серверы, такие как llama.cpp, Ollama или LM Studio, которые предоставляют доступ к модели через API или совместимую библиотеку.
Как выбрать подходящий файл GGUF
В таких репозиториях, как Hugging Face, часто можно найти множество версий одной и той же модели. Чтобы сделать правильный выбор, сначала убедитесь, что архитектура совместима с версией приложения, которое вы собираетесь использовать.
Далее проверьте следующие пункты:
- Количество параметров: Модели 14B требуется значительно больше памяти, чем моделям 7B или 8B.
- Квантование: Q4_K_M обычно является хорошей отправной точкой для большинства команд.
- Размер файла: Оно должно помещаться в доступную оперативную память или комбинацию оперативной и видеопамяти.
- Тип модели: Проверьте, является ли это базовой версией, инструкцией, версией для чата, версией для видения или специализированной версией.
- Признанный контекст: Не устанавливайте автоматически максимальный объем памяти, если она у вас ограничена.
- Шаблон диалога: Используйте рекомендованный вариант, чтобы избежать некорректно сформулированных ответов.
- Отрывки: Проверьте, не разделена ли модель на несколько файлов.
Если вы не уверены в выборе между версиями, начните с Q4_K_M. Если у модели достаточно памяти, можно попробовать Q5_K_M или Q6_K для поддержания более высокого качества. Если она по-прежнему не загружается, используйте более низкий уровень квантизации, уменьшите контекст или перенесите меньше слоев на графический процессор.
GGUF помог сделать локальный искусственный интеллект гораздо более доступным. Его сочетание метаданные, квантизация, эффективная загрузка и совместимость с различными типами оборудования. Это позволяет реализовывать модели, для которых еще несколько лет назад потребовалась бы значительная инфраструктура.
Данный формат не устраняет компьютерные ограничения и не гарантирует корректную работу какой-либо модели. Однако выбор подходящей архитектуры и квантования позволяет экспериментировать с мастерами, инструментами программирования и специализированными моделями, не полагаясь постоянно на внешние сервисы.
Я энтузиаст технологий, который превратил свои «компьютерные» интересы в профессию. Я провел более 10 лет своей жизни, используя передовые технологии и возясь со всевозможными программами из чистого любопытства. Сейчас я специализируюсь на компьютерных технологиях и видеоиграх. Это потому, что более 5 лет я пишу статьи для различных сайтов, посвященных технологиям и видеоиграм, создавая статьи, которые стремятся дать вам необходимую информацию на понятном каждому языке.
Если у вас есть какие-либо вопросы, мои знания варьируются от всего, что связано с операционной системой Windows, а также Android для мобильных телефонов. И я предан вам, я всегда готов потратить несколько минут и помочь вам решить любые вопросы, которые могут у вас возникнуть в этом мире Интернета.
