Ariadne MiniLM-L6-v2 robot intent

Developed by AKIKI.AI. An English 23-class intent classifier for short robot commands and observed STT transcripts. The model is an entirely frozen sentence-transformers/all-MiniLM-L6-v2 backbone with an identity-initialized 384 x 384 input affine and a new 23-class linear head. The affine transforms word embeddings before position/type embeddings. Outputs are mean-pooled, L2-normalized, and classified by the head.

This is an initial experimental model. Data and labels are synthetic and model-reviewed; human review and evaluation on real Parakeet transcripts are pending. Known errors are recorded below. Uploading this model does not deploy it to a robot.

Files and loading

The complete original frozen checkpoint is in base_model/; the four trained FP32 tensors are in adapter.safetensors. There are no machine-local symlinks. model_config.json and labels.json specify the output order. All model assets were copied from existing local files, not downloaded during packaging.

On supported Linux x86_64 hosts, use the prebuilt Rust engine with akiki:

from akiki import MiniLM

# A local copy of this repository; no Hub access during inference.
with MiniLM("./robot-intent", model_precision="fp32") as model:
    result = model.classify("come here")
    print(result.label, result.probabilities[result.index])

With akiki installed, python predict.py "come here" is the equivalent CLI. FP32 matches the reported validation. The package's default is INT8; other precisions have not been evaluated for this adapter. Current ARM64 wheels provide VAD only and do not include the MiniLM engine. No PyTorch is needed for Rust inference. The bundled model.py is the exact offline PyTorch reference; it needs requirements-reference.txt and loads with local_files_only=True.

Use plain observed transcript text. Do not use the desktop Clover Current user message: wrapper. Inputs above 512 tokens raise an error rather than being truncated. The model has no audio, speaker identity, dialogue history, or robot-state input. A bare imperative from a TV cannot be identified as TV speech from identical text alone.

Labels

ID Intent Meaning
0 NONE No identifiable supported command addressed to this robot. Ordinary chat, factual questions, explicitly quoted/reported commands, explicit speech to humans/pets/TV, unsupported requests, incomplete or unintelligible fragments, and negated commands. Do not guess a missing direction or missing negation.
1 STOP Stop ALL robot motion now: stop, wait, stay, freeze, hold on, do not move. Not stop talking, stop recording, stop following this recipe, or do not stop. An explicit immediate all-motion stop overrides another action in a compound utterance.
2 COME One approach toward the speaker: come here, come to me, come closer. Not ongoing following, robot-relative forward, or returning to an unspecified place.
3 FACE Orient the robot body toward the speaker: face me, look at me, turn to face me, over here. Not an unspecified turn around, a fixed-angle turn, or a gimbal-only request.
4 FOLLOW Continue tracking/following the speaker as the speaker moves, until stopped. Not a single approach.
5 BACK_UP Move the robot body backward a short distance without turning away.
6 GO_AWAY Turn the robot body away from the speaker and move off. Not backing straight up.
7 FORWARD Move the robot body forward relative to its own current heading, without targeting the speaker.
8 TURN_LEFT Turn the robot body left by a small/default fixed angle. Not gimbal movement or a request for a specifically different unsupported angle.
9 TURN_RIGHT Turn the robot body right by a small/default fixed angle. Not gimbal movement.
10 TURN_AROUND Turn the robot body 180 degrees; bare turn around means this label, not FACE.
11 SPIN Turn the robot body through one full 360-degree revolution for fun.
12 LOOK_UP Tilt the camera/head/gimbal one step upward; body stays in place.
13 LOOK_DOWN Tilt the camera/head/gimbal one step downward; body stays in place.
14 LOOK_LEFT Pan the camera/head/gimbal one step left; body stays in place.
15 LOOK_RIGHT Pan the camera/head/gimbal one step right; body stays in place.
16 LOOK_AHEAD Center the camera/head/gimbal, look straight ahead. Not move the body forward.
17 NOD Perform a yes gesture with the head/gimbal. Bare conversational yes is NONE.
18 SHAKE_HEAD Perform a no gesture with the head/gimbal. Bare conversational no is NONE.
19 LIGHTS_ON Switch on the robot base lights. Not room lights, screen brightness, or eye moods.
20 LIGHTS_OFF Switch off the robot base lights. Not room lights or eye moods.
21 SLEEP Enter voice-inactive mode until explicitly woken: go to sleep, stop listening, quiet until I wake you. QUIET is an alias of this same behavior, not a separate class. Not bedtime chat or temporarily stopping motion.
22 WAKE Resume reacting to voices: wake up, start listening again. Not waking a human or computer.

