Cat

Бесплатный аналог ChatGPT на своём ПК

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

Все статьи

Icon Link

Реклама

Icon Link
Полезные инструменты proDream 28 Ноябрь 2024 Просмотров: 106

Сегодня искусственным интеллектом уже никого не удивишь. Из "каждого утюга" звучат слова: "AI, AI, AI". Однако далеко не все могут внятно объяснить, для чего этот AI нужен. Для нас, разработчиков, взаимодействие с искусственным интеллектом чаще всего сводится к использованию языковых моделей (LLM, Large Language Models), таких как GPT (Generative Pre-trained Transformer).

Это могут быть продукты OpenAI, например ChatGPT, или разработки других компаний: Gemini от Google, Claude от Anthropic, YandexGPT от Яндекса (не путать с Алисой), GigaChat от СБЕР и другие. Выбор конкретной модели обычно определяется задачами и доступным бюджетом.

Чаще всего эти модели работают "где-то там" — на удалённых серверах, доступ к которым осуществляется через браузер или API. Другими словами, для работы с такими моделями всегда требуется интернет-соединение. Не стоит забывать о конфиденциальности: всё, что передаётся в такие сервисы, может быть обработано, сохранено и использовано компанией, предоставляющей доступ (а иногда даже утекать 😉).

Что же делать, если нужен "цифровой помощник", который работает оффлайн или интегрируется во внутреннюю корпоративную систему, исключая риск утечек данных? В таких случаях на помощь приходят квантованные модели — специально оптимизированные для работы в локальных средах.

Пример помощника, о котором сегодня пойдет речь: 

 

Дисклеймер

Я не являюсь специалистом в области машинного обучения (ML) или науки о данных (DS). То, что описано ниже, — это моя попытка разобраться, как всё устроено, и поделиться этим с вами. Если вы найдете неточности или ошибки в терминологии или описании, пожалуйста дайте об этом знать.

Перед началом обозначу используемое оборудование и окружение:

  • CPU: AMD Ryzen 3600
  • GPU: NVIDIA RTX 3060 Ti (8 ГБ)
  • RAM: 32 ГБ DDR4 3200 МГц
  • OS: GNU/Linux Debian 12

Всё описанное выполняется на GNU/Linux Debian 12. Однако, на Windows или macOS это также должно работать без значительных изменений. 
Особенность для пользователей macOS: большинство инструментов оптимизировано для компьютеров с процессорами Apple M-серии. Если у вас устройство на базе Intel (включая хакинтош), некоторые шаги могут быть несовместимы или менее производительны.

 

Что такое квантизация моделей?

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

Основная цель — сократить размер модели и ускорить её вычисления. В этом процессе вещественные числа (например, 32-битные или 64-битные) заменяются на целые числа меньшего разряда (например, 8-битные).

Дополнительную информацию можно найти в статье на Хабре.

 

Как работает квантизация?

  1. Выбор точности: Определяется степень уменьшения разрядности чисел (например, до 8 или 16 бит).
  2. Диапазон значений: Исходные веса модели распределяются по интервалам, каждый из которых сопоставляется определённому целому числу.
  3. Округление: Значения весов модели округляются до ближайших значений из сокращённого диапазона.
  4. Калибровка (опционально): Модель донастраивается на калибровочных данных для минимизации потерь точности.

 

Преимущества квантизации

  • Уменьшение размера модели: Сокращение объёма данных упрощает хранение и передачу.
  • Ускорение вычислений: Операции над числами меньшей разрядности выполняются быстрее, что ускоряет инференс (предсказание).
  • Экономия ресурсов: Сокращение объёма памяти и потребляемой энергии делает модели пригодными для работы на устройствах с ограниченными ресурсами (например, смартфонах или IoT-устройствах).

 

Ограничения квантизации

  • Потеря точности: Модель может хуже предсказывать результаты. Современные методы минимизируют эти потери, но они всё же могут быть ощутимы в некоторых случаях.

 

Основные виды квантизации

  1. Полная квантизация: Все веса модели представляются в сокращённом диапазоне (например, целыми числами).
  2. Пост-обучающая квантизация (PTQ): Разные слои модели квантизуются с учётом их важности, чтобы сбалансировать точность и производительность.
  3. Динамическая квантизация: Веса остаются в исходном формате, но входные данные и промежуточные результаты квантизуются во время инференса.

 

Типы квантизации и их свойства

