Найти в Дзене

Выбор квантованных моделей FLUX (GGUF, NF4, Q8, Q6, Q4). Какую выбрать.

Здравствуйте, друзья!

Интерес к новой модели Flux заслуженно набирает обороты, несмотря на скептицизм гуру и поклонников Stable Diffusion 1.5. Однако, как и многие современные нейросети, Flux требует достаточно мощного оборудования для комфортной работы. Не у всех есть возможность раскошелиться на топовые видеокарты стоимостью пару сотен тысяч рублей. Но не беда! Этим вопросом уже озаботились энтузиасты, которые нашли решение в виде квантования моделей.

Что такое квантование и зачем оно нужно?

Квантование в нейронных сетях - это процесс упрощения сложных чисел, с которыми работают эти сети. Представьте, что вместо бесконечного количества оттенков серого мы используем лишь несколько основных. Это позволяет сделать вычисления быстрее и экономить память компьютера.

Зачем это нужно спросите вы, а затем, что упрощенные числа обрабатываются быстрее. Требуется меньше места для хранения данных. Нейронные сети становятся меньше и могут работать на менее мощных устройствах.

Для примера: Вместо числа 3.14159 (число Пи) мы берем просто 3. Это и есть суть квантования. Да, мы потеряем точность, но получим число, с которым проще работать.

И перед тем как приступить к главной части, хочу сразу сделать оговорку, чтобы избежать праведного негодования счастливых обладателей различных видеокарт. Вся информация, приведённая ниже, была собрана из различных источников в интернете и профильных ресурсах. Я лишь систематизировал данные в одном материале и не могу со 100% уверенностью заявлять, что определённая модель будет корректно работать на каждой видеокарте.

Отвечаю за себя: как пользователь RTX 3080 10GB и RTX 4060TI 8GB, могу сказать, что у меня работают практически все модели с различным квантованием.

Если у вас есть желание дополнить статью или поделиться своими наблюдениями, которые здесь не упомянуты, буду только рад! Оставляйте комментарии, заходите в Telegram или присоединяйтесь к нашему обсуждению в Discord.

-2

Давайте начнем с формата GGUF (Generalized Global Unified Format)

Этот алгоритм сжатия данных был создан для работы с крупными языковыми моделями и теперь доступен и для нас. GGUF помогает уменьшить объём данных, необходимых для хранения и обработки, что особенно полезно для работы с моделями на системах с ограниченной видео памятью. Хотя сжатие данных снижает требования к памяти, это может замедлить процесс восстановления данных перед вычислениями.

Для работы GGUF обязательно наличие текстовых энкодеров, Clip и VAE которые используются при работе с FLUX [DEV]. Без них GGUF модели работать не будут.

Ну и собственно основные типы квантования моделей в формате GGUF. Зная их, вы сможете понять, подходит ли вам конкретная модель или нет.

Q8: Модели с квантованием до 8 бит. Обеспечивают высокое качество при достаточно эффективном использовании ресурсов. Хороший компромисс между качеством изображения и потреблением памяти но к сожалению не скорости.

Q6_K: Модели с квантованием до 6 бит. Обладают более высоким качеством по сравнению с 4-битными моделями, при этом имеют умеренную скорость генерации. Подходят для задач, где важно сбалансировать качество и скорость.

Q5_K_S/M: Модели с квантованием до 5 бит с дополнительными настройками точности. Обеспечивают улучшенное качество по сравнению с Q4 и Q3 при минимальном снижении скорости генерации. Используются для более требовательных задач, где важно сохранить высокое качество при допустимом снижении производительности.

Q4: Модели с квантованием до 4 бит. Требуют меньше ресурсов, что делает их идеальными для систем с ограниченной видеопамятью. Возможна потеря качества из-за снижения точности. Подходят для работы на слабых видеокартах.

Q4_K_S/M: Модели с квантованием до 4 бит с настройками точности (S/M). Хорошо сбалансированы по размеру и качеству, что делает их эффективными для использования в ограниченных ресурсах. Подходят для пользователей, которым нужно сбалансировать качество и производительность в условиях ограниченных ресурсов.

Q3_K_S/M/L: Модели с квантованием до 3 бит с настройками точности (S/M/L). Обеспечивают минимальный размер и высокую скорость генерации. Заметное снижение качества изображения из-за низкой точности. Подходят для систем с очень ограниченными ресурсами, где приоритет — скорость, а не качество.

И прочитав это, вы, возможно, зададитесь вопросом: что значат эти буквы и цифры в названиях моделей? Объяснение довольно простое:

0 — это стандартный уровень оптимизации памяти и вычислений внутри модели, обеспечивающий максимальное качество.

