Acube — AI in your HandAiOnIc FIELD GUIDE / 150LOCAL · OFFLINE
THE HARDWARE · THE SOFTWARE · THE EXECUTION CHAIN

AiOnIc.
From silicon to solutions.

ArchiTek’s edge-AI processor and Acube’s software tools bring trained models into a scheduled flow of transfers, matrix tiles and programmable arithmetic.

HW / AIONIC PROCESSOR

The chip behind the demos.

AiOnIc chip photograph from Acube’s Our Services section
AiOnIc · photograph from Acube / Our Services

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.

tools/prepare_reference.py · profile_instructions.py
04

Run the application

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.

AGTCAiOnIc graphical tools and plugin interface

Acube’s GUI development project →

TRAINED MODEL→ software conversion → resident PSS → DMAP / MMAP / KP → application
FROM CAMERA OR QUESTION TO LANGUAGE

A model becomes
a stream of work.

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

  1. Gather the activation and trained weight slice.
  2. Convert selected data to FP16 and pack for the operand layout.
  3. Run the MMAP tile and decode its output order.
  4. 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.

Attention K: [token, head, feature] becomes [head, feature, token] for QKᵀ.

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.

ReleaseInput / modelResidency & executionAccuracy 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.

Download data
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 / workloadMeasured resultTiming boundary / validation
v124 · SmolVLM 38448.88 s / 51.36 s per captionTwo saved images; 30/28 tokens; loading included. Original ONNX token agreement. Approximate features.
v125 · warm SmolVLM42.08 s / 41.00 sSame saved workloads as v124; setup excluded. Phase copies remain. Features and tokens bit-exact to v124.
v139 · SmolVLM2-256M 38433.83 s post-load; 59.39 s launch-to-captionFresh 18-token caption including EOS; encoder 16.79 s. ONNX token agreement; strict FP32 feature tolerance fails.
v144 / v143 kernel · SmolLM-135M-Instruct7.11 s first token; 20.92 s for 32 tokensLoading 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-instruct32.21–2.53 s first token; ~5.8 output tok/sParis/Osaka filtered controls,32 tokens, original FP32 reference. Speech and model loading excluded.
v145 · Japanese ASROriginal cold:18.29 s → balanced:8.53 s; original warm repeats:1.93 /2.76 sPersistent 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 / backendModel / precisionPublished measurementComparison limits / source
Jetson Orin Nano Super · CUDASmolLM-135M base · Q2_K190.0 benchmark tok/sPrompt + 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 · CPUSmolLM-135M base · Q2_K84.1 benchmark tok/sSame external suite as above; not measured with AiOnIc's precision or prompt.
Raspberry Pi4 Model B · CPUSmolLM-135M base · Q2_K35.4 benchmark tok/sSame external suite, four threads. Useful within that suite; no direct AiOnIc decode-rate ratio.
Arduino UNO Q · CPUSmolLM-135M base · Q2_K32.2 benchmark tok/sSame suite. CPU result, not an NPU measurement.
ROCK5B+ / RK3588 · three NPU coresSmolVLM2-256M · W8A8 decoder / FP16 vision,384²62.81 generated tok/s;97.59ms prefill78 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.
Raspberry Pi5 · CPUOur exact SmolLM-135M-Instruct / LLM-jp150M configurationNot found in verified sourcesNo same-checkpoint, same-precision, same-prompt measurement available. See the explicitly different-model context below.
Jetson Nano (legacy) / AGX OrinOur exact deployed configurationsNot found in verified sourcesDo 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

PlatformDifferent workloadPublished valueLimits / source
Raspberry Pi5 · Ollama CPUSmolLM1.7B, quantization not specified7.50 decode tok/s;11.73 prefill tok/s28 prompt /393 generated tokens. This is1.7B, not135M, and a different prompt. Firsthand2024 run: author's output.
Jetson Orin Nano8GB · SuperSmolLM2-1.7B64.5 tok/sNVIDIA JetPack6.2 table4; larger different-generation model. NVIDIA vendor report.
Jetson Orin NX16GB · SuperSmolLM2-1.7B68.8 tok/sSame vendor source, table6; not the150M Japanese checkpoint.
Pi5 + DEEPX DX-M1M / DX-M1Qwen3-1.7B,96 prefill tokens4.64 /11.60 tok/s; TTFT599 /545msDifferent model and toolchain; no matching SmolVLM/LLM-jp result. Raspberry Pi / Sixfab report.
Hailo-10H / other edge NPUsMatching checkpoints and workloadNot verifiedSupported-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.

Measurementv148 replayv149 live
Whisper recognition20.991 s20.965 s
Cached speech decoder3.867 s3.681 s
Processing through playback completion45.143 s · sequential stage sum41.563 s · measured interval
Question onset → spoken reply completed48.064 s · replay estimate44.483 s · estimated voice onset
Whisper execution submissions451355

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.

Whisper + LLM-jp use 570,523,648 bytes / 544.09 MiB and successfully run together in the 768 MiB pool. The user retained and confirmed the original 48 kHz voice. Retained v149 measurements · Methodology and rejected trials

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 / gainASRLLMSynthesis / playbackQuestion end → audio start / completeRecognition
Paris ·35%8.20s7.57s6.05 /12.67s22.84 /35.51sFailed: あるのはどこにありますか
Osaka ·35%10.29s8.12s6.50 /13.67s25.96 /39.64sFailed: 教えて → 進んで
Paris ·75%13.28s7.35s9.21 /19.19s30.91 /50.11sFailed: 今ありますか
Osaka ·75%6.34s7.99s3.18 /6.55s18.56 /25.11sMatches 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.

Full real-speech timing and accuracy data · Cold search controls. The higher-gain round also changed speaker distance/delivery, so it does not isolate gain as the cause of the Osaka improvement.

“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.

Machine-readable evidence · Metric definitions and sources

FROM ACUBE’S TECHNOLOGY POSTS

Edge AI.
Out in the world.

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.

Published: Sign Expo 2024, Osaka.

Read the application →
02 / AUDIENCE-AWARE DISPLAYS

Signs that respond
to their audience.

Classify an audience by age group and gender, then switch advertising content to suit the audience.

Published: SignExpo 2023, Osaka.

Read the application →
03 / FARM & PARKING DIGITAL TWINS

Count. Track.
See the boundary.

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.

Published: NexTechWeek 2023, Japan.

Read the application →
04 / FACIAL RECOGNITION

Recognition
at the edge.

Quadrant Labs demonstrated an AiOnIc camera facial-recognition solution at the Indian Railways exhibition.

Published: October 2023, New Delhi.

Read the application →

The shared conversion problem

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.

Browse the Technology category →