Dala.ML.ONNX (dala v0.0.7)

Copy Markdown View Source

ONNX Runtime integration for cross-platform ML inference.

This module provides an Elixir API for using ONNX Runtime, which can leverage platform-specific execution providers:

  • iOS: CoreML EP (Apple Neural Engine)
  • Android: NNAPI EP (Android Neural Networks API)
  • Fallback: CPU EP (works everywhere)

Prerequisites

  • ONNX model file (.onnx)
  • ONNX Runtime library for your platform

Converting models to ONNX

You can convert models from other formats:

# From Axon (via Elixir)
{init_fn, predict_fn} = Axon.build(model)
params = init_fn.(Nx.template({1, 784}, :f32), %{})

# Export to ONNX (requires ortex or similar)
# Then use ONNX Runtime for inference

Usage

# Create session from ONNX model
{:ok, session_id} = Dala.ML.ONNX.create_session(model_data)

# Run inference
{:ok, output_binary} = Dala.ML.ONNX.run(session_id, input_binary)

# Convert output to Nx tensor
output = Nx.from_binary(output_binary, {:f32, shape})

# Clean up when done
:ok = Dala.ML.ONNX.destroy_session(session_id)

Summary

Functions

Checks if ONNX Runtime is available on this platform.

Creates an ONNX session from model data.

Destroys an ONNX session and frees resources.

Convenience function: Load model from file and create session.

Runs inference on an ONNX session.

Functions

available?()

Checks if ONNX Runtime is available on this platform.

create_session(model_data)

Creates an ONNX session from model data.

Parameters

  • model_data: Binary ONNX model data (from file or memory)

Returns

{:ok, session_id} on success :not_supported on unsupported platforms :error on failure

destroy_session(session_id)

Destroys an ONNX session and frees resources.

load_model_from_file(path)

Convenience function: Load model from file and create session.

run(session_id, input)

Runs inference on an ONNX session.

Parameters

  • session_id: Session ID from create_session/1
  • input: Binary input data (Nx tensor serialized to binary)

Returns

{:ok, output_binary} on success :not_supported on unsupported platforms :error on failure