Выполнение инференса на стороне клиента как способ защиты данных

ONNX Runtime Web (ORT Web) представляет собой JavaScript-библиотеку, предназначенную для выполнения моделей в формате ONNX непосредственно в браузере или в Node.js. Основное преимущество использования ORT Web заключается в возможности инференса на стороне клиента, что позволяет сократить задержки при обработке данных и повысить конфиденциальность информации, так как данные не покидают устройство пользователя.

ORT Web поддерживает работу с различными движками выполнения, включая WebAssembly (WASM) и WebGPU, что обеспечивает гибкость и производительность в зависимости от возможностей устройства.

Установка и подключение

В браузере библиотека подключается через CDN или npm-пакет:

import * as ort from 'onnxruntime-web';

Для Node.js используется:

npm install onnxruntime-web
const ort = require('onnxruntime-web');

Загрузка модели ONNX

Модели ONNX могут быть загружены из локальных файлов или через URL. Для оптимальной работы рекомендуется использовать предварительно скомпилированные модели с поддержкой WebAssembly или WebGPU.

const session = await ort.InferenceSession.create('./model.onnx', {
  executionProviders: ['wasm'] // или 'webgpu'
});
  • executionProviders — определяет движок выполнения. WASM работает на всех современных браузерах, WebGPU позволяет использовать GPU для ускорения вычислений.

Подготовка входных данных

ORT Web использует объекты Tensor для представления данных, аналогично библиотекам типа NumPy в Python. Основные параметры:

  • data — массив чисел, представляющий входные данные.
  • dims — массив размерностей тензора.
  • type — тип данных (float32, int32, string и др.).

Пример создания тензора:

const inputTensor = new ort.Tensor('float32', new Float32Array([1.0, 2.0, 3.0, 4.0]), [2, 2]);

Выполнение инференса

После создания сессии и подготовки тензоров выполняется вызов метода run. Метод возвращает объект с результатами, где ключи соответствуют именам выходов модели.

const feeds = { input: inputTensor };
const results = await session.run(feeds);
console.log(results.output.data);
  • feeds — объект, содержащий все входные тензоры, сопоставленные с именами входов модели.
  • results — объект с выходными тензорами модели.

Использование WebGPU для ускорения вычислений

WebGPU позволяет выполнять инференс на GPU устройства, что существенно увеличивает скорость обработки больших моделей. Для использования достаточно указать 'webgpu' в executionProviders:

const session = await ort.InferenceSession.create('./model.onnx', {
  executionProviders: ['webgpu']
});

Преимущество WebGPU особенно заметно при обработке изображений, видео или больших массивов чисел.

Оптимизация производительности

  1. Минимизация копирования данных — создание тензоров напрямую из TypedArray предотвращает лишние операции.
  2. Пакетная обработка — при работе с несколькими входными объектами можно объединять данные в батчи для уменьшения накладных расходов.
  3. Выбор движка выполнения — WASM подходит для совместимости, WebGPU для ускорения на устройствах с поддержкой GPU.

Работа с асинхронностью

Все методы ORT Web, включая InferenceSession.create и run, являются асинхронными, что позволяет интегрировать инференс в клиентские приложения без блокировки интерфейса:

async function predict(inputData) {
    const session = await ort.InferenceSession.create('./model.onnx');
    const tensor = new ort.Tensor('float32', inputData, [inputData.length]);
    const results = await session.run({ input: tensor });
    return results.output.data;
}

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

Конфиденциальность данных

Выполнение инференса на стороне клиента исключает необходимость передачи чувствительных данных на сервер. Это обеспечивает:

  • Сокращение рисков утечки данных.
  • Соответствие требованиям GDPR и локальных законов о защите информации.
  • Более быструю обработку, так как отсутствует сетевой лаг.

Поддержка различных типов моделей

ORT Web поддерживает модели из разных областей:

  • Компьютерное зрение: классификация изображений, детекция объектов.
  • Обработка естественного языка: анализ текста, генерация ответов.
  • Рекомендательные системы: обработка пользовательских предпочтений.

Каждый тип модели требует соответствующей подготовки данных: нормализация изображений, токенизация текста, создание батчей.

Отладка и логирование

Для анализа работы модели ORT Web предоставляет возможности логирования:

ort.env.logLevel = 'verbose';

Это позволяет отслеживать этапы выполнения инференса и выявлять узкие места в производительности.

Интеграция с фронтенд-фреймворками

ORT Web легко интегрируется с React, Vue, Angular и другими библиотеками. Тензоры могут быть подготовлены на основе данных, полученных из формы или камеры, а результаты инференса сразу отображаться в интерфейсе.


Пошаговое освоение ORT Web, правильная подготовка входных данных и использование подходящего движка выполнения позволяют создавать высокопроизводительные и безопасные клиентские приложения с машинным обучением, минимизируя риски утечки данных и повышая интерактивность интерфейсов.