Я пытаюсь развернуть обученные нейронные сети на нескольких платформах с помощью TVM до компиляции моделей в WebGL .
Мы надеемся создать изолированную среду для выполнения этих моделей в нашем приложении, начиная с
большая часть данных, с которыми они работают, является конфиденциальной, и мы хотели бы иметь возможность заверить пользователей (и нас самих), что загадочный JavaScript, который мы загружаем, не может отфильтровать их данные 1
мы не хотим, чтобы ошибки в этом коде мешали работе всего приложения
В идеале нам бы хотелось, чтобы такой API был в JS, C, C ++ или Rust:
predictions, err = runInSandbox('myModel.js', canUseNetwork=False,
canUseFileSystem=False, input=mySensitiveData)
Некоторые опции, которые я рассмотрел, включают:
- Докер. Это решает песочницу, но не может работать на Android или iOS. Также было бы неплохо избежать установки Docker как части установки нашего приложения.
- Кукольник . Это также, похоже, не работает на Android или iOS, а также нежелательно в комплекте с приложением.
- Запуск кода WebGL в фрейме . Это не мешает доступу к сети, хотя, может быть, есть какой-то умный трюк для этого?
- Запуск встроенного JavaScript или Wasm VM. Это было бы идеально, но я не нашел тот, который будет работать с WebGL.
Буду очень признателен за любые идеи, как это сделать на разных платформах. Подходы для определенных платформ - особенно для Android и iOS - также приветствуются, поскольку использование разных подходов для разных платформ - это нормально, если нет альтернативы.
1 Пользователям разрешено проводить аудит нашего собственного клиентского исходного кода, но для них нереально проводить аудит каждого изменения в наших моделях / конвейере обработки данных.