createWithProviders static method

OrtSessionWrapper createWithProviders(
  1. String modelPath, {
  2. required List<OrtProvider> providers,
  3. OnnxRuntime? runtime,
  4. Map<OrtProvider, Map<String, String>> providerOptions = const {},
  5. SessionConfig sessionConfig = const SessionConfig(),
})

Creates a session with manual provider selection.

OrtSessionWrapper.createWithProviders(
  modelPath,
  providers: [OrtProvider.coreML, OrtProvider.cpu],
  providerOptions: {
    OrtProvider.coreML: {'MLComputeUnits': 'CPUAndGPU'},
  },
);

Implementation

static OrtSessionWrapper createWithProviders(
  String modelPath, {
  required List<OrtProvider> providers,
  OnnxRuntime? runtime,
  Map<OrtProvider, Map<String, String>> providerOptions = const {},
  SessionConfig sessionConfig = const SessionConfig(),
}) {
  final rt = runtime ?? OnnxRuntime.instance;
  rt.ensureInitialized();

  final wrapper = OrtSessionWrapper._(rt);
  wrapper._sessionOptions = rt.createSessionOptions();
  _applySessionConfig(rt, wrapper._sessionOptions, sessionConfig);

  final ortProviders = OrtProviders(rt);
  ortProviders.appendProviders(
    wrapper._sessionOptions,
    providers,
    providerOptions: providerOptions,
  );

  wrapper._session = rt.createSession(modelPath, wrapper._sessionOptions);
  wrapper._inputNames = rt.getSessionInputNames(wrapper._session);
  wrapper._outputNames = rt.getSessionOutputNames(wrapper._session);

  return wrapper;
}