onnxruntime 0.7.3-x86_64-darwin → 0.7.4-x86_64-darwin

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0a20e08e92901a182d065ec36c8ab1ef50ded63803734bf4ef32814fb5172108
4
- data.tar.gz: 6278c4c8ee96a61e388f0790f184d9f71c210b00a99e771c5c79f25c6ad4e4cc
3
+ metadata.gz: 676a4a7ba672f45360dbb0f00c550a3b4d6a44b29115104a375c81eabfa76975
4
+ data.tar.gz: 92f7e6342b2b7403a9a415d69342666fd60cb8705061dbf4a970262f06f8a31b
5
5
  SHA512:
6
- metadata.gz: 21b7f96e8ba634c2de2219469eaad1ab863ca99d7c043df44514f962fd608569afdfebe04b6ca924d638be0e5dc6bf1f137ba58ec7d38dcc66d999e45bb1dbbf
7
- data.tar.gz: b7e31723ee287588678e6b43ed7fa94d412940ee1e1eef504f4a8b2e46f5d0ea6d11161483190d0fe9cf98c28f41bd5b5e8b12cef0b5489cca4c459781238fa7
6
+ metadata.gz: de0cc258ab9b8bad328019160da4e900a2db884ad1b9c1a7a3fdc5bdbd10e7a76af49882f64f263aeda4a3af15464fb5391d0a019369bbba5fea78a7b48af43e
7
+ data.tar.gz: 1116898683482e0af1cff708c0c8857ad0db9294908ce42084d45000e147a66f0ac2e524b0091ce0dd13a333528650f7daa9c91db3ae48514ac8bfd0a25ccf49
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## 0.7.4 (2022-10-30)
2
+
3
+ - Updated ONNX Runtime to 1.13.1
4
+
1
5
  ## 0.7.3 (2022-07-23)
2
6
 
3
7
  - Updated ONNX Runtime to 1.12.0
data/README.md CHANGED
@@ -43,11 +43,11 @@ Get metadata
43
43
  model.metadata
44
44
  ```
45
45
 
46
- Load a model from a string
46
+ Load a model from a string or other `IO` object
47
47
 
48
48
  ```ruby
49
- byte_str = StringIO.new("...")
50
- model = OnnxRuntime::Model.new(byte_str)
49
+ io = StringIO.new("...")
50
+ model = OnnxRuntime::Model.new(io)
51
51
  ```
52
52
 
53
53
  Get specific outputs
@@ -59,7 +59,7 @@ model.predict({x: [1, 2, 3]}, output_names: ["label"])
59
59
  ## Session Options
60
60
 
61
61
  ```ruby
