ArchiTek’s edge-AI processor and Acube’s software tools bring trained models into a scheduled flow of transfers, matrix tiles and programmable arithmetic.
AiOnIc is the edge-AI LSI designed by ArchiTek. The guide follows the engines used by our deployed kernels:
PSS
Link commands and select the next engine. A chain can contain many operations within one execution submission.
DMAP
Move and rearrange tiles between memory and VREG operands.
MMAP
Multiply prepared matrix tiles and reuse operands held in VREG.
KP
Run programmable arithmetic, normalization, Softmax and precision corrections where selected.
VREG banks 0–7 hold working tiles; they are not a separate 8 MB SRAM cache. The current board’s accelerator pool is 768 MiB. Model residency and CPU work are reported separately for each demo.
SW / TOOLS THAT MAKE IT RUN
Prepare. Link. Validate.
01
Convert the trained model
Freeze the matching checkpoint, tokenizer and processor. Extract weights, choose tile dimensions and prepare FP16 operands.
prepare_vision_encoder.py · build_whisper.py
02
Build a resident program
Lay out parameters and scratch, emit DMAP/MMAP/KP commands, relocate addresses and link the PSS chain.
resident_attention.py · resident_batches.py
03
Check the original values
Compare tile outputs and greedy tokens with ONNX or the original FP32 model. Retain failed trials and measure actual submissions.
Resident C++ owners connect model execution to camera capture, Japanese questions, caption display and USB audio.
resident_caption.cpp · run_voice.sh
Acube’s graphical development tools
AGTSAiOnIc runs as a Linux server. AGTCAiOnIc provides a graphical client on Windows, Mac and Linux for assembling algorithms with connected plugins and sending them to the server.
Weights and tensors are laid out in memory. PSS links the transfers, matrix operations and programmable kernels into a resident execution chain.
An explanatory animation of the deployed demos. Dots show ordering, not real execution speed or measured bandwidth.
Host CPU / I/ODMAP transfer & layoutMMAP matrix workKP programmable arithmeticPSS scheduling
One chain, many engines
Each PSS entry selects an engine and a command body, then points to the next entry. A million scheduled engine commands do not mean a million driver calls. The resident design submits a linked program and waits for its completion.
PSS→ DMAP → MMAP → KP → … → END
Resident does not mean everything fits twice
The encoder and decoder share one accelerator arena in the camera demos. A phase switch copies a prepared image into it. Weights are reused inside each phase; decoder K/V stays resident across generated tokens.
VREG banks are tile storage. They are not an independently managed 8 MB SRAM cache.
LAYOUT IS PART OF THE PROGRAM
Follow one matrix tile.
A logical tensor and a physical MMAP tile contain the same elements in different orders. Inspect both before trusting the result.
A · rows × K
×
B · K × columns
=
Output · FP32 partial sum
MMAP
Split heads, transpose K, merge context
Track the same 96 elements through a small illustrative buffer: eight tokens, three heads, four features. Colors identify heads; labels are token.feature. This is a logical permutation, before hardware-specific packing.
Pack → multiply → decode → accumulate
Gather the activation and trained weight slice.
Convert selected data to FP16 and pack for the operand layout.
Run the MMAP tile and decode its output order.
Accumulate K-slice partials in FP32; apply bias once.
Reuse an operand tile in VREG where scheduling permits, instead of repeatedly staging it through DRAM.
Three different “transposes”
Projection weights: ONNX may store output×input; the kernel needs the matching matrix orientation.
MMAP packing: blocked operand/output lane order is a physical permutation, not an algebraic transpose.
This 8×8 teaching grid and 4×4 packing are illustrative. Actual address generation depends on the emitted binding, type/form flags and tile geometry; do not use this graphic as an address-map specification.
PREFILL ONCE · REUSE THE PAST
One prediction. Then another.
Attention uses previously computed keys and values. The language head turns a hidden vector into scores over the vocabulary.
Attention at position 4
Bright cells are available past/current positions. Future positions are masked. Example dimensions and token IDs are illustrative.
scores = Q · Kᵀ / √d P = softmax(scores + causal_mask) context = P · V
Resident K/V cache
The output path
Context → merge headsOutput projection + residualRMSNorm → gated MLP → residualRepeat decoder layers → final RMSNormLM head → candidate correction → argmaxToken ID → tokenizer → displayed text
In this image
Prompt prefill has populated the cache. Click to predict the next example token.
Q heads and K/V heads
SmolVLM/SmolLM use grouped-query attention: nine query heads share three K/V heads in these decoder geometries. Each query head reads its assigned K/V head. v145 instead uses eight Q and eight K/V heads.
RoPE rotates Q and K by token position before they enter attention in the text/VLM decoders. V is not rotated. Whisper Tiny in v149 instead uses learned absolute position embeddings; its encoder attention is bidirectional and its decoder uses causal self-attention plus cross-attention.
Why keep FP32 correction?
The v145 LM head evaluates the vocabulary using FP16 MMAP, then re-scores its top 16 candidate rows in FP32 KP. Host code gathers the trained BF16 candidate rows; the correction arithmetic runs on AiOnIc.
This is a candidate approximation: it cannot recover a winning token absent from the top-16 set. Agreement is validated on retained prompts, not guaranteed for every input.
WHAT EACH RELEASE ACTUALLY RUNS
Same hardware. Different schedules.
Release
Input / model
Residency & execution
Accuracy evidence / limits
Measured command counts
Scheduled PSS engine entries from retained reports. These are not retired scalar instructions, FLOPs, driver-call counts or measured DRAM transactions.
Timings depend on prompt length, number of generated tokens, loading and GUI waits. The listed runs are not a controlled cross-model benchmark.
v144 naming caveat
The board's smollm_voice_v144/ holds private PocketSphinx runtime files. The active English voice launcher and cached SmolLM kernel remain under smollm_chat_v143/. v144 is the voice extension, not a separately validated new decoder architecture.
Caption agreement ≠ visual truth
A converted model can reproduce ONNX exactly and still misdescribe a scene. v139's fast 384 mode fails strict FP32 feature tolerance on retained images while matching their caption tokens. Native512 is a different accuracy/performance tradeoff.
FROM TRAINED CHECKPOINT TO BOARD DEMO
Convert. Measure. Compare.
01 / Freeze the source
Matching model family
Record checkpoint revision, tokenizer, processor and prompt template. Keep vision, trained connector, embedding and decoder weights from the same family.
02 / Establish reference
Known inputs, known outputs
Save camera pixels and image. Run matching ONNX or original FP32 checkpoint. Preserve intermediate tensors, greedy token IDs, EOS and hashes.
03 / Lower the graph
Tensor operations become tiles
Choose dimensions, transpose weights, slice M/N/K, pack FP16 operands. Emit KP for norms, Softmax, RoPE and required precision corrections; emit DMAP/MMAP where validated.
04 / Link memory and control
Resident PSS program
Allocate trained parameters, scratch, outputs and K/V. Relocate device addresses. Link engine commands and terminate the chain correctly. Load prepared images through the driver.
05 / Validate boundaries
Find the first divergence
Check orientation and packing, tile partials, accumulated projections, attention and whole-layer outputs. Then compare full caption tokens against the identical reference input.
06 / Optimize with evidence
Promote only passing schedules
Measure setup, phase switching, encoder, prefill, token loop and total. Try VREG reuse and wider tiles. Keep raw timing reports and rejected trials; recheck after every arithmetic change.
Speech now has an accelerator path
v145 retains the CPU Vosk path. v149 adds Whisper Tiny: CPU log-Mel features → FP16 DMAP/MMAP convolutions and projections → resident encoder attention → cached speech decoding → recognized Japanese → resident LLM-jp → streamed 48 kHz Open JTalk.
Each Whisper decoder layer chains Q/K/V in one submission. Selected cached attention stays FP32 on the CPU: the faster full-MMAP trial changed reference tokens. Lower-rate TTS trials were rejected in favor of the original voice.
Source notes
This guide is grounded in board README/methodology files, actual launchers and retained command-count reports for v124, v125, v139, v143/v144, v145 and whisper_tiny_v149. See sources.md for paths and evidence. Animations are teaching diagrams, not hardware traces.
No network, account or external JavaScript is needed. Open this folder's index.html in a browser. Use the top navigation or print a chapter.
MEASUREMENTS · METHODS · MISSING DATA
Compare the work. Then the numbers.
Current AiOnIc results alongside published edge-device measurements. A matching family name alone does not make precision, prompt, image resolution or timing boundaries identical.
No cross-device speedup claim. External hardware was not available for matched testing. Published throughput can include prompt/image tokens; our decode rate counts output tokens after the first. No TOPS-to-FPS estimates are used. Orin Nano/NX are members of NVIDIA's Jetson family.
01 / AiOnIc · retained deployment measurements
Release / workload
Measured result
Timing boundary / validation
v124 · SmolVLM 384
48.88 s / 51.36 s per caption
Two saved images; 30/28 tokens; loading included. Original ONNX token agreement. Approximate features.
v125 · warm SmolVLM
42.08 s / 41.00 s
Same saved workloads as v124; setup excluded. Phase copies remain. Features and tokens bit-exact to v124.
v139 · SmolVLM2-256M 384
33.83 s post-load; 59.39 s launch-to-caption
Fresh 18-token caption including EOS; encoder 16.79 s. ONNX token agreement; strict FP32 feature tolerance fails.
v144 / v143 kernel · SmolLM-135M-Instruct
7.11 s first token; 20.92 s for 32 tokens
Loading and speech excluded. Saved FP32 reference32/32. About 2.25 output tok/s after first, derived as31/(20.917−7.112).
v145 · LLM-jp-3-150m-instruct3
2.21–2.53 s first token; ~5.8 output tok/s
Paris/Osaka filtered controls,32 tokens, original FP32 reference. Speech and model loading excluded.
v145 · Japanese ASR
Original cold:18.29 s → balanced:8.53 s; original warm repeats:1.93 /2.76 s
Persistent recognizer. Cold profile comparison on identical synthesized PCM; warm values use original search. Not a human speech score. See the live-test panel below.
Sources: retained board reports and README/methodology files listed in sources.md. Single retained observations, not cross-platform medians. Accelerator arenas: v124/v125: 536.93 MiB; v139: 446.32 MiB; v145: 336.73 MiB. Host memory is additional.
02 / Published model-family results · different configurations
Device / backend
Model / precision
Published measurement
Comparison limits / source
Jetson Orin Nano Super · CUDA
SmolLM-135M base · Q2_K
190.0 benchmark tok/s
Prompt + generated tokens divided by timed inference, not output-only decode. Four threads, five-run median, llama.cpp b11146,24 Sep2026. Base model differs from v144 Instruct. yzma raw report / metric code.
Jetson Orin Nano Super · CPU
SmolLM-135M base · Q2_K
84.1 benchmark tok/s
Same external suite as above; not measured with AiOnIc's precision or prompt.
Raspberry Pi4 Model B · CPU
SmolLM-135M base · Q2_K
35.4 benchmark tok/s
Same external suite, four threads. Useful within that suite; no direct AiOnIc decode-rate ratio.
Arduino UNO Q · CPU
SmolLM-135M base · Q2_K
32.2 benchmark tok/s
Same suite. CPU result, not an NPU measurement.
ROCK5B+ / RK3588 · three NPU cores
SmolVLM2-256M · W8A8 decoder / FP16 vision,384²
62.81 generated tok/s;97.59ms prefill
78 prefill /166 generated tokens; RKLLM1.2.3; peak0.59GB reported. Vision/camera time is not included in the decoder number. Checkpoint revision and ONNX-equivalent accuracy not established. Radxa run log.
No same-checkpoint, same-precision, same-prompt measurement available. See the explicitly different-model context below.
Jetson Nano (legacy) / AGX Orin
Our exact deployed configurations
Not found in verified sources
Do not substitute Orin Nano numbers for legacy Jetson Nano, or scale by TOPS.
Why some very high VLM “tokens/s” values are excluded
The yzma multimodal benchmark adds input image/text tokens to output tokens before dividing by elapsed time. Its number is an aggregate metric; treating it as generated-caption speed would overstate decode performance. The guide therefore does not plot it against AiOnIc's output-only token rate. Inspect the metric implementation.
03 / Other-model context · not a ranking
Platform
Different workload
Published value
Limits / source
Raspberry Pi5 · Ollama CPU
SmolLM1.7B, quantization not specified
7.50 decode tok/s;11.73 prefill tok/s
28 prompt /393 generated tokens. This is1.7B, not135M, and a different prompt. Firsthand2024 run: author's output.
Supported-model lists or peak TOPS do not establish caption latency. A matching measured run is still needed.
05 / v149 · resident Whisper + Japanese voice
The fresh Y02 question was recognized as 「パリはどこにありますか」. All nine recognition tokens, including EOS, match the original Whisper model. v148 replay used the exact same recording and generated identical chat tokens.
Measurement
v148 replay
v149 live
Whisper recognition
20.991 s
20.965 s
Cached speech decoder
3.867 s
3.681 s
Processing through playback completion
45.143 s · sequential stage sum
41.563 s · measured interval
Question onset → spoken reply completed
48.064 s · replay estimate
44.483 s · estimated voice onset
Whisper execution submissions
451
355
Models were loaded before recording; chat was capped at 32 tokens and did not reach EOS. Streamed synthesis, generation and playback overlap: do not add their durations. Voice onset excludes the cue echo; timestamps are ALSA wall times, not acoustic loopback. Strict FP32 encoder feature tolerance still fails. One correct live question is not a general Japanese word-error benchmark.
04 / Speech interaction · live microphone evidence
Four real microphone questions were recorded. Only one matched the requested wording exactly. USB playback completed; the user reported that the first round's Paris reply was wrong and its Osaka reply useful. These are latency measurements with explicit recognition failures, not a reliable Japanese speech-accuracy benchmark.
Live question / gain
ASR
LLM
Synthesis / playback
Question end → audio start / complete
Recognition
Paris ·35%
8.20s
7.57s
6.05 /12.67s
22.84 /35.51s
Failed: あるのはどこにありますか
Osaka ·35%
10.29s
8.12s
6.50 /13.67s
25.96 /39.64s
Failed: 教えて → 進んで
Paris ·75%
13.28s
7.35s
9.21 /19.19s
30.91 /50.11s
Failed: 今ありますか
Osaka ·75%
6.34s
7.99s
3.18 /6.55s
18.56 /25.11s
Matches requested wording
All use balanced search and a 32-token response cap; replies reached that cap, not EOS. No clipped input samples were observed. The cold synthetic Paris control fell from18.29s to8.53s with balanced search; all four synthetic controls retained their text. Narrower search harmed real speech and is rejected. Level normalization did not fix the real transcripts.
“Question end” is estimated from microphone amplitude. “Audio start/end” means ALSA submission/completion, not acoustic measurement at the speaker. Model setup, recording cue, ASR, LLM, synthesis and playback must be reported separately.
What a fair comparison requires
Pin the same checkpoint, prompt/template, tokenizer, image pixels and processor. Record precision and corrections, context length, batch size, power mode, runtime version, output-token limit/EOS, loading boundary and sample count. Compare accuracy as well as latency.
Coverage and provenance
Accessed23 Oct2026. Published numbers were not reproduced here. Family rows identify model or quantization differences explicitly; context rows are different models. Missing data stays missing. No power-efficiency claim is made without measured board-input energy.
Application examples published by Acube: cameras that adapt signs, track animals and help identify people.
These are website-reported applications, not performance measurements of the six language demos in this guide. Open a source post for its original context.
01 / SMART SIGNAGE
A familiar face. Relevant content.
Recognize registered visitors and select content for them, with registration for new faces.
AiOnIc cameras support animal detection and counts inside and outside a farm fence. The exhibition also presented farm and parking digital-twin collaboration with WebOccult.
Detection, classification and language models all need matching parameters, deliberate tensor layouts and a validated execution schedule. The data-flow and conversion chapters explain how our language demos approach that work.
Explore the original posts
Descriptions are short summaries of Acube’s public Technology posts. They do not establish throughput, power consumption or current deployment status.