Neural

Neural · a local AI server for gpt-oss-120B

A 120-billion-parameter AI, running on one gaming PC.

The current Neural runtime runs OpenAI's original GPT-OSS 120B locally on a Windows PC, with terminal chat and an OpenAI-compatible local API. The production measurements further down this page belong to the separate NeuralServer runtime.

Download Neural and follow the beginner install steps. This installer is for the current model-aware runtime; the performance results below describe the separate NeuralServer production runtime.

117B
parameters in the model
12 GB
graphics card (RTX 3080 Ti)
1.72×
historical NeuralServer production result against llama.cpp
0
bytes sent to the cloud

Every square is one expert: 36 layers × 128

token 1/120
used now, on the graphics card used now, computed by the CPU from RAM stored on the graphics card stored in RAM
Real routing of 120 tokens of code generated by gpt-oss-120B, slowed down about 20×. The experts on the graphics card change as the server adapts to the conversation. That part replays the server's own admission rule over the trace.

The problem

The model is five times bigger than the graphics card.

AI models run fastest when all their weights sit in the graphics card's own memory. gpt-oss-120B takes 61 GB on disk, and a gaming graphics card has 12 to 32 GB (this PC's RTX 3080 Ti has 12). The usual fix is a datacenter GPU with 80 GB of memory, which most people rent in the cloud.

Drawn to scale, in the units Windows shows.

Neural's answer is to use the whole PC, with the graphics card and the processor each doing the part of the work it is best placed to do.

The trick

For any given word, most of the model rests.

gpt-oss-120B is a mixture of experts. Each of its 36 layers holds 128 small specialist networks, the experts. For every token, which is a word or a piece of one, a router picks the 4 experts that fit it best. The other 124 sit that token out.

One layer, one token: 4 of 128 experts do the work.

144experts used per token
4,608experts in the model
3%of the experts active at once

The catch: the picks change from token to token and are hard to predict. In tests, guessing ahead which experts come next never paid for itself. For code, the model calls on almost every expert it has within a couple of pages of output.

The split

Compute each expert where it already lives.

Graphics card

Holds the parts every token needs (attention and the router) plus the ~500 most-used experts. It is very fast, but only about 1 expert in 10 fits.

12 GB · 36 layers as CUDA graphs

Processor + RAM

All the other experts wait in RAM. When a token needs one, 8 CPU cores compute it right there, while the graphics card works on its own share at the same moment.

64 GB · AVX-512 · persistent CPU workers

The usual way to split a model like this is by layer: some layers live on the card, and the CPU handles the experts of the rest. Neural splits it by expert instead. In every layer, the most-used experts sit on the card and the rest stay in RAM, and both sides work on each token at the same time. The other option, copying experts to the card as they are needed, is slow, because every missing expert is 13 MB. Neural moves the work to the data instead of the data to the work.

It adapts to your conversation. An expert that keeps coming up gets copied to the graphics card in the background, a few experts per token, while the CPU reads it anyway. The card's share of the work grows as the conversation goes on.

One token

What happens, layer by layer, for every token.

  1. The graphics card reads the conversation so far (attention), and the router picks 4 experts.
  2. Experts already on the graphics card are computed there.
  3. At the same moment, the CPU computes the others straight from RAM.
  4. The results are added up and passed on. After all 36 layers, the next token appears.

In the historical NeuralServer production-runtime comparison, that loop averaged 24.69 tokens a second, including the first answer and three follow-ups in each session. This is not a measurement of the current model-aware runtime.

Results

Measured, not promised.

Same PC and existing gpt-oss-120B model, with fresh server processes taking turns against the installed llama.cpp b10361, using its decode-tuned -ngl 99 -ncmoe 31 -t 8 -c 16384 -fa on --jinja settings. October 1 uses the exact same saved API requests for both engines: a 13,000-token code context and four answers capped at 512 tokens, in Neural / llama / llama / Neural order. Decode rates are total timed tokens divided by total decode time, with two sessions per engine.