QUIET aliases SLEEP, since both suspend voice reactions until woken. FACE corresponds to the existing robot action named TURN. Bare turn around is TURN_AROUND; turn to face me is FACE. Eye moods are excluded.

An immediate all-motion STOP takes precedence over other requested actions. Other unresolved multiple actions are NONE. Factual questions, reported commands, explicit non-robot addressees, unsupported requests and unrecoverable fragments are NONE. Polite supported action requests are commands. See data/README.md and data/policy-cases.jsonl for the full policy.

Training and selection

  • Frozen base: 22,713,216 parameters, unchanged by hash check for every seed.
  • Trainable input affine: 147,840 parameters; new head: 8,855; total 156,695.
  • Three seeds: 0, 1, 2. Selected seed 1, epoch 25 by lowest unweighted validation NLL across all seeds and epochs. Test data was read after selection.
  • AdamW, batch 32, affine LR 1e-4, head LR 1e-3, no weight decay, gradient clip 1.0.
  • Square-root inverse-frequency weighted cross entropy, using training counts only.
  • FP32; TF32 and backbone dropout disabled. Minimum 10 epochs, patience 5, cap 50.
  • Training and selection took 33.7 seconds on physical GPU 1 (RTX PRO 6000 Blackwell). Complete histories and best adapters are in checkpoints/.

The dataset has 3,708 examples: 2,949 train, 379 validation, 380 test. NONE accounts for 2,713 examples (73.2%). There are 735 synthetic ASR/noise examples. These are not measured Parakeet transcriptions. Every split has all 23 labels. Variants from the same generated family and normalized duplicates stay within one split. Semantic paraphrases are not guaranteed disjoint. Only text and label_id are training inputs; metadata and clean references are excluded. Full data and generation/review provenance are in data/.

Selected-model results

Metric Validation (379) Test (380)
Accuracy 94.20% 93.95%
Macro F1 0.8338 0.8763
NLL 0.2408 0.1969
Commands predicted on NONE 2/272 8/272

Test STOP recall is 4/5 (80%), COME recall is 4/7, FACE recall is 4/5. There are only 3–7 test examples for most command labels. These synthetic results do not establish field performance. No confidence threshold or probability calibration has been fitted; probabilities are plain softmax. All per-class metrics and confusion matrices are in results.json.

Known limitations: don't move is predicted NONE; over here is predicted COME rather than FACE; some polite and compound commands are missed. The model produces 8 false command predictions on 272 NONE test examples (2.94%). The policy probes pass 60/78; they overlap the dataset and are integration checks, not an independent benchmark. policy-checks.json lists every probe and test-predictions.jsonl every test prediction. No retraining occurred after test inspection.

Verification and reproduction

The native Rust engine and the prebuilt akiki 0.1.2 Linux x86_64 wheel loaded all 23 outputs and matched all 32 PyTorch reference predictions. Maximum FP32 logit difference was 1.43e-5. Evidence is in native-verification.json and akiki-package-verification.json.

training-config.json records exact dataset hashes, versions, hyperparameters and source hashes. runtime.json identifies the network-disabled cached Docker image used for training. source/ contains original training, inference, generation and publishing scripts; source/train.py and source/model.py are exact snapshots of the trained run. Training still requires PyTorch and an existing local MiniLM directory. Supply absolute paths with --base-model, --data, --output and an available --device when reproducing. The inference package needs no training infrastructure.

Base revision: 1110a243fdf4706b3f48f1d95db1a4f5529b4d41. Base weights and adapter are Apache-2.0; see LICENSE, NOTICE, and the original model card in base_model/README.md. SHA256SUMS covers every packaged file except itself.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for Akiki-AI/Akiki-MiniLM-L6-v2-robot-intent