Introducing Julia 1

Our decision model that runs on almost anything.

Monochrome geometric artwork for Julia 1

Julia 1 opens our research into compact decision models. It builds on mmBERT-small, a multilingual encoder, and chooses among answers supplied with a question. It has 144.3 million parameters and runs on a CPU.

Our question: can one model classify, rank levels, and answer yes-or-no questions as the options change? Julia 1 is the first result of that investigation. Here are its successes, its failures, and the methods we used to measure them. We'll update this page soon with more examples, tests, and useful information about Julia 1.

The question behind Julia

One interface, several kinds of decision.

The model takes context, a question, and 2 to 20 possible answers. It chooses one and returns scores in the order the options were supplied. This format lets us study different tasks with the same model and a direct measure: how many choices did it get right?

Consider the message, “I was charged twice for the same order.” Given Billing, Shipping, and Account access, Julia picks a destination. The next question might be “How urgent is this request?” with low, medium, and high as options. The example shows the interface; the results below show how it performed on defined tests.

The first results

Four tasks, with one important failure.

In our September 24, 2026 evaluation, Julia 1 scored above the supplied Jev references on three of the four tasks below. It answered 1,463 of 2,000 typed decisions correctly (73.15%), a margin of 0.45 percentage points over the reference. In the 100-example pilots, it classified 94 news items and 86 emotions correctly. On emotion classification, the difference was 38 percentage points above the reference.

The banking pilot was harder. With 72 categories and a step that narrows the list before the final decision, Julia answered 64 of 100 examples correctly; the Jev reference is 87%. Long lists of similar categories are a concrete area for improvement.

Julia 1 across four tasksAccuracy on 2,000 typed decisions and three 100-example pilots. The Jev series reproduces the protocol's reference values.
100%75%50%25%0%Typed decisions · Julia 1: 73.2%Typed decisions · Jev reference: 72.7%Typed decisionsAG News · Julia 1: 94%AG News · Jev reference: 91%AG NewsDAIR Emotion · Julia 1: 86%DAIR Emotion · Jev reference: 48%DAIR EmotionBanking77 · Julia 1: 64%Banking77 · Jev reference: 87%Banking77
  • Julia 1
  • Jev reference

Julia 1 evaluation, September 24, 2026; Jev reference values from the comparison protocol

4 rows
Typed decisions1,463 / 2,00073.15%72.70%
AG News, 4 labels94 / 10094%91%
DAIR Emotion, 6 labels86 / 10086%48%
Banking77, 72-label shortlist64 / 10064%87%

One model across 52 locales.

We also evaluated Julia on MASSIVE, choosing one of 18 scenarios for each example. It got 110,573 of 154,648 cases right (71.50%) across 52 locales. The test includes European Portuguese and US English.

3 rows
All 52 locales110,573 / 154,64871.50%
Portuguese (pt-PT)2,565 / 2,97486.25%
English (en-US)2,580 / 2,97486.75%

The test measures the choice of one among 18 scenarios. Brazilian Portuguese, intent classification, and slot filling remain for future evaluations.

A new CPU measurement.

In a CPU run recorded on September 25, 2026, Julia 1 answered 1,451 of 2,000 typed decisions correctly (72.55%). The 100-example pilots recorded 94 correct answers in AG News and 86 in DAIR Emotion. In the 72-label banking pilot, it got 60 right and abstained three times. Abstentions count among the 100 cases.

4 rows
Typed decisions1,451 / 2,00072.55%100%
AG News, 4 labels94 / 10094%100%
DAIR Emotion, 6 labels86 / 10086%100%
Banking77, 72-label shortlist60 / 10060%97%

This run used PyTorch 2.14.0+cpu, strict encoding, and a 1,024-token limit. The record identifies the weights by a SHA-256 starting with df853bf7fe42 and includes complete counts and dataset identifiers. The package records the device as CPU.

Julia 1 across devices.

We have measurements from an Apple M4 Mac, an Intel Core i5-1235U computer, and a Samsung SM-X510 tablet. The inputs and execution paths appear below the table.

7 rows
Apple M4, one per call12833.15 ms44.23 ms28.01
Apple M4, batches of 16128312.11 ms per batch313.44 ms per batch51.20
Samsung SM-X510, ONNX Runtime40203 ms205 ms5.0
Intel Core i5-1235U, typed decisions2,000294.81 ms428.49 ms—
Intel Core i5-1235U, AG News100107.83 ms142.89 ms—
Intel Core i5-1235U, DAIR Emotion10089.83 ms118.95 ms—
Intel Core i5-1235U, Banking771003,713.54 ms5,125.10 ms—

