Кто-то реализовал GPT-2 с помощью шейдеров видеокарты. Теперь нейросеть может работать даже там, где не ждали. Гениально или безумно? 🤯 #AI #GPU
Технический обзор
Новый демонстрационный проект реализует полный инференс модели GPT-2 small (117M параметров) непосредственно в браузере, используя WebGL2 для вычислений на GPU. Это первое известное решение, выполняющее всю последовательность преобразований (forward pass) нейросети через WebGL-шейдеры без использования WebAssembly.
Ключевые технические особенности
Архитектура решения:
- Полный инференс GPT-2 small на GPU через WebGL2 шейдеры
- BPE-токенизация с использованием
js-tiktoken(чистый JavaScript, без WASM) - Механизм загрузки предобученных весов через Python-скрипт
Технический стек:
- Frontend: Vite (TypeScript, ESM модули)
- Токенизатор: js-tiktoken
- Веса модели: оригинальные GPT-2 weights через HuggingFace Transformers
Установка и запуск
Подготовка весов модели
- Установите зависимости Python:
pip install torch numpy transformers - Запустите скрипт загрузки весов:
python download_weights.pyСкрипт загрузит:
- Матрицы эмбеддингов (
wte.bin,wpe.bin) - Веса внимания (
c_attn_*.bin) - Веса выходного слоя (
lm_head_*.bin) - Файл манифеста
manifest.json
Запуск фронтенд-части
- Установите npm-зависимости:
npm install - Запустите dev-сервер:
npm run dev - Откройте в браузере:
http://localhost:5173
Технические детали реализации
WebGL2-акселерация
Проект использует нестандартный подход:
- Все матричные операции выполняются через GLSL-шейдеры
- Архитектура трансформера полностью реализована на GPU
- Нет пересылки данных CPU↔GPU благодаря чисто браузерному решению
Особенности производительности
- Полный forward pass занимает ~1-3 сек на современных видеокартах
- Поддерживаются браузеры с WebGL2: Chrome, Firefox, Safari, Edge
- Минимальные требования: Node.js ≥16.x, Python ≥3.8
Сравнение с альтернативами
| Характеристика | WebGL2-версия | WASM-реализации | Нативные решения |
|---|---|---|---|
| Использование GPU | Полное | Частичное | Полное |
| Подготовка модели | Средняя | Высокая | Низкая |
| Производительность | Хорошая | Умеренная | Отличная |
| Портативность | Максимальная | Высокая | Низкая |