49 lines
1.5 KiB
Markdown
49 lines
1.5 KiB
Markdown
# Swift Package Manager for ONNX Runtime
|
|
|
|
Swift-native ONNX Runtime bindings derived from the public Objective-C wrapper surface, but implemented without the Objective-C bridge so the package can build on Linux.
|
|
|
|
## Status
|
|
|
|
- Public API covers inference, session/run options, tensor values, checkpoint state, and training session entry points.
|
|
- Backend is wired to the ONNX Runtime C API and training C API through a Swift system library target.
|
|
- The package expects `libonnxruntime` and headers to be available on the host, typically via `pkg-config`.
|
|
|
|
## Requirements
|
|
|
|
- Swift 6.1+
|
|
- ONNX Runtime installed on the system with:
|
|
- `libonnxruntime`
|
|
- `onnxruntime_c_api.h`
|
|
- `onnxruntime_training_c_api.h`
|
|
- `pkg-config` metadata for `libonnxruntime`
|
|
|
|
## Usage
|
|
|
|
```swift
|
|
import OnnxRuntimeBindings
|
|
|
|
let environment = try ORTEnv(loggingLevel: .warning)
|
|
let sessionOptions = try ORTSessionOptions()
|
|
let session = try ORTSession(
|
|
env: environment,
|
|
modelPath: "/path/to/model.onnx",
|
|
sessionOptions: sessionOptions
|
|
)
|
|
|
|
let inputTensor = try ORTValue(
|
|
tensorData: NSMutableData(data: inputData),
|
|
elementType: .float,
|
|
shape: [1, 224, 224, 3]
|
|
)
|
|
|
|
let outputs = try session.run(
|
|
inputs: ["input": inputTensor],
|
|
outputNames: ["output"]
|
|
)
|
|
```
|
|
|
|
## Notes
|
|
|
|
- The `objectivec/` directory remains in the repo as the reference contract surface from upstream ONNX Runtime.
|
|
- The shipped Swift package target is the pure Swift `OnnxRuntimeBindings` implementation under `swift/OnnxRuntimeBindings`.
|