ТипБит на весРазмер модели относительно оригиналаПримечания
Q2_021/8Минимальный размер, низкая точность. Используется для устройств с жёсткими ограничениями.
Q4_041/2Популярный компромисс между точностью и сжатием.
Q8_081Почти равен оригинальной модели по размеру, обеспечивает максимальную точность после квантизации.

 

Специальные обозначения

  • "0": Симметричное распределение значений вокруг нуля.
  • "K", "M", "L": Обозначают уникальные параметры распределения весов, используемые в сложных вариантах квантизации (например, Q4_K_M или Q6_K_L).

 

Пример:

  • Q4_0: Квантизация весов до 4 бит с симметричным распределением.
  • Q6_K_L: Более сложный метод, где 6 бит используется для кодирования распределённых групп значений.

 

Где искать модели?

Информацию о существующих языковых моделях, их рейтингах и применении можно взять из множества источников: от Telegram-каналов, посвящённых искусственному интеллекту, до специализированных сайтов вроде Хабра, непосредственно модели доступны на LLM Explorer и Hugging Face.

 

LLM Explorer

LLM Explorer — это веб-приложение, созданное для анализа и исследования доступных крупных языковых моделей (LLMs).

Ключевые функции LLM Explorer:

  1. Обширный каталог моделей: Предоставляет детальную информацию о различных языковых моделях, включая их архитектуру, размер и ключевые особенности.
  2. Сравнение производительности: Позволяет анализировать модели по таким параметрам, как точность, скорость выполнения и количество параметров.
  3. Визуализация данных: Интерактивные графики и диаграммы облегчают восприятие характеристик моделей.
  4. Интеграция с Hugging Face: Данные из репозитория Hugging Face можно использовать напрямую для анализа и сравнения.

 

Hugging Face

Hugging Face — это универсальная платформа для машинного обучения и искусственного интеллекта, которая предлагает широкий спектр предобученных моделей, инструментов и библиотек.

Основные возможности Hugging Face:

  1. Репозиторий моделей: Более 25 тысяч моделей для задач обработки естественного языка (NLP), компьютерного зрения и других областей машинного обучения.
  2. Библиотека Transformers: Python-библиотека, которая упрощает разработку и обучение моделей. Поддерживает архитектуры вроде BERT, GPT, ViT и предоставляет готовые модели для множества задач.
  3. Spaces: Интерактивная платформа для развертывания приложений, демонстраций и анализа данных. Идеально подходит для создания визуальных интерфейсов на основе ML-моделей.
  4. Datasets библиотека: Широкий выбор наборов данных для обучения и тестирования, включая структурированные и неструктурированные данные.
  5. Продукты и сервисы:
    • Inference API: Выполнение запросов к моделям через API без локальной установки.
    • Инструменты для обучения моделей: Поддержка распределённого обучения на больших данных с использованием облачных ресурсов.

 

Как выбрать модель?

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

 

Ключевые аспекты выбора модели

  1. Цель использования Определите задачу: это может быть обработка текста, генерация изображений или решение конкретной проблемы, например, программирование. Задача определяет требования к модели, например:
    • Нужна высокая точность для аналитики.
    • Достаточно средней точности для чат-бота.
  2. Точность и размер
    • Крупные модели обеспечивают высокую точность, но требуют значительных ресурсов.
    • Меньшие модели подходят для устройств с ограниченными ресурсами, хотя их точность может быть ниже.
  3. Совместимость 
    Убедитесь, что модель поддерживает выбранные инструменты: TensorFlow, PyTorch, ONNX и др. Например, некоторые модели оптимизированы только под GPU от NVIDIA.
  4. Ресурсные ограничения 
    Узнайте, сколько видеопамяти (GPU memory), оперативной памяти (RAM) и вычислительных мощностей потребуется. Эти параметры зависят от размера модели и формата квантизации.

 

Какие ресурсы требует модель?

При работе с моделью используются:

  1. Видеопамять (GPU memory)
    • Хранение весов модели.
    • Ускоренные вычисления на GPU.
    • Запуск на устройствах с ограниченной видеопамятью может быть невозможен.
  2. Оперативная память (RAM)
    • Используется для загрузки модели, обработки входных данных и хранения промежуточных результатов.
    • Меньшие модели требуют меньше RAM, что полезно для серверов или мобильных устройств.
  3. Вычислительная мощность (CPU/GPU)
    • Крупные модели могут занимать часы или дни на менее мощных устройствах.

 

