--- license: apache-2.0 base_model: ibm-granite/granite-speech-4.1-2b-nar library_name: onnx pipeline_tag: automatic-speech-recognition language: - en - fr - de - es - pt tags: - automatic-speech-recognition - granite-speech - onnx - onnxruntime - directml - cpu - int4 - matmulnbits - taurscribe --- # Granite Speech 4.1 2B NAR Portable INT4 for Taurscribe This repository contains a portable ONNX Runtime artifact derived from IBM's [Granite Speech 4.1 2B NAR](https://huggingface.co/ibm-granite/granite-speech-4.1-2b-nar) model for local transcription in Taurscribe. It is designed for Windows systems without an NVIDIA CUDA GPU. It supports: - full GPU inference through ONNX Runtime DirectML on compatible AMD, Intel, and NVIDIA DirectX 12 GPUs; - multi-threaded ONNX Runtime CPU inference as a portable fallback. This is not a newly trained or fine-tuned model. The learned Granite weights, tokenizer, vocabulary, and supported languages are inherited from IBM's base model. Taurscribe changed the ONNX representation and host runtime path. > This is a multi-graph Taurscribe runtime bundle, not a single-file > Transformers replacement. Correct inference requires Taurscribe's feature > extraction, CTC, projection, edit-slot, and tokenizer pipeline. ## What Changed The portable artifact builds on Taurscribe's INT4/token-ID Granite bundle: 1. Selected large `MatMul` weights use INT4 weight-only quantization through ONNX `MatMulNBits`. 2. `editor.onnx` performs `ArgMax` in the graph and returns `token_ids` instead of transferring the full sequence-by-vocabulary logits tensor to Rust. 3. Thirty-two rank-5 windowed-attention `MatMul` operations in `encoder.onnx` are reshaped to equivalent rank-3 batched operations supported by DirectML. 4. Runtime shape chains are evaluated for Taurscribe's fixed `[1, 800, 160]` encoder bucket, stored as constants, and approximately 950 dead shape nodes are removed. 5. Sixteen two-output GLU `Split` operations are replaced with equivalent `Slice` pairs to avoid incorrect output inside DirectML fused partitions. Only `encoder.onnx` receives the DirectML compatibility rewrites. The projector, token embedding graph, editor, tokenizer, and model weights are copied from the INT4/token-ID parent artifact. ## Runtime Placement Full DirectML: ```text encoder.onnx -> DirectML projector.onnx -> DirectML embed_tokens.onnx -> DirectML editor.onnx -> DirectML ``` CPU fallback: ```text encoder.onnx -> CPU projector.onnx -> CPU embed_tokens.onnx -> CPU editor.onnx -> CPU ``` The ONNX files do not select a GPU vendor. Taurscribe's Rust code asks ONNX Runtime to create DirectML or CPU sessions. See `taurscribe_granite_nar_manifest.json` for the graph contract. ## Validation The conversion script compares every rewritten encoder output against the source encoder on CPU and aborts if the worst relative difference exceeds `1e-3`. The produced artifact measured a worst relative difference of about `4.4e-5`. DirectML encoder BPE argmax agreement with CPU was `1.0000` on the validated input. The following end-to-end Taurscribe results use the same 30 utterances from LibriSpeech `test-clean` (mean processed duration: 8.47 seconds): | Route | Hardware | Mean latency | Mean RTF | Mean WER | |---|---|---:|---:|---:| | CUDA reference artifact | RTX 4070 Laptop | 0.250 s | 0.040 | 4.31% | | **This artifact, full DirectML** | **Radeon 780M** | **4.045 s** | **0.643** | **4.31%** | | **This artifact, CPU (8 threads)** | **Ryzen 7 8845HS** | **8.823 s** | **1.415** | **4.31%** | | Historical hybrid baseline | 1-thread CPU encoder + DirectML | 13.135 s | 2.194 | 4.31% | These are limited local validation results, not a replacement for the base model's full published evaluation. See `BENCHMARKS.md` for methodology and tail latency. ## Hardware Compatibility - **AMD Radeon 780M DirectML:** validated end to end with CPU fallback disabled. - **NVIDIA DirectML:** graph-level compatibility validated; use the separate CUDA artifact for substantially better NVIDIA performance. - **Intel DirectML:** expected to work on DirectX 12 hardware but not yet validated with this exact artifact. - **x86-64 CPU:** supported through ONNX Runtime CPU; actual speed depends heavily on memory bandwidth and thread count. DirectML requires Windows and a DirectX 12-compatible GPU. A GPU driver or execution-provider failure should be handled by the host application with CPU fallback. For production hardware certification, run the DirectML probe in a separate helper process so a native driver crash cannot terminate the app. ## Taurscribe Selection Taurscribe model ID: ```text granite-speech-4.1-2b-nar-portable ``` Development overrides: ```powershell $env:TAURSCRIBE_GRANITE_BACKEND = "directml" $env:TAURSCRIBE_GRANITE_DML_DEVICE_ID = "0" $env:TAURSCRIBE_GRANITE_BACKEND = "cpu" $env:TAURSCRIBE_GRANITE_CPU_THREADS = "8" ``` The DirectML device ID follows DXGI adapter order and is machine-specific. ## Files ```text encoder.onnx encoder.onnx.data projector.onnx projector.onnx.data embed_tokens.onnx editor.onnx editor.onnx.data tokenizer.json tokenizer_config.json preprocessor_config.json processor_config.json generation_config.json taurscribe_granite_nar_manifest.json manifest.json BENCHMARKS.md NOTICE LICENSE ``` `manifest.json` records artifact metadata, exact file sizes, and SHA-256 checksums for the runtime payload. ## Source and Attribution - Base model: [ibm-granite/granite-speech-4.1-2b-nar](https://huggingface.co/ibm-granite/granite-speech-4.1-2b-nar) - Original provider: IBM Granite Team - Original license: Apache License 2.0 - ONNX optimization and packaging: Taurscribe project No additional training or fine-tuning was performed by Taurscribe.