Home Knowledge Base ONNX for Model Interoperability

ONNX for Model Interoperability

What is ONNX? ONNX (Open Neural Network Exchange) is an open format for representing machine learning models, enabling interoperability between frameworks.

Why ONNX?

BenefitDescription
PortabilityTrain in PyTorch, deploy anywhere
OptimizationUse ONNX Runtime for fast inference
Hardware supportDeploy to various accelerators
Tool ecosystemQuantization, profiling, editing

Exporting PyTorch to ONNX

Basic Export

import torch

model = YourModel()
model.eval()

# Create dummy input matching expected shape
dummy_input = torch.randn(1, 512)  # (batch, seq_len)

torch.onnx.export(
    model,
    dummy_input,
    "model.onnx",
    input_names=["input"],
    output_names=["output"],
    dynamic_axes={
        "input": {0: "batch", 1: "seq_len"},
        "output": {0: "batch"},
    },
    opset_version=14,
)

For Transformers

from transformers import AutoModelForCausalLM
from optimum.exporters.onnx import main_export

# Export with optimum
main_export(
    model_name_or_path="meta-llama/Llama-2-7b-hf",
    output="./llama-onnx",
    task="text-generation",
)

ONNX Runtime Inference

Basic Usage

import onnxruntime as ort
import numpy as np

# Create session
session = ort.InferenceSession("model.onnx")

# Run inference
inputs = {"input": np.array([[1, 2, 3, 4, 5]], dtype=np.int64)}
outputs = session.run(None, inputs)

Optimizations

# Optimize for target hardware
sess_options = ort.SessionOptions()
sess_options.graph_optimization_level = ort.GraphOptimizationLevel.ORT_ENABLE_ALL

# Use specific providers
providers = ["CUDAExecutionProvider", "CPUExecutionProvider"]
session = ort.InferenceSession("model.onnx", sess_options, providers=providers)

ONNX Ecosystem

ToolPurpose
ONNX RuntimeFast inference engine
onnx-simplifierSimplify ONNX graphs
onnxoptimizerGraph optimizations
NetronVisualize ONNX models

Limitations for LLMs

When to Use ONNX

ScenarioRecommendation
Cross-framework deploymentYes
Edge/mobile deploymentYes
NVIDIA GPU servingConsider TensorRT directly
CPU inferenceONNX Runtime is excellent
model exportinteroperabilityframework portability

Explore 500+ Semiconductor & AI Topics

From EUV lithography to CUDA optimization — search the full knowledge base or chat with our AI assistant.