wllama: инференс языковых моделей в браузере с поддержкой WebAssembly

wllama: инференс языковых моделей в браузере с поддержкой WebAssembly

wllama — это привязка WebAssembly к библиотеке llama.cpp, позволяющая выполнять инференс больших языковых моделей (LLM) прямо в браузере.

Проект решает задачу локального запуска LLM без необходимости в серверной части или мощной графике, что может быть полезно для веб-разработчиков, желающих интегрировать ИИ в свои приложения. wllama поддерживает OpenAI-совместимый API, и предлагает множество возможностей, включая WebGPU, многомодальную поддержку (ввод изображений и аудио) и асинхронное выполнение через worker'ы, что разгружает основной поток приложения. Установка возможна через npm с помощью пакета @wllama/wllama.

Стоит учитывать, что существуют ограничения: максимальный размер модели – 2 ГБ из-за ограничений ArrayBuffer. Для многопоточности необходимо настроить заголовки безопасности, что может усложнить настройку для некоторых пользователей. В остальном проект выглядит многообещающе для дальнейшей работы с LLM в браузерной среде.

Проект wllama представляет собой обертку на WebAssembly для библиотеки llama.cpp. Он позволяет использовать возможности модели llama напрямую в браузере, без необходимости в стороннем сервере или GPU. Основной акцент сделан на совместимости с API OpenAI, поддержке мульти-режимов (ввод изображений и аудио), а также на обращениях к инструментам.

Особенности

  • Совместимый API с OpenAI (полностью типизированный)
  • Поддержка WebGPU для ускорения вычислений
  • Поддержка мульти-режимов (ввод изображений и аудио)
  • Наличие поддержки вызовов инструментов
  • Возможность выполнять вывод в браузере без сервера, используя WebAssembly SIMD
  • Нет зависимостей во время выполнения
  • Возможность разбивать модель на более мелкие файлы для параллельной загрузки
  • Автоматический выбор между однопоточной и многопоточной сборкой в зависимости от поддержки браузера
  • Вычисления происходят в отдельном потоке, что не блокирует отрисовку интерфейса

Как установить и запустить

Чтобы использовать wllama в проекте React с TypeScript, установи библиотеку с помощью команды:

npm i @wllama/wllama

Есть возможность собрать проект из исходников, но для этого требуется установленный Docker:

Инструкция по установке из репозитория
git submodule add https://github.com/ngxson/wllama.git wllama
git submodule update --init --recursive
cd wllama
npm ci
npm run build:wasm && npm run build

После установки импортируй модуль в своем коде:

import { Wllama } from '@wllama/wllama';
let wllamaInstance = new Wllama(WLLAMA_CONFIG_PATHS, ...);

Ограничения

  • Для включения многопоточности необходимо добавить заголовки Cross-Origin-Embedder-Policy и Cross-Origin-Opener-Policy.
  • Максимальный размер файла составляет 2 ГБ из-за ограничений ArrayBuffer. Если модель больше 2 ГБ, следует разбить ее на части.

Документация и примеры

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

Компиляция бинарников

Если ты хочешь собрать бинарники самостоятельно, используй следующие команды после клонирования репозитория:

git clone --recurse-submodules https://github.com/ngxson/wllama.git
cd wllama
npm i
npm run build:wasm
npm run build

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

Открыть на GitHub: ngxson/wllama →

Что нового на GitHub — короткие обзоры на русском Новые обзоры приходят в Telegram. Без спама, по делу.
Подписаться

Похожие статьи

Популярные темы на сайте