The interesting part of the VKORE release is not just the claim that inference hardware trained a language model. It is the boundary between what has been released and what a reader can independently repeat.
The authors report pretraining VKORE-325M-NPU-Base from random initialization on inference-only NPU hardware, then comparing it with a B200-trained reference. Both checkpoints are public. The long-run stability technique and training loop are not. [1, 2]
That gives the release a useful place on a reproducibility map: you can inspect the architecture and rerun a checkpoint evaluation, while repeating the hardware-training procedure still requires information outside the public package.
Original evidence map based on the authors’ release. “Public evaluation” means the artifacts are available; I have not rerun the models.
First, keep the hardware comparison straight
The model card describes 32 NPU chips on one side and a B200 GPU reference on the other. It reports a matching model design, initialization and training recipe. [2]
That is a claim about a completed training result on those setups. It is not a one-chip-versus-one-chip efficiency comparison. Without matched throughput, utilization, energy and end-to-end resource accounting, the loss result cannot establish which setup is faster or more economical.
There is a lot of engineering between “a backward pass runs” and “a long training run stays stable.” The release itself makes that distinction and says the stability technique is under patent application. Public weights are valuable evidence of a resulting model; they do not disclose the process that produced it. 🔎
Then, read the denominator
This is a byte-level language model. Token identifiers correspond to byte values, and the released configuration has a vocabulary of 256. Its context length is also 256—bytes in this setup, not 256 words. [2, 3]
That matters when reading the losses. The authors report unseen-text cross entropy of 0.7993 for the NPU checkpoint and 0.7994 for the GPU reference, expressed using natural logarithms. Their evaluation script converts those values to bits per byte by dividing by ln(2). [2, 4]
The conversion is small enough to check directly:
import math
for name, loss in [("NPU", 0.7993), ("B200 reference", 0.7994)]:
print(f"{name}: {loss / math.log(2):.4f} bits per byte")
NPU: 1.1531 bits per byte
B200 reference: 1.1533 bits per byte
That reproduces arithmetic on the authors’ rounded reported losses. It is not a fresh model evaluation. ✅
You also cannot compare these loss values directly with a different model’s subword-token loss. Change the tokenizer and you change the denominator. Even the same text can contain a different number of bytes and characters; UTF-8 makes that especially obvious beyond plain ASCII.
The corrected holdout is the stronger part
The release distinguishes two evaluation sets. One uses 256 windows from the training corpus. The other uses 1,024 windows from a separate FineWeb-Edu shard that the authors say was not used for training. The post acknowledges that the earlier model card called the training-corpus windows held out, then corrects that description. [1, 2]
This is a useful correction. Random windows from a training file do not become an unseen corpus merely because you save the evaluation offsets separately. The separate-shard test is the relevant result for the stated unseen-text claim.
The public script selects the same windows for both checkpoints and computes a difference for each window. That paired comparison avoids asking two unrelated sample averages to carry the whole argument. [4]
The authors report a mean difference of −0.0001 with a standard error of 0.0007, NPU minus GPU. The estimate is smaller than its reported uncertainty. That supports “no clear loss difference in this evaluation.” It does not prove identical weights, universal equivalence, or equal behavior on every downstream task. ⚠️
What I would preserve when rerunning it
I inspected the pinned model card, configuration and evaluation script. I did not download the model weights, evaluate the checkpoints, or access NPU hardware.
For a rerun, the essential records are the exact revisions of both checkpoints and the dataset, the selected byte windows, each checkpoint’s per-window losses, and the script revision. The published evaluation script names repositories without pinning their revisions, so those pins belong in the reproduction record. [4]
The original script also downloads the specified data shard and loads the checkpoints. That is a real workload, not a metadata-only inspection. I would check the required memory and download size before starting it, rather than turn the source’s convenient command into an unverified completion-time promise.
The release is worth reading because it separates an ambitious hardware claim from an accessible evaluation package. Keeping those layers distinct makes it easier to give credit for the public artifacts and ask precise questions about what remains unavailable. 💡
References and credits
[1] The authors’ NPU pretraining article.
[3] Pinned model configuration.
[4] Pinned unseen-text evaluation script.
Diagram: original. Numerical training and evaluation results are attributed to the VKORE authors, not independently reproduced here.
AI disclosure
AI was used to draft the article.

Top comments (0)