Keras.js — библиотека, обеспечивающая выполнение предварительно обученных моделей Keras непосредственно в браузере с использованием JavaScript. Одним из наиболее производительных способов запуска является WASM-бэкенд (WebAssembly). Он обеспечивает почти нативную скорость работы и совместимость с современными браузерами без необходимости установки серверной инфраструктуры.
Для использования WASM-бэкенда необходимо загрузить соответствующие скрипты библиотеки и инициализировать их в проекте. Обычно структура подключения выглядит следующим образом:
<script src="path/to/keras.min.js"></script>
<script src="path/to/keras-wasm.js"></script>
Важно: keras-wasm.js — это модуль,
обеспечивающий поддержку WebAssembly. Без него Keras.js использует
только чисто JavaScript-реализацию, что заметно медленнее для сложных
моделей.
После подключения скриптов можно создавать экземпляр модели с указанием WASM-бэкенда:
const model = new KerasJS.Model({
filepath: 'model/model.json',
backend: 'wasm'
});
Здесь параметр backend: 'wasm' указывает библиотеке
использовать WebAssembly для вычислений.
Модели Keras.js представляются в формате JSON с бинарными весами. WASM-бэкенд поддерживает все основные слои Keras, включая Dense, Conv2D, LSTM и другие. Процесс загрузки модели выглядит так:
model.ready()
.then(() => {
console.log('Модель успешно загружена и готова к использованию');
})
.catch(err => {
console.error('Ошибка при загрузке модели:', err);
});
Метод ready() возвращает Promise, который разрешается
после полной загрузки модели и бинарных данных весов.
WebAssembly эффективно работает с бинарными массивами. Для передачи
данных в модель необходимо использовать объект Float32Array
или Uint8Array в зависимости от формата модели:
const inputData = new Float32Array([0.5, 0.2, 0.1, 0.7]);
const input = { input_1: inputData }; // 'input_1' — имя входного слоя
WASM-бэкенд поддерживает обработку массивов фиксированной размерности. Несоответствие формы данных вызовет ошибку выполнения.
После подготовки данных модель можно выполнить с помощью метода
predict():
model.predict(input)
.then(output => {
console.log('Результат предсказания:', output.output_1);
})
.catch(err => {
console.error('Ошибка предсказания:', err);
});
Ключевые моменты:
WebAssembly в Keras.js работает с фиксированными буферами памяти. Это требует внимательного контроля объема передаваемых данных:
Рекомендуется заранее выделять буферы и переиспользовать их для последовательных предсказаний:
const buffer = new Float32Array(1024); // повторно используемый буфер
WASM-бэкенд поддерживает вывод отладочной информации через консоль:
model.config.debug = true;
Включение debug позволяет отслеживать использование
памяти и время выполнения отдельных слоев. Это особенно полезно для
моделей с большим числом слоев или сложной архитектурой.
Использование WASM-бэкенда в Keras.js предоставляет высокую производительность для клиентских приложений с нейронными сетями, позволяя выполнять сложные модели прямо в браузере без серверной нагрузки. Правильная организация данных и управление памятью критически важны для максимальной эффективности и стабильности работы.