Nichts darf verloren gehen

Diesen Beitrag anhören9 Min.

Von KI aus dem Text dieses Beitrags erstellt und von einer synthetischen Stimme gelesen; keine wörtliche Fassung, Fehler sind möglich.

Eine zweite Forschergruppe in diesem Projekt hat die Suche der Engine von Grund auf neu geschrieben. Die Gruppe gehört zum Projekt, arbeitet aber getrennt von denen, die die Messpipeline betreiben und den Hauptstand entwickeln. Bevor davon etwas ersetzen darf, was wir haben, muss die Neufassung zwei Fragen beantworten. Woher stammt sie? Und was kann der alte Stand besser, das der neue nicht vergessen darf?

Dieser Beitrag beschreibt, wie diese beiden Fragen geprüft wurden. Er enthält keine Messung der Spielstärke. Ob die Neufassung besser spielt, entscheidet sich wie bei jeder anderen Änderung: in der Messpipeline und beim Orakel, nirgends sonst.

Wie groß die Änderung ist

Das ist kein Patch. Die Neufassung berührt zwanzig Engine-Dateien: Suche, Zugsortierung und Transpositionstabelle, alles neu. Eine Änderung dieser Größe kann gute Ideen mitbringen. Sie kann aber genauso gut viele kleine Korrekturen verlieren, ohne dass es jemand merkt.

Erste Frage: Woher stammt sie?

Die Verfassung des Projekts erlaubt Engines anderer Projekte zum Messen und als Ideengeber, nie als Quelle für Code oder Daten. Darum kommt die Herkunftsprüfung zuerst.

Danach haben wir gemessen, statt jemandem zu glauben. Eine Ähnlichkeitsprobe vergleicht den Quelltext mit dem der aktuellen Stockfish-Version. Sie vereinheitlicht Bezeichner, Zahlen und Zeichenketten, entfernt Kommentare und lässt Netzgewichte außen vor. Zur Kontrolle: Stockfishs eigene Suchdatei mit lauter umbenannten Namen stimmt vollständig überein. In der Neufassung kommt etwa ein Viertelprozent der verglichenen Abschnitte von vierzig Token auch in der Referenz vor. Die aktuelle Hauptversion hat mit derselben Probe einen höheren Anteil.

Zweite Frage: Was ginge verloren?

Mehrere Modellfamilien haben je eine unabhängige Inventur geschrieben: Was kann die alte Suche besser? Keine kannte dabei die Berichte der anderen. Einige haben beide Stände gebaut und getestet, eine hat den Code ohne Werkzeuge begutachtet. Alle vorhandenen Unit-, Sanitizer-, Zuggenerator- und Protokolltests bestehen auf der Neufassung. Die Inventuren suchten nach den Fällen, die kein vorhandener Test abdeckt.

Mehrere Funde kamen von mehr als einer Familie, und sie wurden zu Bedingungen für den Kandidaten:

Wo die Familien uneins waren

In einem Punkt gingen die Inventuren auseinander. Die alte Suche hat Schutzregeln, die in Bauernendspielen und zugzwanggefährdeten Stellungen manche Schnitte abschalten. Zwei Familien sahen eine solche Regel in der Neufassung fehlen. Die dritte hat das auf Teststellungen gemessen und die Neufassung dort mindestens gleich gut gefunden.

Ausdiskutiert wurde das nicht, stattdessen wurde der Streit zum Tor: Auf Batterien aus Zugzwang-, Bauernendspiel- und Mattstellungen muss der Kandidat mindestens so gut sein wie der heutige Stand. Ist er schlechter, kommen die alten Schutzregeln zurück. Der Dissens steht unverändert im Protokoll: Eine verlorene Schutzregel bleibt verloren, bis ein gleichwertiger Nachweis vorliegt.

„Nicht verloren“ heißt nicht „ungemessen mitgenommen“

Manche Verbesserungen der alten Suche lassen sich nicht einfach in die neue übertragen, weil ihre Wirkung dort unbekannt ist. Sie werden nicht still in den Kandidaten geschoben. Jede bekommt einen eigenen Eintrag als eigene Hypothese und wird auf der neuen Basis gemessen, nachdem der Kandidat selbst beurteilt ist. Einiges wird bewusst nicht übernommen, jeweils mit schriftlicher Begründung. Ein Beispiel: Die alte Suche hielt einen Zwischenspeicher außerhalb des Hash-Budgets. Die Neufassung kommt ohne ihn aus, und er wird nicht zurückgeholt, denn nach den Regeln zählen alle Tabellen gegen die Hash-Größe.

Was das nicht heißt

Es heißt nicht, dass die Neufassung stärker ist. Hier steht keine Stärkezahl für sie, und es wird keine geben, bevor das Orakel sie gemessen hat. Es heißt auch nicht, dass die Inventur vollständig ist. Drei unabhängige Berichte finden mehr als einer, aber Fälle, nach denen niemand gesucht hat, können trotzdem durchrutschen. Sagen lässt sich etwas Engeres: Jeder Fund ist aufgeschrieben. Jeder hat einen Test, ein Tor oder eine eigene Hypothese, oder eine Begründung, warum er entfällt.