Numerus und dieselbe Antwort zweimal
Der Bug, der nur auf dem anderen Rechner existiert
Der nervigste numerische Bug ist der, der sich partout nicht dort zeigen will, wo man gerade hinsieht. Der Test schlägt auf CI fehl, nicht lokal. Die Simulation driftet nach einem Dependency-Update. Das eingebettete Ziel liefert ein leicht anderes Ergebnis als der Server. Die Modell-Pipeline sieht gut aus, bis Replay dieselbe Berechnung zweimal anfordert und zwei Antworten erhält, die nahe genug beieinanderliegen, um einen Streit anzufangen.
Nähe ist manchmal in Ordnung. Nähe ist nicht immer ein Vertrag. Wenn eine Berechnung Teil eines Replay-Pfads, einer Sicherheitsprüfung, einer Simulation, einer Preisentscheidung, eines digitalen Zwillings, eines Audit-Trails oder eines Modellkomprimierungsschritts ist, dann kann Nähe zu einem Produktrisiko werden. Der Unterschied mag winzig sein. Winzige Unterschiede sind trotzdem Unterschiede. Software hat ganze Karrieren daraus gemacht, sich an winzigen Unterschieden zu stören.
Das ist der Grund, warum Numerus im Dweve-Stack existiert. Die Numerus-Seite beschreibt es als Open-Source-Grundlage für deterministische Arithmetik: binäre und dezimale Festkomma-Arithmetik, adaptive variable-Punkt-Mathematik mit Dweve AXIOM, ganzzahlorientierte Operationen, Rust, no_std-fähige Oberflächen, Verifikation gegen hochpräzise Referenzen, wo sinnvoll, und deterministische Profile, die Replay über unterstützte Ziele hinweg ruhiger machen sollen. Die gemeinsame numerische Basisschicht darunter ist noch breiter: binäre, ternäre, ganzzahlige, feste, Gleitkomma- und adaptive AXIOM-Familien unter einem Element-artigen Vertrag. Die genauen Implementierungsdetails sind für Ingenieure wichtig. Die Produktlektion ist einfacher: Arithmetik ist kein Hintergrundrauschen. Sie ist Infrastruktur.
Das klingt offensichtlich, bis man verfolgt, wohin Zahlen reisen. Eine Simulation speist einen digitalen Zwilling. Der Zwilling speist ein Dashboard. Das Dashboard informiert eine menschliche Entscheidung. Die Entscheidung wird aufgezeichnet. Einen Monat später fragt jemand warum. Wenn die numerische Schicht die Berechnung nicht reproduzieren kann, wird die restliche Beweiskette wackelig. Sie mag noch vertretbar sein, aber jetzt muss das Team eine vermeidbare Driftquelle erklären. Das ist ein schlechtes Hobby.
Gleitkomma ist nicht moralisch verwerflich
Das ist keine Predigt darüber, dass Gleitkomma böse ist. Gleitkomma ist einer der Gründe, warum moderne Informatik funktioniert. Es ist schnell, kompakt, gut unterstützt und für viele Arbeitslasten genau richtig. Das Problem beginnt, wenn Teams so tun, als wäre sein Verhalten ein universeller Governance-Vertrag.
Gleitkomma lebt in einer Welt aus Rundungsmodi, Hardware-Unterschieden, Compiler-Entscheidungen, Befehlsauswahl, fusionierten Operationen, Vektorisierung, Denormalen, Bibliotheksverhalten und zielspezifischen Details. Meistens ist das beherrschbar. Manchmal ist es sogar unsichtbar. Dann braucht man bit-exaktes Replay, oder Ziel-Parität, oder deterministische Simulation, oder einen Build, der sich nach dem Verschieben vom Server an den Rand gleich verhalten sollte. Plötzlich hören die Details auf, akademisch zu sein. Sie werden zu einem Meeting.
Numerus geht einen anderen Weg für Arbeitslasten, bei denen Wiederholbarkeit wichtiger ist als so zu tun, als wäre jede Operation ein kleines Wettersystem. Rein ganzzahlige Arithmetik macht die Darstellung explizit. Festkomma-Formate definieren, wo die Dezimalstelle lebt. Dezimalfamilien behandeln Werte, bei denen exakte Stellen wichtig sind. Dweve AXIOM bietet eine Möglichkeit, die Exponentenform pro Wert anzupassen, ohne die Kontrolle an eine undurchsichtige Gleitkomma-Umgebung zurückzugeben. Es geht nicht darum, eine numerische Form für immer zu verwenden. Es geht darum, eine Form mit einem Vertrag zu wählen.
Das ist wichtig, denn Produktsysteme rechnen nicht nur. Sie erinnern sich. Sie spielen ab. Sie vergleichen. Sie erklären. Wenn dieselbe Berechnung auf verschiedenen unterstützten Oberflächen unterschiedliche Ergebnisse liefert, wird dieser Unterschied Teil des Produkts, ob das nun jemand geplant hat oder nicht.
Eine numerische Bibliothek ist eigentlich mehrere Versprechen
Ein numerisches Fundament ist nicht eine einzige Sache. Es ist eine Reihe von Versprechen mit unterschiedlichen Zielgruppen. Der Embedded-Entwickler legt Wert darauf, dass eingeschränkte Ziele die relevanten ganzzahligen Profile ausführen können, ohne eine komfortable Serverlaufzeit mitzuschleppen. Der Simulationsentwickler legt Wert darauf, dass die Wiedergabe einen Zustand reproduzieren kann. Die Prüfperson legt Wert darauf, dass der Antwortpfad erklärt werden kann. Der Produktverantwortliche legt Wert darauf, dass das Ding sich nicht wie ein nervöser Taschenrechner verhält, wenn es von einer Umgebung in eine andere verschoben wird.
Die öffentliche Numerus-Seite stellt die Familien in den Vordergrund, nach denen die meisten zuerst fragen: Q-Format-Festkomma, Decimal und AXIOM. Der Codebestand ist breiter. common/numeric enthält binäre XNOR- und POPCNT-Formen, ternäre Werte, native und Sub-Byte-Ganzzahlen, Festkomma-Aliasse, kleine Gleitkommaformate und adaptives AXIOM. Die Numerus-Fassade fügt dann die produktorientierten Dezimal- und Arithmetikoberflächen um dieses Fundament herum hinzu. Diese Trennung ist wichtig, weil sie die vorgetäuschte Eleganz vermeidet, jede Zahl in ein einziges Kostüm zu zwängen.
Das ist im besten Sinne eine sehr europäische Art von Ingenieurskunst. Weniger Drama, mehr Vertrag. Die Berechnung sollte angeben, was sie ist. Der Bereich sollte bekannt sein. Das Dezimalverhalten sollte explizit sein. Die Zielbeschränkungen sollten respektiert werden. Das Ergebnis sollte reproduzierbar sein. Niemand braucht dafür eine Keynote. Sie brauchen, dass es funktioniert.
AXIOM verdient einen eigenen Artikel, weil es nicht nur ein weiterer Alias in der Liste ist. Es ist Dweves adaptive Familie mit variabler Punktzahl: Vorzeichen, Exponentenindex und Mantisse in einer kompakten Darstellung verpackt, mit Exponentenlisten, die für allgemeine, dichte, feinkörnige oder neuronale Netzdaten ausgewählt werden. Dieser Beitrag ordnet es nur in die Numerus-Karte ein. Die tiefere Geschichte ist, wie die adaptive Exponentenauswahl wechselnden Größenordnungen mehr Raum gibt, ohne die Arithmetik wieder nichtdeterministisch zu machen.
Es verhindert auch Übertreibungen. Numerus macht nicht jedes numerische Problem einfach. Es beseitigt nicht die Notwendigkeit, Skalen, Bereiche, Rundungsverhalten, Exponentenlisten, Mantissenbreiten oder Verifikationsdomänen zu wählen. Festkomma- und Gleitkommaarithmetik mit variabler Punktzahl können beide mit großer Begeisterung missbraucht werden. Der Wert liegt darin, dass der Missbrauch sichtbarer wird. Ein expliziter numerischer Vertrag gibt Ihnen etwas zu prüfen. Eine versteckte Gleitkommaannahme gibt Ihnen einen kleinen Geist in der Produktion.
Verifikation ist kein Abzeichen
Jede numerische Bibliothek lernt irgendwann, dass Wörter wie korrekt und präzise billig sind, bis sie an eine Testumgebung gebunden werden. Korrekt wo? Präzise im Vergleich womit? Über welchen Eingabebereich? Mit welchem Rundungsverhalten? In welcher Version? Unter welchen Tests?
Das Numerus-Material stellt die Verifikation in den Vordergrund: ganzzahliges CORDIC für transzendente Funktionen, Vergleich mit einem hochpräzisen MPFR-Orakel, Eigenschaftstests und Release-Prüfungen. Die genaue Behauptung ist nur dann aussagekräftig, wenn sie an diese Maschinerie gebunden ist. Ein Abzeichen, das genau sagt, ist Dekoration. Eine Testumgebung, die vergleicht, schrumpft und scheitert, ist Ingenieurskunst.
Diese Unterscheidung ist wichtig, weil sich numerische Fehler oft an den Rändern verstecken. Die Mitte des Definitionsbereichs verhält sich. Die Demo verhält sich. Die gewöhnlichen Werte verhalten sich. Dann kommt der Grenzwert mit einer Klemmbrett unterm Arm. Negative Eingaben, Werte nahe Null, Überlaufgrenzen, Skalenübergänge, Rundungsentscheidungen, Exponentengrenzen und wiederholte Operationen sind die Stellen, an denen numerische Bibliotheken entweder Vertrauen verdienen oder anfangen, Fiktion zu schreiben.
Eigenschaftstests sind nützlich, weil Menschen schlecht darin sind, sich alle Arten vorzustellen, auf die eine Zahl lästig sein kann. Ein hochpräzises Oracle ist nützlich, weil die Implementierung eine Referenz braucht, die nicht sie selbst ist. Freigabeprüfungen sind nützlich, weil eine verifizierte Behauptung vom letzten Monat keine Garantie für diesen Monat ist. Software bleibt nicht aus Höflichkeit korrekt.
Determinismus gehört in die Architektur, nicht in eine Fußnote
Es ist verlockend, deterministische Arithmetik als Detail einer Low-Level-Bibliothek zu behandeln. Genau dort verlieren viele Teams sie. Bis das Produkt Wiedergabe benötigt, sind die numerischen Annahmen bereits über Dienste, Notebooks, eingebettete Ziele, Modellwerkzeuge und Integrationstests verteilt. Dann wird Determinismus zu einer Nachrüstung. Nachrüstungen sind der Ort, an dem Budgets Charakter entwickeln.
Der richtige Zeitpunkt, um die numerische Haltung festzulegen, ist früh. Benötigt diese Arbeitslast eine bitstabile Wiedergabe? Läuft sie über mehrere Maschinen? Läuft sie über mehrere Architekturen? Unterstützt sie eine regulierte Entscheidung? Speist sie eine Simulation? Wird sie zu Trainingsdaten, Inferenzeingabe, Modellkomprimierungsausgabe oder einem digitalen Zwilling? Wenn ja, ist die Arithmetik architektonisch.
Numerus passt aus genau diesem Grund neben FMI und Twin. FMI kümmert sich um deterministische Simulationskerne und Modellaustausch. Twin kümmert sich um die Wiedergabe von Betriebs- oder physikalischem Zustand über die Zeit. Ledger zeichnet Betriebsereignisse auf. Trace trägt wiedergabefähige Berechnungsnachweise. Diese Schichten werden nur ruhiger, wenn die numerische Schicht darunter nicht wie ein Einkaufswagen mit einem kaputten Rad driftet.
In KI-Systemen wird das noch konkreter. Quantisierung, Bewertung, Ranking, Simulation, Randbedingungen, Kalibrierung, Komprimierung und Wiedergabe verwenden alle Zahlen. Wenn sich diese Zahlen in verschiedenen Umgebungen unterschiedlich verhalten, ist das Modell möglicherweise nicht der Schuldige. Es ist nur der sichtbarste Verdächtige. Bequem, aber nicht immer richtig.
Kleine Maschinen sind keine Bürger zweiter Klasse
Viel KI- und Simulationsarchitektur setzt stillschweigend eine komfortable Maschine voraus. Es wird einen Server geben. Es wird eine GPU geben. Es wird genug Speicher geben. Es wird einen Cloud-Dienst geben. Es wird eine Rechnung geben, die jemanden dazu bringt, den Begriff strategischeInvestition zu erfinden.
Echte Systeme sind weniger ordentlich. Einige Berechnungen müssen auf eingebetteten Zielen laufen. Einige leben am Rand. Einige sitzen in Geräten ohne Gleitkommaeinheit. Einige benötigen no_std-Kompatibilität. Einige müssen weiter funktionieren, wenn das Netzwerk nicht eingeladen ist. Wenn das numerische Fundament sich nur im komfortablen Fall verhält, ist es kein Fundament. Es ist ein Möbelstück.
Ganzzahlige Arithmetik hilft hier, weil sie die Abhängigkeit von zielspezifischem Gleitkommaverhalten reduziert, wo die Arbeitslast diese Profile nutzen kann. no_std-fähige Oberflächen helfen, weil nicht jede Umgebung den Komfort der Standardbibliothek eines Serverprozesses bietet. Es geht nicht um Nostalgie für kleinere Maschinen. Es geht um Kontrolle darüber, welcher numerische Vertrag zu eingeschränkten Zielen reist.
Das ist keine Nostalgie für kleinere Maschinen. Es ist Kontrolle. Wenn die Berechnung Teil des Produkts ist, sollte das Produkt nicht die komfortabelste Umgebung benötigen, nur um vertrauenswürdig zu sein.
Das langweilige Beispiel ist das wichtige
Stellen Sie sich eine Dosierungsberechnung vor, eine Tarifberechnung, einen Simulationsschritt, einen wiedergegebenen Sensorwert oder eine Modellkomprimierungsschwelle. Nichts davon klingt glamourös. Gut. Glamour ist meist dort, wo das Handwedeln beginnt. Die langweiligen Beispiele sind es, wo numerische Determiniertheit ihren Wert beweist.
Wenn das Ergebnis einmal verwendet und vergessen wird, mag eine kleine Abweichung keine Rolle spielen. Wenn das Ergebnis aufgezeichnet und wiedergegeben wird, spielt es eine Rolle. Wenn es über Umgebungen hinweg verglichen wird, spielt es eine Rolle. Wenn es eine spätere Entscheidung speist, spielt es eine Rolle. Wenn ein Kunde, ein Prüfer oder ein Ingenieur fragen kann, warum dieser Wert erschienen ist, spielt es definitiv eine Rolle. An diesem Punkt ist die Berechnung kein internes Implementierungsdetail mehr. Sie ist Teil der Geschichte, die das Produkt erzählt.
Deshalb ist Numerus nicht nur abstrakt eine Mathematikbibliothek. Es ist eine Komponente in einer Beweisarchitektur. Es gibt anderen Systemen eine ruhigere numerische Schicht, auf der sie stehen können. Reed kann Quellcode mit Belegen parsen. Ledger kann Ereignisse aufzeichnen. BitWeave kann Abruf deterministisch machen. HEDL kann strukturierte Daten weniger verschwenderisch machen. Numerus macht die Arithmetik weniger rutschig. Jedes Teil entfernt eine Stelle, an der das System sonst die Schultern zucken würde.
Die Lektion
Die Lektion von Numerus ist, dass Zahlen Produktverhalten sind. Nicht nur Implementierungsdetail. Nicht nur Mathematik. Verhalten. Wenn dieselbe Eingabe eine andere Antwort erzeugen kann, wenn sie in eine andere unterstützte Umgebung verschoben wird, gehört dieser Unterschied jetzt zum Produkt.
Deterministische Arithmetik ist nicht immer erforderlich. Wenn sie erforderlich ist, sollte sie von Anfang an entworfen werden, statt später hineingebettelt zu werden. Wählen Sie explizite numerische Familien. Verifizieren Sie gegen ein Orakel. Testen Sie die Ecken. Respektieren Sie Bereitstellungsbeschränkungen. Behalten Sie die Wiedergabe im Hinterkopf, bevor der erste Vorfallbericht alle plötzlich philosophisch macht.
Numerus ist nützlich, weil es Arithmetik in einen Vertrag verwandelt, auf den sich der Rest des Stapels verlassen kann. Binary, Ternary, Integer, Fixed, Float, Decimal und AXIOM sind keine Slogans. Sie sind Möglichkeiten, Zahlen zu formen, damit dieselbe Antwort absichtlich zweimal erscheinen kann. AXIOM bekommt seine eigene tiefere Geschichte, weil es der Teil ist, wo sich der Punkt selbst zu bewegen beginnt, während der Vertrag deterministisch bleibt. Das ist nicht auffällig. Es ist besser als auffällig. Es ist die Art von Langeweile, die ernsthaften Systemen erlaubt, nachts zu schlafen.