The older dates keep their original methods and results. Their answer rates are medians, while October 1 uses weighted rates and fixed request replay. The prompt row is a warmed-up measurement through September 30 and a fresh-session measurement on October 1. The chart does not join those method changes as a continuous code improvement. The first two rows are historical short-context research results; the rewrite was not re-measured on October 1.

October 2 adds a separate research screen for 16 independent requests. It is aggregate backend throughput; the task-quality gate is not cleared, and there is no production promotion.

All answers, weighted decode
Oct 1, two sessions per engine
First answer after a long prompt
Follow-up answers
Reading a 13,000-token code prompt
fresh session; median of two runs
 Neural, up to llama.cpp's speed (the line at 1×) faster than llama.cpp (faded: spread across runs and settings)

Production comparison: all numbers as a table

In the October 1 NeuralServer production-runtime comparison, the selected profile averaged 24.6910 tokens/s against llama.cpp's 14.3189 across all answers: 1.72× on this workload. First answers were 23.6047 versus 13.0566 tokens/s; follow-ups were 25.0756 versus 14.7957. Prompt processing in these fresh sessions took a median 8.666 versus 137.552 seconds. That prompt comparison is separate from September 30's warmed-up result. The installed llama configuration favours decode; this was not an exhaustive search for its best prompt settings.

The new software improvement is smaller than the engine-to-engine ratio. Keeping the eight CPU workers alive between expert calls raised Neural's decode rate by 1.74% in the normal adaptive comparison (23.8649 to 24.2807 tokens/s), and 2.885% in a fixed-placement control (19.8659 to 20.4391). Freezing placement was slower overall and is a diagnostic control, not the recommended setting. All corresponding output tokens matched in those CPU-only comparisons. A separate prefill study reduced warm 3k prompt latency by 7.03% (3.69655 to 3.43665 seconds); releasing unused CUDA cache saved about 1.11 GiB after a long prompt. These gains apply to different phases and workloads; they are not percentages to add together.

No additional quantization or checkpoint change. Native checks passed 432 bitwise cases, full-model checks compared 192 decode steps exactly, and 103 selected repository tests passed. One adaptive combined-profile run differed on its final two answers, so its strict output-identity gate failed and remains in the evidence. Both Neural repeats in the final llama comparison matched each other. API-request equality does not establish identical internal prompt tokens or output quality across engines. Neural times 511 decoded tokens per 512-token answer; llama reports 512, and each timing convention is retained.

Sources: decode study and reproduction, verified comparison, and prefill/cache review. All slow observations and failed experiments are retained. Source links require access to the private repository.

Two write-ups of this work: the technical documentation (architecture, every change with its number and verdict, method, the llama.cpp comparison) and a version for decision makers.

1.7–2.9%new CPU decode gain in adaptive and fixed-placement controls
7.03%lower warm 3k prompt latency in the separate prefill study
1.11 GiBless unused GPU allocator reservation after a long prompt

Development PC: NVIDIA RTX 3080 Ti 12 GB, Intel Core i7-11700K, 64 GB DDR4-3000, NVMe SSD. A token is about three quarters of an English word. Code is slower than prose: it calls on experts from all over the model, so more of the work lands on RAM, and RAM speed becomes the limit: expert reads remain the largest decode cost; the new worker scheduling reduces overhead without changing the weights or arithmetic precision.

For coding

Plugs into your editor like a cloud model.

The current model-aware runtime includes terminal chat and a local OpenAI-compatible chat API. An API client running on this PC can connect to it with these settings:

Base URLhttp://127.0.0.1:8001/v1
Modelgpt-oss-120b-neural
API keyBearer key required by the client; server does not check it by default. If NEURAL_API_KEY is set, use that value.
Context16,384 tokens
AccessLocal PC only; the server listens on 127.0.0.1

The built-in interface is terminal chat; the program does not open a browser chat page. See the runtime API notes for details.

Limits

What it needs, and where it stops.

