ROCm silently fell back to CPU: the code targeted ONNX Runtime's classic ROCMExecutionProvider, but distro ROCm-enabled ONNX Runtime builds (e.g. Arch's onnxruntime-rocm) are commonly compiled with --use_migraphx instead, and registration failures were invisible since breadmill never installed a tracing subscriber. Switches the rocm feature to target MIGraphX, adds a default tracing subscriber so EP registration success/failure is always visible, and fixes a real crash where MIGraphX's output sequence padding could index the attention mask out of bounds during mean-pooling. Also adds a CUDA backend (--cuda / backend = "cuda") mirroring the same ort execution-provider pattern, for NVIDIA hardware. Version bump: 0.1.0 -> 0.2.0.
65 lines
2 KiB
TOML
65 lines
2 KiB
TOML
[package]
|
|
name = "breadmill"
|
|
version = "0.2.0"
|
|
edition = "2021"
|
|
license = "MIT"
|
|
|
|
[features]
|
|
default = []
|
|
npu = ["ort/vitis", "ort/load-dynamic"]
|
|
# "rocm" targets the MIGraphX execution provider, not ONNX Runtime's classic
|
|
# ROCMExecutionProvider (--use_rocm build). Distro ROCm-enabled ONNX Runtime
|
|
# packages (e.g. Arch's onnxruntime-rocm) are commonly built with --use_migraphx
|
|
# instead; the classic ROCm EP needs a bespoke --use_rocm build that ships
|
|
# libonnxruntime_providers_rocm.so, which most distros don't package.
|
|
rocm = ["ort/migraphx", "ort/load-dynamic"]
|
|
cuda = ["ort/cuda", "ort/load-dynamic"]
|
|
|
|
[[bin]]
|
|
name = "breadmill"
|
|
path = "src/main.rs"
|
|
|
|
[dependencies]
|
|
breadsearch-shared = { path = "../breadsearch-shared" }
|
|
|
|
# Embedding: ONNX Runtime + HF tokenizers
|
|
# download-binaries: fetches the MLAS-optimized ORT 1.24.x at build time (CPU default).
|
|
# api-23: compatible with both the downloaded ORT 1.24.x and the Ryzen AI SDK ORT 1.23.3;
|
|
# ORT 1.24 is backwards-compatible and honours GetApi(23) requests.
|
|
# npu feature adds load-dynamic + vitis: dlopen at runtime lets ORT_DYLIB_PATH redirect
|
|
# to the Ryzen AI SDK ORT; rpath from download-binaries means no ORT_DYLIB_PATH
|
|
# needed for the plain CPU path even in the npu build.
|
|
ort = { version = "2.0.0-rc.12", default-features = false, features = ["std", "tracing", "download-binaries", "tls-native", "copy-dylibs", "api-23"] }
|
|
tokenizers = "0"
|
|
|
|
# Surfaces ort's own EP-registration tracing (e.g. a GPU EP silently failing to
|
|
# register and falling back to CPU) as visible log output instead of nowhere.
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
|
|
|
# Vector index
|
|
usearch = "2"
|
|
|
|
# Metadata store
|
|
rusqlite = { version = "0", features = ["bundled"] }
|
|
|
|
# File walking (respects .gitignore)
|
|
ignore = "0"
|
|
|
|
# Live filesystem watching
|
|
notify = "6"
|
|
|
|
# Text extraction
|
|
pdf-extract = "0"
|
|
zip = "2"
|
|
quick-xml = { version = "0", features = ["serialize"] }
|
|
|
|
# Hashing
|
|
sha2 = "0"
|
|
hex = "0"
|
|
|
|
# HTTP for model download
|
|
ureq = "2"
|
|
|
|
# Serialization
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|