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

Sign up to get free protection for your applications and to get access to all the features.
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