You need

  • Windows 10 or 11, 64-bit, and Python 3.12 64-bit.
  • An NVIDIA Ampere-or-newer GPU with BF16 support and a driver that supports CUDA 13. The tested PC has an RTX 3080 Ti with 12 GiB of graphics memory; 12 GiB is the tested configuration, not a universal minimum.
  • A CPU with AVX2 and FMA. Neural uses a verified AVX-512 build only on its matching CPU; other compatible CPUs use a slower AVX2+FMA path, with slower prompt processing.
  • 64 GB of RAM is recommended.
  • About 195 GiB free on the data drive. The model and expert stores remain after setup.

Good to know

  • One conversation at a time: it is a personal server, not a shared one.
  • The October 1 NeuralServer production-runtime comparison averaged 24.69 tokens per second on its tested coding workload. That historical result does not measure the current model-aware runtime; other workloads and system conditions can also change performance.
  • Setup and first startup can take several minutes or longer. Time varies with the PC and download speed.
  • Speed depends on free RAM, so close memory-hungry apps first.

Download and install

Run the original GPT-OSS 120B model on your PC.

Download the current Neural repository as a ZIP, extract it, and use the two included Windows launchers. The installer prepares the Python environment, downloads the official model, and builds its local expert stores for you.

Download Neural for Windows (ZIP) · View the GitHub repository

For a fuller beginner guide, including custom data folders and troubleshooting, see the Windows quick start.

Before you download

  • Windows 10 or 11, 64-bit, with Python 3.12 64-bit from the official Python download page.
  • An NVIDIA Ampere-or-newer GPU with BF16 support and a driver that supports CUDA 13, plus a CPU with AVX2 and FMA.
  • 64 GB of system RAM is recommended. Allow about 195 GiB free on the data drive for the model and expert stores; setup keeps the model and stores after installation.

Install and start

  1. Install Python 3.12 if needed, using the official link above. Choose Windows installer (64-bit) and keep the Python launcher selected.
  2. Download the ZIP and extract it. Open the extracted neural-main folder.
  3. Double-click install_neural.bat and wait for setup to finish. It downloads the original GPT-OSS 120B model and prepares the local files; this large first download can take a while.
  4. Double-click start_neural.bat. Neural opens terminal chat and starts its local API at http://127.0.0.1:8001/v1.

The terminal chat is the included chat interface. An optional model advisor can be started with start_neural_advisor.bat; its report opens at port 8002. It does not choose or switch models automatically. Neural's default is the original GPT-OSS 120B checkpoint.

These instructions cover the current model-aware runtime. The site’s benchmark charts and historical server setup describe the separate NeuralServer production runtime; their figures are not measurements of this installer/runtime.

Questions

Fair questions.

Is this the full model, or a cut-down version?

It is the full gpt-oss-120B. OpenAI's published 4-bit expert weights are copied byte for byte into Neural's store. Nothing is re-quantized or pruned.

Does splitting the work change the answers?

The math is the same model. Neural's fast graphics-card code adds numbers in a slightly different order than the reference code, as GPU code generally does. Output quality was tested statistically, and the difference stays inside the spread the reference code itself shows when only its rounding order changes.

Why does RAM matter so much?

Every expert the CPU computes has to be read from RAM. Each token needs about 1.9 GB of expert weights in total, split between the graphics card and RAM. For code, the limit is how fast RAM can be read.

Why not just use llama.cpp?

llama.cpp is widely supported. In the historical NeuralServer production-runtime comparison on this PC, the October 1 matched coding workload measured 24.69 versus 14.32 tokens/s overall, or 1.72×, with a decode-tuned configuration. The new persistent CPU workers accounted for a separate 1.7–2.9% improvement within that runtime. These measurements are specific to that host, runtime and workload; they are not performance claims for the current model-aware runtime.

Can I run it on a Mac or on Linux?

Not today. The server is built and tested on Windows with an NVIDIA card. The ideas carry over, but the code does not yet.

Where did this come from?

Neural began as a research project on running very large mixture-of-experts models on consumer hardware. It kept a detailed lab notebook, including the ideas that failed. This server is what came out of it.