62
- OnnxRuntime::Model.new(path_or_bytes, {
62
+ OnnxRuntime::Model.new(path_or_io, {
63
63
  enable_cpu_mem_arena: true,
64
64
  enable_mem_pattern: true,
65
65
  enable_profiling: false,
@@ -93,7 +93,7 @@ model.predict(input_feed, {
93
93
 
94
94
  ## Inference Session API
95
95
 
96
- You can also use the Inference Session API, which follows the [Python API](https://microsoft.github.io/onnxruntime/python/api_summary.html).
96
+ You can also use the Inference Session API, which follows the [Python API](https://onnxruntime.ai/docs/api/python/api_summary.html).
97
97
 
98
98
  ```ruby
99
99
  session = OnnxRuntime::InferenceSession.new("model.onnx")
@@ -55,58 +55,12 @@ module OnnxRuntime
55
55
  end
56
56
  end
57
57
 
58
- # session
59
- @session = ::FFI::MemoryPointer.new(:pointer)
60
- from_memory =
61
- if path_or_bytes.respond_to?(:read)
62
- path_or_bytes = path_or_bytes.read
63
- true
64
- else
65
- path_or_bytes = path_or_bytes.to_str
66
- path_or_bytes.encoding == Encoding::BINARY
67
- end
68
-
69
- if from_memory
70
- check_status api[:CreateSessionFromArray].call(env.read_pointer, path_or_bytes, path_or_bytes.bytesize, session_options.read_pointer, @session)
71
- else
72
- check_status api[:CreateSession].call(env.read_pointer, ort_string(path_or_bytes), session_options.read_pointer, @session)
73
- end
58
+ @session = load_session(path_or_bytes, session_options)
74
59
  ObjectSpace.define_finalizer(self, self.class.finalize(@session))
75
60
 
76
- # input info
77
- # don't free allocator
78
- allocator = ::FFI::MemoryPointer.new(:pointer)
79
- check_status api[:GetAllocatorWithDefaultOptions].call(allocator)
80
- @allocator = allocator
81
-
82
- @inputs = []
83
- @outputs = []
84
-
85
- # input
86
- num_input_nodes = ::FFI::MemoryPointer.new(:size_t)
87
- check_status api[:SessionGetInputCount].call(read_pointer, num_input_nodes)
88
- num_input_nodes.read(:size_t).times do |i|
89
- name_ptr = ::FFI::MemoryPointer.new(:string)
90
- check_status api[:SessionGetInputName].call(read_pointer, i, @allocator.read_pointer, name_ptr)
91
- # freed in node_info
92
- typeinfo = ::FFI::MemoryPointer.new(:pointer)
93
- check_status api[:SessionGetInputTypeInfo].call(read_pointer, i, typeinfo)
94
- @inputs << {name: name_ptr.read_pointer.read_string}.merge(node_info(typeinfo))
95
- allocator_free name_ptr
96
- end
97
-
98
- # output
99
- num_output_nodes = ::FFI::MemoryPointer.new(:size_t)
100
- check_status api[:SessionGetOutputCount].call(read_pointer, num_output_nodes)
101
- num_output_nodes.read(:size_t).times do |i|
102
- name_ptr = ::FFI::MemoryPointer.new(:string)
103
- check_status api[:SessionGetOutputName].call(read_pointer, i, allocator.read_pointer, name_ptr)
104
- # freed in node_info
105
- typeinfo = ::FFI::MemoryPointer.new(:pointer)
106
- check_status api[:SessionGetOutputTypeInfo].call(read_pointer, i, typeinfo)
107
- @outputs << {name: name_ptr.read_pointer.read_string}.merge(node_info(typeinfo))
108
- allocator_free name_ptr
109
- end
61
+ @allocator = load_allocator
62
+ @inputs = load_inputs
63
+ @outputs = load_outputs
110
64
  ensure
111
65
  release :SessionOptions, session_options
112
66
  end
@@ -223,6 +177,64 @@ module OnnxRuntime
223
177
 
224
178
  private
225
179
 
180
+ def load_session(path_or_bytes, session_options)
181
+ session = ::FFI::MemoryPointer.new(:pointer)
182
+ from_memory =
183
+ if path_or_bytes.respond_to?(:read)
184
+ path_or_bytes = path_or_bytes.read
185
+ true
186
+ else
187
+ path_or_bytes = path_or_bytes.to_str
188
+ # TODO remove ability to load byte string directly in 0.8.0
189
+ path_or_bytes.encoding == Encoding::BINARY
190
+ end
191
+
192
+ if from_memory
193
+ check_status api[:CreateSessionFromArray].call(env.read_pointer, path_or_bytes, path_or_bytes.bytesize, session_options.read_pointer, session)
194
+ else
195
+ check_status api[:CreateSession].call(env.read_pointer, ort_string(path_or_bytes), session_options.read_pointer, session)
196
+ end
197
+ session
198
+ end
199
+
200
+ def load_allocator
201
+ allocator = ::FFI::MemoryPointer.new(:pointer)
202
+ check_status api[:GetAllocatorWithDefaultOptions].call(allocator)
203
+ allocator
204
+ end
205
+
206
+ def load_inputs
207
+ inputs = []
208
+ num_input_nodes = ::FFI::MemoryPointer.new(:size_t)
209
+ check_status api[:SessionGetInputCount].call(read_pointer, num_input_nodes)
210
+ num_input_nodes.read(:size_t).times do |i|
211
+ name_ptr = ::FFI::MemoryPointer.new(:string)
212
+ check_status api[:SessionGetInputName].call(read_pointer, i, @allocator.read_pointer, name_ptr)
213
+ # freed in node_info
214
+ typeinfo = ::FFI::MemoryPointer.new(:pointer)
215
+ check_status api[:SessionGetInputTypeInfo].call(read_pointer, i, typeinfo)
216
+ inputs << {name: name_ptr.read_pointer.read_string}.merge(node_info(typeinfo))
217
+ allocator_free name_ptr
218
+ end
219
+ inputs
220
+ end
221
+
222
+ def load_outputs
223
+ outputs = []
224
+ num_output_nodes = ::FFI::MemoryPointer.new(:size_t)
225
+ check_status api[:SessionGetOutputCount].call(read_pointer, num_output_nodes)
226
+ num_output_nodes.read(:size_t).times do |i|
227
+ name_ptr = ::FFI::MemoryPointer.new(:string)
228
+ check_status api[:SessionGetOutputName].call(read_pointer, i, @allocator.read_pointer, name_ptr)
229
+ # freed in node_info
230
+ typeinfo = ::FFI::MemoryPointer.new(:pointer)
231
+ check_status api[:SessionGetOutputTypeInfo].call(read_pointer, i, typeinfo)
232
+ outputs << {name: name_ptr.read_pointer.read_string}.merge(node_info(typeinfo))
233
+ allocator_free name_ptr
234
+ end
235
+ outputs
236
+ end
237
+
226
238
  def create_input_tensor(input_feed, refs)
227
239
  allocator_info = ::FFI::MemoryPointer.new(:pointer)
228
240
  check_status api[:CreateCpuMemoryInfo].call(1, 0, allocator_info)
@@ -325,7 +337,7 @@ module OnnxRuntime
325
337
  check_status api[:GetTensorMutableData].call(out_ptr, tensor_data)
326
338
 
327
339
  out_size = ::FFI::MemoryPointer.new(:size_t)
328
- output_tensor_size = api[:GetTensorShapeElementCount].call(typeinfo.read_pointer, out_size)
340
+ check_status api[:GetTensorShapeElementCount].call(typeinfo.read_pointer, out_size)
329
341
  output_tensor_size = out_size.read(:size_t)
330
342
 
331
343
  release :TensorTypeAndShapeInfo, typeinfo
@@ -1,3 +1,3 @@
1
1
  module OnnxRuntime
2
- VERSION = "0.7.3"
2
+ VERSION = "0.7.4"
3
3
  end
Binary file
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: onnxruntime
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.3
4
+ version: 0.7.4
5
5
  platform: x86_64-darwin
6
6
  authors:
7
7
  - Andrew Kane
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-07-23 00:00:00.000000000 Z
11
+ date: 2022-10-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi