Keras.js — это библиотека для запуска нейронных сетей, обученных с использованием Keras, непосредственно в браузере на JavaScript. Основная особенность библиотеки заключается в поддержке выполнения моделей как на CPU, так и на GPU через WebGL, что позволяет использовать возможности современного железа без необходимости в серверной инфраструктуре.
Keras.js поддерживает два типа бэкенда выполнения:
Выбор бэкенда осуществляется при создании объекта модели:
const model = new KerasJS.Model({
filepath: 'model.bin',
backend: 'webgl', // или 'cpu'
gpu: true // для явного включения GPU (необязательно, если backend = 'webgl')
});
После выбора бэкенда важно корректно инициализировать модель. Это
включает загрузку бинарного файла модели (.bin) и структуры
модели (.json):
await model.ready();
console.log('Модель готова к использованию');
ready() подготавливает внутренние буферы и
вычислительные графы, оптимизированные под выбранный бэкенд.Преимущества:
Ограничения:
Если использование GPU невозможно или нежелательно, следует обратить внимание на следующие моменты:
float32 и float16 (если backend = ‘webgl’),
для CPU лучше использовать float32 для стабильности.После подготовки модели предсказания выполняются методом
predict:
const inputData = {
'input_1': new Float32Array([/* данные */])
};
const outputData = await model.predict(inputData);
console.log(outputData['output_1']);
predict автоматически использует текстуры и
шейдеры WebGL для вычислений.ndarray).| Параметр | CPU | GPU (WebGL) |
|---|---|---|
| Скорость вычислений | Низкая–средняя | Высокая |
| Совместимость | Любой браузер | Поддержка WebGL |
| Использование памяти | Минимальное | Высокое, зависит от текстур |
| Инициализация модели | Быстрая | Долгая (шэйдеры) |
На практике, для интерактивных приложений с маленькими сетями CPU может быть достаточен, но для больших сверточных или рекуррентных моделей GPU значительно повышает отзывчивость.
Keras.js позволяет комбинировать CPU и GPU, распределяя слои модели по доступным устройствам. Например, сверточные слои можно выполнять на GPU, а Dense и рекуррентные слои — на CPU, если GPU ограничен по памяти.
Для этого требуется разделять модель на несколько подмоделей и управлять потоками данных вручную, что повышает сложность, но обеспечивает максимальную производительность и стабильность работы на любых устройствах.
webgl на cpu.Использование нативного бэкенда CPU и GPU в Keras.js открывает возможности запуска сложных нейросетевых моделей в браузере без серверной поддержки, обеспечивая баланс между производительностью и совместимостью.