elixir-nx / ortex

ONNX Runtime bindings for Elixir
MIT License
120 stars 15 forks source link

[Feature request] with_session_from_memory support #29

Open kipcole9 opened 3 months ago

kipcole9 commented 3 months ago

In working on a segment-anthing livebook, based upon this forum example, I am downloading the onnx model from hugging face. The benefit is that the Livebook can be readily shared with no dependencies.

Currently it needs to be saved to a file system before calling Ortext.load/1 since that function ultimately delegates to the following in model.rs:

    let session = Session::builder()?
        .with_execution_providers(&eps)?
        .with_optimization_level(map_opt_level(opt))?
        .with_model_from_file(model_path)?;

A version or an option which calls .with_model_from_memory(binary) would be a valuable, and hopefully a simple addition.

I think Livebooks is a likely a common use case so hopefully something you might consider. I would happily send a PR if I had any relevant skill, but in Rust I do not.

mortont commented 3 months ago

Thanks for the idea! We've been planning to implement model loading from memory for a while now, but we're waiting on the upstream ort 2.0 changes to settle before doing so.

One other benefit that will unlock is loading directly from axon_onnx, so in the future we may be able to export Axon models to run with Ortex in memory.

kipcole9 commented 3 months ago

Thanks for the consideration - and the library. Feel free to close since its already on your to-do list.

mortont commented 3 months ago

We'll keep this open to track, should be an easy add once the ort API settles