On the Mac, each request had 100 context words and four options. We used checkpoint df853bf7fe42, the local Python runtime, the public mmBERT-small tokenizer, and four CPU threads. Each batch time covers all 16 decisions; the process occupied 370.6 MiB of RAM at the end of that run.

On the Samsung SM-X510, the reported run processed 40 decisions in 8 seconds (5 per second, or 300 per minute), covering 3,693 tokens in total, about 92 per decision and an effective rate of 462 tokens/s. Latency ranged from 193 to 205 ms per decision. The tablet used Android 16, Python 3.13.13, ONNX Runtime 1.27.0, and native Rust tokenization. ONNX Runtime listed NNAPI and CPU; the driver fell back to CPU per operator in this run. Peak process RSS was 393.1 MB. The 550.1 MB weight file was memory-mapped. XNNPACK miscompiles a Reshape on this graph and was left out of the run.

The i5 times come from the 2,300 predictions.jsonl records in the September 25 evaluation package. That run used PyTorch 2.14.0+cpu, strict encoding, and the runtime identified in the package. The Banking77 test includes narrowing 72 categories before selection. The package records the device as CPU; the processor model was supplied with the evaluation. Workloads differ across devices; see the data and conditions for each measurement.

What we built

From multilingual encoder to decision model.

mmBERT-small provides the language foundation and tokenizer. Julia 1 adapts that foundation to score alternatives presented alongside context and a question. The 144.3-million-parameter checkpoint produces a choice for classification, routing, ordered scales, and yes-or-no questions. The weights occupy 550.5 MiB.

100%8%50%8%79%?
Shape comparison illustration. The percentages vary with shape, corners, and color.

The Python 3.11+ runtime runs the model on a CPU. The evaluated configuration accepts up to 1,024 tokens for context, question, and options. Larger lists can pass through a Router that narrows candidates in groups; the Banking77 test shows that this narrowing can lose the correct answer. For an integration, measure latency and memory with the inputs and hardware you plan to use.

Why we used mmBERT-small

Our early team works with limited funding and compute. Training a multilingual model from scratch would have required far more data, infrastructure, time, and money than we had for this first release. mmBERT-small already provided a multilingual encoder and tokenizer. We started from those weights, built the decision components, and trained Julia 1 to choose among answers supplied with a question. Julia 1 is not a fine-tuned Qwen model.

That choice let us test the model, training process, and evaluation on a small budget. Julia 1 is our first public validation of this approach. The results show where it works and where we need to improve, especially with long option lists and tasks that require outside knowledge or multi-step reasoning.

The challenge of building with limited resources

Our total cloud GPU spending on Julia 1 training and experiments came to about R$540 (US$104.08). That budget let us put the approach to the test, measure the results, and find concrete failures. Training a multilingual foundation from scratch would require a much larger investment.

For Julia 2, we plan to develop our own foundation architecture without mmBERT. The work will build on what Julia 1 taught us and the limitations our tests have already exposed. Julia 2 is still in development.

Supersonic Labs is fully open to investment and funding to advance this research. To get in touch, send a DM to @supersonicai on X.

How we measured

The Typed Decisions test has 400 cases, with five decisions per case: a choice, an ordered score, or a yes-or-no answer. Julia got 428/600 right in Choice, 484/600 in Noul, and 551/800 in Score. The three classification pilots follow this version of the Jev protocol. We evaluated Julia with H200 BF16 inference and strict input encoding; the Jev column uses the protocol's reference results. Abstentions count as errors. The model repository includes the full results and checkpoint provenance.

The results cover decisions among answers supplied with the question. External knowledge and multi-step calculations call for other tests. To apply Julia in a new domain, evaluate real questions and options from that domain. Consequential decisions need human review.

Explore the model

Julia 1 on Hugging Face contains the weights, Python interface, metrics, provenance, and instructions to download and run the model. The artifacts are licensed under Apache 2.0.

We are also building our own API for Julia 1. We plan to open access soon for anyone who wants to integrate the model. The launch price will be $0.025 per million input tokens and $0.00 per million output tokens.

Back to the lab