https://github.com/ankane/onnxruntime-ruby
Run ONNX models in Ruby
https://github.com/ankane/onnxruntime-ruby
Last synced: 7 months ago
JSON representation
Run ONNX models in Ruby
- Host: GitHub
- URL: https://github.com/ankane/onnxruntime-ruby
- Owner: ankane
- License: mit
- Created: 2019-08-26T23:51:36.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2025-09-30T18:23:57.000Z (8 months ago)
- Last Synced: 2025-11-11T10:06:39.279Z (7 months ago)
- Language: Ruby
- Homepage:
- Size: 13.8 MB
- Stars: 145
- Watchers: 6
- Forks: 5
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# ONNX Runtime Ruby
:fire: [ONNX Runtime](https://github.com/Microsoft/onnxruntime) - the high performance scoring engine for ML models - for Ruby
Check out [an example](https://ankane.org/tensorflow-ruby)
For transformer models, check out [Informers](https://github.com/ankane/informers)
[](https://github.com/ankane/onnxruntime-ruby/actions)
## Installation
Add this line to your application’s Gemfile:
```ruby
gem "onnxruntime"
```
## Getting Started
Load a model and make predictions
```ruby
model = OnnxRuntime::Model.new("model.onnx")
model.predict({x: [1, 2, 3]})
```
> Download pre-trained models from the [ONNX Model Zoo](https://github.com/onnx/models)
Get inputs
```ruby
model.inputs
```
Get outputs
```ruby
model.outputs
```
Get metadata
```ruby
model.metadata
```
Load a model from a string or other `IO` object
```ruby
io = StringIO.new("...")
model = OnnxRuntime::Model.new(io)
```
Get specific outputs
```ruby
model.predict({x: [1, 2, 3]}, output_names: ["label"])
```
## Session Options
```ruby
OnnxRuntime::Model.new(
path_or_io,
enable_cpu_mem_arena: true,
enable_mem_pattern: true,
enable_profiling: false,
execution_mode: :sequential, # :sequential or :parallel
free_dimension_overrides_by_denotation: nil,
free_dimension_overrides_by_name: nil,
graph_optimization_level: nil, # :none, :basic, :extended, or :all
inter_op_num_threads: nil,
intra_op_num_threads: nil,
log_severity_level: 2,
log_verbosity_level: 0,
logid: nil,
optimized_model_filepath: nil,
profile_file_prefix: "onnxruntime_profile_",
session_config_entries: nil
)
```
## Run Options
```ruby
model.predict(
input_feed,
output_names: nil,
log_severity_level: 2,
log_verbosity_level: 0,
logid: nil,
terminate: false,
output_type: :ruby # :ruby or :numo
)
```
## Inference Session API
You can also use the Inference Session API, which follows the [Python API](https://onnxruntime.ai/docs/api/python/api_summary.html).
```ruby
session = OnnxRuntime::InferenceSession.new("model.onnx")
session.run(nil, {x: [1, 2, 3]})
```
The Python example models are included as well.
```ruby
OnnxRuntime::Datasets.example("sigmoid.onnx")
```
## GPU Support
### Linux and Windows
Download the appropriate [GPU release](https://github.com/microsoft/onnxruntime/releases) and set:
```ruby
OnnxRuntime.ffi_lib = "path/to/lib/libonnxruntime.so" # onnxruntime.dll for Windows
```
and use:
```ruby
model = OnnxRuntime::Model.new("model.onnx", providers: ["CUDAExecutionProvider"])
```
### Mac
Use:
```ruby
model = OnnxRuntime::Model.new("model.onnx", providers: ["CoreMLExecutionProvider"])
```
## History
View the [changelog](https://github.com/ankane/onnxruntime-ruby/blob/master/CHANGELOG.md)
## Contributing
Everyone is encouraged to help improve this project. Here are a few ways you can help:
- [Report bugs](https://github.com/ankane/onnxruntime-ruby/issues)
- Fix bugs and [submit pull requests](https://github.com/ankane/onnxruntime-ruby/pulls)
- Write, clarify, or fix documentation
- Suggest or add new features
To get started with development and testing:
```sh
git clone https://github.com/ankane/onnxruntime-ruby.git
cd onnxruntime-ruby
bundle install
bundle exec rake vendor:all
bundle exec rake test
```