Как размер модели влияет на ресурсы?

  1. Объём параметров
    • Модели с миллиардами параметров требуют десятки гигабайт видеопамяти (например, 13B или 30B параметров).
    • Модели меньшего размера (например, 7B) работают на потребительских видеокартах с 8–12 ГБ.
  2. Квантизация Преобразование весов модели в меньшие разряды (например, из 32-битных чисел в 8-битные) снижает нагрузку на память:
    • Q4_0 (4 бита): экономит видеопамять вдвое по сравнению с 8-битной моделью.
    • Q8_0 (8 бит): практически без потери точности, но меньше оптимизации.

 

Пример: 
Модель GPT с параметрами 13B потребует:

  • Около 13 ГБ видеопамяти в 8-битном представлении.
  • Всего 6.5 ГБ видеопамяти в 4-битной квантованной версии.

 

Что происходит при нехватке памяти?

Видеопамять

Если GPU не может вместить модель:

  • Работа перемещается на CPU, что сильно замедляет выполнение.
  • Возможны ошибки загрузки модели.
    Решения:
  • Использовать меньшие модели.
  • Применить квантизацию (например, Q4_0 вместо Q8_0).
  • Разделить модель на части для запуска на нескольких GPU.

 

Оперативная память 
Нехватка RAM может привести к сбоям загрузки модели или длительным задержкам.
Решения:

  • Убедитесь, что устройство имеет достаточную RAM.
  • Используйте меньшие форматы данных или модели.

 

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

  1. Оцените ресурсы Узнайте доступный объём видеопамяти и оперативной памяти.
    • Для 8–12 ГБ GPU: используйте 7B модели с квантизацией (например, Q4_0).
    • Для 16–24 ГБ GPU: подойдут 13B или даже 30B с более высокой точностью.
  2. Подберите подходящий формат
    • Квантизация снижает ресурсные затраты.
    • Используйте динамическую квантизацию для мобильных приложений.
  3. Тестируйте
    Протестируйте модель на реальных задачах. Компромисс между точностью и ресурсами должен удовлетворять требованиям задачи.

 

Скачивание модели

После выбора модели, совместимой с вашим оборудованием, необходимо скачать её GGUF-версию — формат квантированных моделей. Этот формат уменьшает размер модели и снижает требования к ресурсам.

Самый популярный ресурс для скачивания моделей — это Hugging Face.

Открываем сайт и вводим в поиск название нужной модели, например: 
Qwen/Qwen2.5-Coder-7B-Instruct-GGUF.

 

На странице модели обратите внимание на правый блок с разделом GGUF:

 

В нём перечислены доступные форматы, такие как Q4_0, Q5_0, и другие. Выбираем нужный формат (например, Q4_0) и нажимаем на него.

 

На открывшейся странице будет информация о параметрах версии и кнопка "Download". Нажимаем на неё и дожидаемся завершения скачивания.

 

Что учитывать при скачивании?

  1. Размер модели. Обратите внимание на размер файла:
    • Большие модели могут занимать десятки гигабайт даже в сжатом формате.
    • Убедитесь, что у вас достаточно места на диске.
  2. Скорость интернета. 
    Если файл слишком большой, скачивание может занять много времени. Используйте менеджеры загрузок, чтобы избежать прерываний.

 

Использование модели

Квантированные модели можно применять по-разному:

  • В качестве чата (самый распространённый сценарий).
  • В проектах, интегрируя модель через код.
  • Запуская веб-сервер для работы с моделью по API.

В этом посте мы рассмотрим только использование модели как чата. Если вам интересны другие сценарии, дайте знать в комментариях!

Мы разберём два инструмента: llama.cpp и LM Studio.

 

Использование llama.cpp

llama.cpp — это лёгкий и кроссплатформенный инструмент для работы с моделями семейства LLaMA (Large Language Model Meta AI). Его основное преимущество — эффективная работа на процессорах, что делает его идеальным для пользователей без мощных видеокарт.

Ключевые особенности llama.cpp:

  • Оптимизация под CPU — позволяет запускать модели без GPU.
  • Компактность — поддерживает квантованные версии моделей (например, 4-bit и 8-bit), снижая требования к оперативной памяти.
  • Кроссплатформенность — работает на Windows, macOS, Linux и Android.
  • Интеграция — предоставляет API для использования в других приложениях.

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

Репозиторий проекта.

