Ortex
Ortex
是ONNX Runtime的一个封装(实现为ort
的绑定)。Ortex利用Nx.Serving
来轻松部署ONNX模型,使其能在集群中并发和分布式运行。Ortex还提供了一个仅用于存储的张量实现,以便于使用。
ONNX模型是一种标准的机器学习模型格式,可以从大多数ML库(如PyTorch和TensorFlow)中导出。Ortex允许轻松加载并快速推理ONNX模型,使用ONNX Runtime可用的不同后端,如CUDA、TensorRT、Core ML和ARM Compute Library。
示例
简而言之:
iex> model = Ortex.load("./models/resnet50.onnx")
#Ortex.Model<
inputs: [{"input", "Float32", [nil, 3, 224, 224]}]
outputs: [{"output", "Float32", [nil, 1000]}]>
iex> {output} = Ortex.run(model, Nx.broadcast(0.0, {1, 3, 224, 224}))
iex> output |> Nx.backend_transfer() |> Nx.argmax
#Nx.Tensor<
s64
499
>
检查模型可以显示预期的输入、输出、数据类型和形状。带有nil
的轴表示动态大小。
要查看更多真实世界的例子,请参见examples
文件夹。
服务
Ortex
还实现了Nx.Serving
行为。要在应用程序的监督树中使用它,请参考Nx.Serving
文档。
iex> serving = Nx.Serving.new(Ortex.Serving, model)
iex> batch = Nx.Batch.stack([{Nx.broadcast(0.0, {3, 224, 224})}])
iex> {result} = Nx.Serving.run(serving, batch)
iex> result |> Nx.backend_transfer() |> Nx.argmax(axis: 1)
#Nx.Tensor<
s64[1]
[499]
>
安装
可以通过在mix.exs
中添加ortex
到依赖列表来安装Ortex
:
def deps do
[
{:ortex, "~> 0.1.9"}
]
end
编译成功需要安装Rust。