Браузер как AI-станция: почему это не безумие
Вы смотрите на свою видеокарту с 6 ГБ VRAM и думаете: "20 миллиардов параметров? Даже не мечтай". Обычная логика говорит, что для 20B модели в FP16 нужно 40 ГБ памяти. С квантованием Q4 — 10 ГБ. А у вас всего шесть.
Но браузерная революция меняет правила игры. Вместо того чтобы гоняться за дорогим железом, можно использовать то, что уже есть у каждого — веб-браузер. И нет, это не про облачные API. Это про локальный запуск прямо в Chrome или Firefox.
Забудьте про "минимальные требования". 6 ГБ VRAM — это не предел, а отправная точка для запуска 20B моделей. Секрет в том, что браузер умеет работать с WebGPU и распределять нагрузку между VRAM и RAM.
Open WebUI: красивый интерфейс или реальный инструмент?
Open WebUI позиционирует себя как "ChatGPT, но локальный". Красиво звучит, но что под капотом? Это веб-интерфейс, который общается с бэкендом вроде Ollama или llama.cpp. Сам по себе он модель не запускает — он лишь показывает её.
И вот первая ловушка: новички устанавливают Open WebUI, видят красивый интерфейс, но не понимают, что модель нужно запускать отдельно. Получается красивый пустой корабль без двигателя.
1 Выбираем модель, которая поместится в 6 ГБ
Математика простая: 20B параметров × 4 бита (Q4) ÷ 8 бит в байте = 10 ГБ. Но мы хотим 6 ГБ. Значит, нужно либо сильнее квантовать, либо выбрать MoE-архитектуру.
Вот что реально работает на 6 ГБ VRAM:
| Модель | Параметры | Формат | Размер | Качество |
|---|---|---|---|---|
| Qwen2.5-7B-Instruct | 7B | Q4_K_M | ~4 ГБ | Отличное |
| Llama 3.2-3B-Instruct | 3B | Q5_K_M | ~2 ГБ | Хорошее |
| Granite 4 Small | 30B (MoE) | Q4_0 | ~8 ГБ | Отличное |
Видите Granite 4 Small? 30B параметров, но 8 ГБ. Как так? Это MoE-архитектура — одновременно активны только 8-12 миллиардов параметров. Остальные спят в RAM. Если у вас есть 32 ГБ оперативки, эта модель идеальна. Подробнее про MoE-архитектуры мы писали в гайде по запуску Granite 4 Small.
2 Настраиваем Ollama — движок под капотом
Open WebUI чаще всего работает с Ollama. Это не самый эффективный движок, но самый простой. Установка — одна команда:
curl -fsSL https://ollama.com/install.sh | sh
Теперь запускаем модель. Но не ту, что первая попадётся. Для 6 ГБ VRAM нужны специальные флаги:
ollama run qwen2.5:7b-instruct-q4_K_M
Почему q4_K_M, а не q4_0? Потому что K_M варианты лучше сохраняют качество при том же размере. Разница в 0.5 ГБ, но качество ответов заметно выше.
Не запускайте модель без указания квантования! Ollama по умолчанию может взять полную версию, которая не поместится в память.
3 Ставим и настраиваем Open WebUI
Теперь, когда модель работает, подключаем интерфейс. Docker-установка — самый чистый способ:
docker run -d -p 3000:8080 \
-v open-webui:/app/backend/data \
--name open-webui \
ghcr.io/open-webui/open-webui:main
Открываем http://localhost:3000, создаём аккаунт. В настройках добавляем Ollama как провайдера (обычно он определяется автоматически).
И вот тут многие совершают ошибку: пытаются загрузить модель через интерфейс. Не надо. Модель уже запущена в Ollama. Open WebUI её просто увидит.
Альтернативы: когда Open WebUI не подходит
Open WebUI красив, но тяжёл. Он написан на Python, жрёт память и иногда тормозит. Что делать, если хочется легче?
Ollama WebUI — минималистичный вариант
Тот же Ollama, но с другим интерфейсом. Устанавливается через Docker:
docker run -d -p 3001:3000 \
-v ollama-webui:/app/data \
--name ollama-webui \
ghcr.io/ollama-webui/ollama-webui:main
Вес контейнера в 3 раза меньше. Интерфейс проще, но работает быстрее. Нет регистрации, нет сложных настроек. Запустил модель в Ollama, открыл браузер — работает.
Свой фронтенд на JavaScript + WebGPU
Если вы готовы кодить, самый эффективный вариант — написать свой интерфейс. WebGPU позволяет запускать модели прямо в браузере, без бэкенда. Но есть нюанс: модель должна быть конвертирована в специальный формат.
Пример с Transformers.js:
import { pipeline } from '@xenova/transformers';
const generator = await pipeline('text-generation', 'Qwen/Qwen2.5-7B-Instruct');
const output = await generator('Explain quantum computing');
Проблема в том, что 7B модель в браузере — это 14 ГБ загрузки. Не каждый пользователь будет ждать. Но для внутренних инструментов — отличный вариант.
Оптимизация: как выжать максимум из 6 ГБ
Даже с правильно выбранной моделью память может закончиться. Вот хитрости, которые работают:
- Контекстное окно меньше — не ставьте 128k токенов, если хватит 4k. Каждый токен в контексте занимает память.
- Пакетный размер = 1 — не генерируйте несколько ответов параллельно. Один поток — меньше пиковая память.
- Кэш KV в RAM — если у вас много оперативки, перенесите кэш внимания из VRAM в RAM. В llama.cpp это флаг
--ngl 20(оставить 20 слоёв в VRAM, остальное в RAM).
Про оптимизацию памяти для больших моделей мы подробно писали в статье про запуск 355B модели на старом железе. Те же принципы работают и здесь.
Ошибки, которые сломают ваш запуск
Видел десятки попыток. Вот что не работает:
| Ошибка | Почему происходит | Как исправить |
|---|---|---|
| "CUDA out of memory" при запуске | Модель не помещается в VRAM | Возьмите меньшее квантование (Q3 вместо Q4) или меньшую модель |
| Медленная генерация | Слишком много слоёв в RAM | Увеличьте --ngl (больше слоёв в VRAM) |
| Open WebUI не видит модель | Ollama работает на другом порту | В настройках Open WebUI укажите правильный URL Ollama |
Что в итоге: браузер vs нативное приложение
Open WebUI и аналоги — это компромисс. Вы получаете красивый интерфейс и простоту настройки, но теряете в эффективности. На 6 ГБ VRAM каждый мегабайт на счету.
Мой совет: если хотите максимум производительности — используйте чистый llama.cpp с консольным интерфейсом. Если нужен удобный интерфейс — Ollama WebUI (он легче Open WebUI). Если делаете инструмент для команды — Open WebUI с его настройками прав доступа.
И помните: 20B модель на 6 ГБ VRAM — это не про максимальное качество. Это про баланс. Вы жертвуете 5-10% качества ответов, но получаете приватность, нулевую задержку и полный контроль. Для большинства задач — код-генерация, анализ текстов, чат — разницы вы не заметите.
А через год, когда WebGPU созреет, мы будем запускать 70B модели прямо в браузере. Без установки, без Docker, просто открыл страницу и работает. Но это уже другая история.