Каким образом можно запустить языковую модель, используя JavaScript?

В последнее время появилось множество компактных языковых моделей, которые демонстрируют неплохую производительность. Одним из интересных примеров является CoType от МТС: <br/> <a href="https://4pda.to/2024/11/27/435596/mts_ai_razrabotala_yazykovuyu_model_i_otkryla_k_nej_besplatnyj_dostup/" rel="nofollow">https://4pda.to/2024/11/27/435596/mts_ai_razrabota...</a> <br/> <a href="https://ollama.com/hodza/cotype-nano-1.5-unofficial" rel="nofollow">https://ollama.com/hodza/cotype-nano-1.5-unofficial</a> <br/> <a href="https://habr.com/ru/companies/mts_ai/articles/861398" rel="nofollow">https://habr.com/ru/companies/mts_ai/articles/861398</a> <br/> <br/> Эти небольшие нейросети, используя программное обеспечение вроде Ollama, можно запускать оффлайн на своём компьютере. Однако у меня возникает вопрос: существуют ли решения на JavaScript, которые позволяют запускать нейросети на клиентской стороне непосредственно в браузере? <br/> <br/> Если такие решения имеются, это было бы великолепно, так как они могли бы использоваться для разработки браузерных расширений, позволяющих обрабатывать контент прямо в браузере без обращения к каким-либо API, используя исключительно ресурсы браузера и компьютера.
  • 1 января 2025 г. 13:33
Ответы на вопрос 2
Да, существует несколько библиотек и подходов для запуска языковых моделей прямо в браузере с использованием JavaScript. Вот несколько популярных решений:

1. **TensorFlow.js**: Это библиотека от Google, которая позволяет выполнять и обучать модели машинного обучения прямо в браузере с использованием JavaScript. Вы можете загрузить предобученные модели (включая небольшие языковые модели) и использовать их для различных задач обработки естественного языка.

   - **Пример использования**: Вы можете сначала обучить модель на Python с использованием TensorFlow, а затем конвертировать её в формат, совместимый с TensorFlow.js, и использовать в своем веб-приложении.

2. **ONNX.js**: Этот проект позволяет использовать модели, экспортированные в формате ONNX (Open Neural Network Exchange), внутри веб-приложений. Если ваша модель может быть преобразована в формат ONNX, вы можете использовать эту библиотеку для её загрузки и выполнения в браузере.

3. **Hugging Face Transformers**: Библиотека Hugging Face предоставляет возможность использования предобученных языковых моделей, и существует вариант создания веб-приложения с использованием `transformers.js`, который позволяет работать с некоторыми из этих моделей.

4. **Machine Learning Models in JavaScript**: Есть также более специализированные решения, которые могут включать небольшие модели, оптимизированные для работы в браузере. Например, существуют модели, которые можно запускать непосредственно в JavaScript, такие как `brain.js` или `Synaptic`.

5. **WebAssembly (Wasm)**: Если у вас есть доступ к модели, написанной на C++ или Python, вы можете использовать WebAssembly для компиляции модельного кода и его использования в JavaScript. Это позволит вам запускать более производительные модели в браузере.

### Пример использования TensorFlow.js
```javascript
import * as tf from '@tensorflow/tfjs';

// Загружаем предобученную модель
const model = await tf.loadLayersModel('path/to/model.json');

// Подготовка входных данных
const input = tf.tensor2d([[...]]); // Ваши данные

// Получение предсказаний
const predictions = model.predict(input);
predictions.print();
```

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

Также стоит учитывать, что браузеры имеют свои ограничения на память и производительность, поэтому для более тяжёлых задач может быть лучше использовать серверные решения либо комбинацию подходов, где тяжелая обработка происходит на сервере, а браузер используется для интерфейса.
Сам спросил и сам же нашел ответ) Блин, зря только спрашивал)) Нашел 2 проекта, которые могут запускать языковые ИИ модели целиком на фронте за счет ресурсов браузера: 

https://github.com/tangledgroup/llama-cpp-wasm
https://github.com/huggingface/transformers.js

Всем спасибо, что заглянули, вопрос закрываю.
Похожие вопросы