31.10.2026 796 материалов

Языковая модель без сервера: как браузер превратился в вычислительную платформу

Проект DevKit AI Playground запускает полноценный чат с языковой моделью прямо в браузере — без серверов, ключей API и оплаты за токены. Разбираемся, какое «железо» нужно для такого трюка и честно отделяем реальные возможности 135-миллионной модели от маркетинга.

Языковая модель без сервера: как браузер превратился в вычислительную платформу

Языковая модель, которая работает целиком внутри вкладки браузера, перестала быть лабораторным курьёзом: вопрос лишь в том, насколько маленькую модель вы готовы скачать и насколько слабые ответы принять в обмен на полную автономность.

Каждый, кто хоть раз тыкал в демо с нейросетью, знает эту мелкую сноску внизу страницы: «вставьте свой API-ключ», «демо ограничено по числу запросов», «ваши запросы обрабатываются на нашем сервере». То есть бесплатного чата на самом деле нет — есть маркетинговая обёртка над чужим счётом за токены. Команда DevKit решила сделать демонстрацию обратного толка: AI Playground, где языковая модель физически живёт в вашей оперативной памяти, а не в дата-центре.

Что получает обычный пользователь? Страницу на GitHub Pages, кнопку «Загрузить модель», одноразовую загрузку весов и чат без регистрации, без лимитов и без единого запроса наружу. Раз текст не покидает вкладку, разговор с такой нейросетью автоматически становится приватным — не потому, что кто-то пообещал не читать, а потому, что отправлять физически некуда.

Что стоит за такой автономностью

Технически конструкция проста до элегантности. За генерацию текста отвечает Transformers.js v3 — JavaScript-порт той самой библиотеки Hugging Face Transformers, которую привыкли использовать в Python. Модель — SmolLM-135M-Instruct от Hugging Face: компактная языковая модель на 135 миллионов параметров в инструктивной редакции, то есть заточенная под диалог, а не под голое продолжение текста.

Веса хранятся в 4-битном квантизированном формате q4f16. Звучит страшно, но объясняется бытовой аналогией: вместо того чтобы хранить каждый параметр модели как длинный «полный» номер, его округляют до короткой записи, как если бы вместо цены в рублях и копейках вы записывали просто «около трёхсот». Точность немного падает, зато файл становится на порядок компактнее. В результате веса занимают около 117 МБ, а вместе с токенизатором — то есть словарём, который разбивает текст на фрагменты, понятные модели — одноразовая загрузка составляет примерно 121 МБ. После первого визита браузер кэширует файл, так что повторные заходы уже не требуют скачивания.

Работа модели вынесена в Web Worker — отдельный фоновый поток браузера. Это принципиально для комфорта: без него генерация текста намертво заморозила бы интерфейс, и вы бы смотрели на заледеневшую страницу, пока модель дописывает фразу. С Worker'ом вкладка остаётся живой, текст прилетает токен за токеном, а на экране тикает счётчик скорости генерации в токенах в секунду.

Где именно считает ваш компьютер

Вот тут начинается чисто аппаратная часть истории. Скрипт сначала пробует задействовать WebGPU — доступ к графическому чипу прямо из браузера. Именно GPU сегодня тянет почти все нейросетевые вычисления: его архитектура с тысячами простых ядер как раз подходит для массовых матричных операций, из которых и состоит работа трансформера. Если WebGPU недоступен — старый браузер, выключённая поддержка, редкое железо — происходит откат на WASM, то есть модель считается на обычном центральном процессоре.

Разница для пользователя колоссальная. На WebGPU генерация идёт быстро и почти не греет систему, на WASM та же модель может выдавать символы с ощутимой задержкой. Счётчик токенов в секунду, который авторы вывели на страницу, превращает это из абстракции в конкретную цифру: ваш результат — это прямой замер того, на что способно ваше устройство. Практический вывод простой: если у вас современная видеокарта или хотя бы встроенная графика последних лет с поддержкой WebGPU, эксперимент будет приятным; на слабых ноутбуках и старых ПК превращается в тест терпения.

Есть и третий фактор, не связанный с производительностью, — интернет. 121 МБ на первый запуск это немного для домашнего Wi-Fi и заметно для мобильного трафика или медленного соединения. Справедливости ради: это всё равно в разы меньше, чем весит современная мобильная игра, а кэшируется модель один раз.

Честные границы: 135 миллионов — это мало

Тут важно не поддаться энтузиазму формулировок. SmolLM-135M — крошечная модель даже по меркам локальных решений. Для сравнения: те модели, которые принято считать «настоящими» помощниками, измеряются миллиардами и десятками миллиардов параметров. 135 миллионов — это примерно на три порядка меньше.

Что это значит на практике? Модель связно пишет текст, отвечает на простые вопросы, справляется с нехитрыми творческими задачками вроде придумывания формулировок — и при этом совершенно спокойно выдумывает факты. Галлюцинации у неё не баг, а свойство: у слишком маленького «мозга» просто нет запаса знаний, чтобы отличить уверенную правдоподобную чушь от факта. Авторы проекта это признают прямо и пишут об этом на самой странице, что заслуживает уважения — большинство демо подобное прячут в сноску мельче.

Поэтому называть штуку «бесплатной заменой ChatGPT» было бы неверно. Зато как демонстрация того, насколько далеко зашли браузерные вычисления, пример эталонный. Ещё пять лет назад мысль о том, что статическая HTML-страница без строчки серверного кода будет генерировать текст нейросетью, звучала как фантастика. Сегодня это скрипт на пару сотен строк и бесплатный хостинг.

Экономика «бесплатно и без лимитов»

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

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

Что ещё добавилось в релиз

Тот же выпуск DevKit принёс четыре новых клиентских инструмента: декодер JWT — причём с честной оговоркой, что подпись он не проверяет, а только расшифровывает полезную нагрузку; объяснитель cron-выражений человеческим языком с выводом ближайших пяти срабатываний; генератор цветовой палитры и таймер «помодоро», который отсчитывает время в заголовке вкладки. Общее правило у всех инструментов одно: никаких загрузок файлов на сервер, никаких аккаунтов, никакой аналитики, а арифметика калькуляторов покрыта автотестами — на данный момент их 310.

Что это меняет в большой картине

История про 135-миллионную модель в браузере — не про революцию в качестве ответов, а про сдвиг в том, где физически происходят вычисления. Лет десять назад облачные сервисы казались единственным разумным способом дать пользователю «умную» функцию: модель слишком тяжёлая, сервер дешевле. Сейчас граница сдвинулась настолько, что минимально приличный интеллект уже помещается в 121 МБ и запускается на графическом чипе ноутбука, к которому браузер получил прямой доступ через WebGPU.

Для обычного человека это оборачивается конкретными вещами. Локальные модели означают приватность по умолчанию — ввод не уезжает. Означают работу без интернета после первой загрузки. Означают отсутствие счётчиков токенов и «лимита запросов в час». И означают, что любое устройство с современным браузером превращается в пробную площадку для ИИ-экспериментов без единой строки настройки.

У границ этого подхода тоже понятный вид: качество ответов упрётся в размер модели, а комфорт работы — в ваше железо и в поддержку WebGPU конкретным браузером. Команда DevKit сама обозначает следующий шаг как «босса»: расширять модель, не раздувая загрузку. SmolLM2-360M или линейка Qwen выглядят кандидатами, но каждый шаг вверх — это десятки и сотни мегабайт, которые кому-то придётся качать.

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