Скачиваем программу с актуальной страницы релизов:

  • Для Windows с Nvidia GPU — выбираем win-cuda-cu12.2.0-x64.
  • Для Linux — используем ubuntu-x64. Подойдёт для большинства дистрибутивов.
  • Для macOS — выбираем версию для вашего процессора: macos-x64 (Intel) или macos-arm64 (M-процессоры).

После скачивания распаковываем архив, переходим в директорию и открываем терминал.

llama.cpp поддерживает запуск веб-сервера с простым интерфейсом. Для его запуска используем команду:

./llama-server -m qwen2.5-coder-7b-instruct-q4_0.gguf --port 8080

 

Здесь qwen2.5-coder-7b-instruct-q4_0.gguf — это путь до модели, которую вы скачали. В данном примере модель находится в той же директории.

После запуска в терминале появится процесс инициализации. Когда вы увидите строку: 
main: server is listening on http://127.0.0.1:8080 - starting the main loop 
это означает, что сервер успешно запущен.

 

Открываем в браузере адрес http://127.0.0.1:8080. Появится веб-интерфейс:

 

Теперь можно использовать модель как обычный чат:

 

Использование LM Studio

LM Studio — удобный графический интерфейс для работы с локальными языковыми моделями, ориентированный на пользователей, которые предпочитают визуальное взаимодействие вместо работы через терминал.

Ключевые особенности LM Studio:

  • Поддержка локальных моделей — оптимизирована для LLaMA и совместимых моделей.
  • Интуитивный интерфейс — простота настройки и использования даже для начинающих.
  • Гибкость параметров — позволяет менять настройки генерации текста (длина ответа, температура, частота и др.).
  • Работа оффлайн — обеспечивает независимость от интернета, повышая конфиденциальность.

Официальный сайт проекта.

На главной странице скачиваем версию для вашей операционной системы.

  • Для Windows программа устанавливается стандартным способом.
  • Для Linux перед запуском нужно выдать файлу права на выполнение:
  chmod +x ./LM_Studio-0.3.5.AppImage

 

(замените LM_Studio-0.3.5.AppImage на имя вашего файла).

После запуска вас встретит дружелюбный интерфейс: 

 

Язык приложения можно изменить в настройках (иконка шестерёнки в правом нижнем углу).

 

Добавление локальной модели

LM Studio использует строгие правила для распознавания моделей. Чтобы добавить модель:

  1. Создайте удобную директорию для моделей.
  2. В этой директории создайте папку с именем поставщика модели, например, Qwen.
  3. Внутри создайте папку с названием модели из Hugging Face, например, Qwen2.5-Coder-7B-Instruct-GGUF.
  4. Поместите файл модели (GGUF) в эту папку.
  5. В приложении откройте вкладку "Мои модели" (иконка папки слева-сверху).
  6. Рядом с "Каталог моделей" нажмите три точки -> "Изменить..." и укажите созданную директорию. 

 

Скачивание модели через LM Studio

Вместо ручного скачивания, LM Studio позволяет загрузить модели напрямую. Для этого:

  1. Перейдите на вкладку с лупой (четвёртая слева-сверху).
  2. Откроется список моделей с Hugging Face.
  3. Найдите нужную модель, выберите формат квантирования и нажмите "Download". 

 

После завершения скачивания модель появится в списке "Мои модели". 

 

Запуск чата

Для запуска чата:

  1. Перейдите на первую вкладку.
  2. Вверху по центру нажмите "Выберите модель для загрузки". Откроется список доступных моделей. 
  3. Выберите модель и настройте параметры запуска, например, длину контекста (чем больше контекст, тем выше требования к видеокарте). 
  4. Нажмите "Загрузить модель". После загрузки модель готова к использованию.

Чат доступен в этом же окне: 

Теперь можно задавать вопросы и общаться с моделью!

 

Заключение

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

P.S. Было бы неправильно писать пост про LLM и не воспользоваться им. Часть поста написана с использованием Qwen2.5-Coder-32B-Instruct-GGUF, а затем проверена на ошибки ChatGPT. Безусловно, не стоит слепо полагаться на выдаваемый моделью результат. Всегда нужно проверять и править, тем не менее, LLM-модели оказывают хорошее подспорье в процессе, объясняя нюансы или просто правя текст.

Автор

  • 29 ноября 2024 г. 17:20

    Спасибо за гайд! Было интересно почитать, на деле оказалось проще, чем установка self-hosted livesync для Obsidian

  • Реклама