diff --git a/mobile/lib/services/machine_learning/ml_model.dart b/mobile/lib/services/machine_learning/ml_model.dart index e941cf106d..167902d02b 100644 --- a/mobile/lib/services/machine_learning/ml_model.dart +++ b/mobile/lib/services/machine_learning/ml_model.dart @@ -86,6 +86,7 @@ abstract class MlModel { String modelPath, ) async { isolateLogger.info('Initializing $modelName with FFI'); + ONNXEnvFFI.instance.initONNX(modelName); try { final startTime = DateTime.now(); final sessionOptions = OrtSessionOptions() diff --git a/mobile/lib/services/machine_learning/onnx_env.dart b/mobile/lib/services/machine_learning/onnx_env.dart index fadf3c6d4f..edb7d98a24 100644 --- a/mobile/lib/services/machine_learning/onnx_env.dart +++ b/mobile/lib/services/machine_learning/onnx_env.dart @@ -1,27 +1,24 @@ -import "package:computer/computer.dart"; import "package:onnxruntime/onnxruntime.dart"; -class ONNXEnv { +class ONNXEnvFFI { final Set _loadedModels = {}; - final _computer = Computer.shared(); - // Singleton pattern - ONNXEnv._privateConstructor(); - static final instance = ONNXEnv._privateConstructor(); - factory ONNXEnv() => instance; + ONNXEnvFFI._privateConstructor(); + static final instance = ONNXEnvFFI._privateConstructor(); + factory ONNXEnvFFI() => instance; - Future initONNX(String modelName) async { + void initONNX(String modelName) { if (_loadedModels.isEmpty) { - await _computer.compute(() => OrtEnv.instance.init()); + OrtEnv.instance.init(); } _loadedModels.add(modelName); } - Future releaseONNX(String modelName) async { + void releaseONNX(String modelName) { _loadedModels.remove(modelName); if (_loadedModels.isEmpty) { - await _computer.compute(() => OrtEnv.instance.release()); + OrtEnv.instance.release(); } }