Softanza
DémarrerEnglish
Softanza
Langage et intelligence

Palier neuronal

Un vrai moteur d'inférence, vérifié contre numpy (BERT et LLM, décodage contraint) ; l'entraînement et la fonderie sont dus.

4 Strong · 4 Solid · 3 Partial · 1 Emerging

Mesuré contre : ggml/llama.cpp · ONNX Runtime · Dossiers : base/neural(s'ouvre dans un nouvel onglet) · Pour les programmeurs : la référence de ce domaine

un connectome réel, dessiné par le canevas
un connectome réel, dessiné par le canevas. rendu par le garde connectome_real de la bibliothèque et commis avec lui à 0e72e2e2c sous le nom connectome_real.png · la source(s'ouvre dans un nouvel onglet)

Repensé depuis les premiers principes

Ce que Softanza a gardé de ce qui marche, et ce qu'elle a repensé, tel que la bibliothèque l'a écrit dans ses documents de conception et ses narrations.

La manière SoftanzaChaque capacité fonctionne sans aucun modèle, gagne en finesse quand un modèle local est présent, et ne dépend jamais d'un service payant ou distant.

Gardé des meilleures pratiques

  • Les modèles sont des fichiers GGUF standard, exécutés par le moteur ggml intégré. Softanza consomme d'abord le format commun, et n'apprend que plus tard à l'écrire. source(s'ouvre dans un nouvel onglet)
  • Le décodage contraint par une grammaire reprend l'algorithme de l'échantillonneur de llama.cpp, la référence pour GBNF. La machine elle-même est écrite en interne. source(s'ouvre dans un nouvel onglet)
  • L'encodeur de texte est vérifié contre une implémentation numpy indépendante du même calcul, dans une marge de tolérance mesurée. source(s'ouvre dans un nouvel onglet)

Repensé

  • La structure élimine les réponses mal formées, pas les mensonges. Une grammaire façonne la réponse pendant sa génération. Un tribunal vérifie ensuite les valeurs, ce qu'aucune grammaire ne sait faire. source(s'ouvre dans un nouvel onglet)
  • Un appel au modèle est une fonction pure et typée : le type déclaré ou un refus, un budget obligatoire, aucun pouvoir d'agir. Une réponse cassée ne passe jamais pour une valeur. source(s'ouvre dans un nouvel onglet)
  • Un fichier de modèle ne s'ouvre que si son empreinte correspond à une empreinte enregistrée. La vérification précède toute lecture, car c'est l'analyseur qui est exposé aux attaques. source(s'ouvre dans un nouvel onglet)
  • La consigne jointe à une demande structurée est fixée par la mesure. Des conseils supplémentaires ont fait tomber les réponses valides à 0 sur 10, et ont été retirés. source(s'ouvre dans un nouvel onglet)

The consumption side is complete and genuinely wired to a patched, vendored ggml: real GGUF loading, id-exact tokenizers, a numpy-parity BERT encoder, a multi-architecture causal LLM decoder with grammar-constrained decoding, and a measurement-gated GPU path. What is not there is the production side. A llama.cpp-class runner, wired into a governed library — not yet a training or model-production platform.

Ce qu'un artisan en fait, et ce qui se distingue

  • numpy-parity BERT encoder (1.64e-7)
  • grammar-constrained decoding wired to the structured-output contract
  • id-exact WordPiece and BPE tokenizers
  • measurement-gated wgpu GPU path (2-5x)

Ce qui est dû

  • wire ggml's backward pass -- the training foundry
  • a quantization (encode) path
  • ship or fetch a real semantic model for CI
  • ONNX import

La manière Softanza, exécutée

Ce que Softanza fait autrement dans ce domaine, montré par du code tiré de ses narrations et de ses gardes, et exécuté pour cette page.

Une réponse bien formée mais fausse passe quand même : le schéma garantit la forme, jamais la vérité, et le test montre cette limite exprès.

Softanza
oP = StzOutputSchemaQ([
	[ :field = "person", :type = :string ],
	[ :field = "age",    :type = :number, :must = [ [ ">=", 0 ], [ "<=", 130 ] ] ]
])
aLie = oP.ParseOutput('{ "person":"Ada Lovelace", "age":9 }')
chk("a schema-valid LIE validates -- Ada Lovelace was not nine", aLie[:ok] = 1)
chk("...and the court has no complaint to make about it", len(aLie[:findings]) = 0)
Sortie
  [OK] a schema-valid LIE validates -- Ada Lovelace was not nine
  [OK] ...and the court has no complaint to make about it

exécuté le 2026-10-01 21:17 dans la bibliothèque au commit 0e72e2e2c ; tiré de base/test/neural/structuredoutput_narrated.ring(s'ouvre dans un nouvel onglet)

Un appel au modèle déclaré comme rendant un nombre, avec un budget obligatoire, fournit un vrai nombre utilisable dans un calcul, pas un texte à décoder.

Softanza
oN = new stzLLMFunction("add")
oN.SetPrompt("Compute: {input}")
oN.ReturnsNumber()
oN.Budget(2)
oN.SeedAnswer("2+3", 5)
chk("a Number-typed answer computes", oN.Call_("2+3") + 1 = 6)
Sortie
  [OK] a Number-typed answer computes

exécuté le 2026-10-01 21:17 dans la bibliothèque au commit 0e72e2e2c ; tiré de base/test/neural/llmfunction_narrated.ring(s'ouvre dans un nouvel onglet)

Les couloirs, un par un

Les couloirs et leurs notes sont cités tels qu'ils ont été lus à la source, le Read from the source on 2026-09-16.

GGUF model loading
Strong
neural_embed.zig loads GGUF metadata + weights into a ggml context; F16/Q8_0 de-quant on load; tested against a committed tiny_bert.ggufneural_embed.zig; tiny_bert.gguf
Tokenizers
Strong
WordPiece/SentencePiece-metaspace and GPT-2 byte-level BPE from the GGUF vocab; tokenization is id-exact against a numpy reference
Encoder inference (BERT family)
Strong
Full BERT-family forward (MiniLM/BERT/RoBERTa/jina-bert-v2): embeddings, NER, rerank, matching an independent numpy reference to 1.64e-7neural_embed.zig; test/neural BERT numpy-parity 1.64e-7
Constrained / structured decoding
Strong
GBNF grammar-constrained decoding makes invalid tokens unemittable; ~5 calls per valid answer without the grammar, one withgbnf_machine.zig / schema_gbnf.zig; test/neural GBNF
Decoder inference (causal LLM)
Solid
llama/qwen2/qwen3/smollm with KV-cache, sampling, streaming; CI has no generative model, so proven by construction, not by a parity fixtureneural_gen.zig
Tensor ops & the numeric bridge
Solid
Vendored ggml tensor core wired; stzMatrix<->ggml bridge routes f64 matmul through ggml; the bridge is matmul-only, no backward passneural_matmul.zig
Semantic index & embeddings pipeline
Solid
stzSemanticIndex AddText/Search over StzNeuralEmbeddingOf; shipped and tested, but the strong model is user-supplied (only tiny_bert.gguf tracked)stzSemanticIndex
GPU execution
Solid
wgpu resident BERT backbone auto-routes to GPU via the calibration foundry: 2.08x on the backbone forward, 5.3x over full CPU forward; training sees no GPUneural_backbone.zig (GK0-GK2c)
Training & backward pass
Partial
nn.zig forward + backward SGD for small dense MLPs (learns XOR, tested); no transformer training, ggml-opt.cpp vendored but never callednn.zig; test/learning XOR training
Quantization
Partial
Consume-only: F16 and Q8_0 de-quantized on load (dequantRows); no encode path, GGUF export writes F32 only
GGUF export & the foundry
Partial
gguf_export.zig writes GGUF for small F32 nets (stz-mlp, bigram DLM), round-trip verified; foundry rung 2 (train a transformer) is unbuiltgguf_export.zig
ONNX interop
Emerging
None: GGUF is the chosen and only model format; no ONNX import, runtime or export anywhere in the engine or faces