1 — это улучшенная версия с оптимизацией для достижения лучшего баланса между качеством и производительностью.

Далее идут буквы K, S, M, L

K (K-Quant): Это метод смешанной точности (Mixed Precision), при котором различные части модели квантуются с разной точностью. Такой подход позволяет эффективно снижать требования к памяти и вычислительным ресурсам, сохраняя при этом высокое качество. Не все слои модели подвергаются одинаковому квантованию, что помогает достичь более высоких показателей производительности без значительных потерь в качестве.

S, M, L (S, M, L Quantization): Эти буквы обозначают различные конфигурации квантования, которые влияют на компромисс между производительностью и качеством:

  • S — ориентирован на максимальную скорость с потерей качества.
  • M — сбалансированная версия с хорошим компромиссом между качеством и производительностью.
  • L — нацелен на максимальное качество при снижении скорости.

Таким образом, выбор различных уровней точности и конфигураций помогает достичь оптимального баланса между производительностью и качеством работы модели, особенно на разных видеокартах.

Если вы не знаете что такое Смешанная точность - это метод, который позволяет использовать разные уровни квантования для разных частей нейронной сети. Например, веса могут быть квантованы с использованием 8 бит, а активации - с использованием 4 бит. Это позволяет достичь более тонкой настройки и баланса между точностью и производительностью модели.

Рекомендации по выбору GGUF моделей:

4-6 ГБ VRAM - модели Q3 или Q4

8 ГБ VRAM - модели Q4, Q5, Q6

10-12 ГБ VRAM - модели Q5, Q6 и Q8

При наличии видеокарты с 16 - 24 ГБ VRAM и больше я не вижу смысла в использовании квантованных моделей. Но это мое субъективное мнение.

-3

Далее у нас формат NF4 (BNB)

NF4 формат, использующий библиотеку Bitsandbytes (BNB). Этот алгоритм заменяет стандартные операции PyTorch на более быстрые низкоразрядные ядра CUDA, что делает вычисления более быстрыми и эффективными. В нем используется 4-битное квантование, что подразумевает под собой увеличение скорости генерации с меньшим использованием памяти и достаточно хорошим уровнем точности.

Модели NF4 хорошо оптимизированы для GPU с 6-12 ГБ памяти. В них уже встроены текстовый энкодер, clip и vae. Использовать модели в этом формате можно на видеокартах RTX 2060, RTX 2070, RTX 2080, RTX 3050, RTX 3060, RTX 3070, RTX 4060 и RTX 4070.

Хотя я сталкивался с противоречивой информацией, что модель не работает на видеокартах серий 1000 и большинстве видеокарт серии 2000 но это информация из раздела "бабка Зина сказала ..."и как на самом деле обстоят дела у владельцев этих карт сказать не могу. Но на форумах то и дело мелькают цифры и буквы про GTX 1070.

Если вам нужно хорошее качество и скорость обработки, NF4 станет вашим лучшим выбором.

-4

FP16 и FP8: Модели FP16 и FP8 с плавающей точкой обеспечивают отличное качество, но требуют значительно больше ресурсов.

  • FP16 (16-bit Floating Point): Обеспечивает высочайшую точность и подходит для видеокарт с объемом памяти 16-80 ГБ, таких как RTX 4080, RTX 3090, RTX 4090 или A100.
  • FP8 (8-bit Floating Point): Работает на тех же мощных видеокартах, что и FP16, но обеспечивает более быструю обработку данных. Подходит для высокопроизводительных систем, где важна скорость.

Выбор модели квантования зависит от ваших целей и характеристик видеокарты. Квантование позволяет найти наилучшее соотношение между производительностью и точностью, делая работу с нейросетями возможной на различном оборудовании.

-5

На этом закончу. Надеюсь, что статья помогла вам хоть немного разобраться в том, как выбрать оптимальную модель для вашего оборудования. Если у вас есть опыт работы с квантованными моделями, обязательно делитесь им в комментариях. Будет интересно обсудить, какие решения оказались для вас самыми удачными и с какими проблемами вы столкнулись.

Ну и конечно же, если вам понравилась эта статья, буду рад вашим подпискам, комментариям и лайкам. Недавно я запустил Discord-канал и постараюсь поддерживать его насколько возможно, там вы сможете не только следить за новостями, но и общаться, делиться опытом и приобретать новые знания о нейросетях. Чтобы всегда быть в курсе моих новых материалов, подписывайтесь на мой Boosty, Telegram-канал и страницу "ВКонтакте". Пока что нас немного, но я надеюсь, что с течением времени сообщество станет больше. Это станет отличной мотивацией для меня активно работать и над другими социальными сетями.

Наука
7 млн интересуются