Fat Fritz optimieren

von Albert Silver
28.11.2019 – Auf der Computer Chess Ratings List vom 23. November schaffte es Fat Fritz mit der beeindruckenden Elo-Zahl von 3617 Punkten auf Platz 1. Fat Fritz ist Teil von Fritz 17 und damit allen Nutzern zugänglich. Und da taucht immer wieder die Frage auf, mit welchen Einstellungen die Engine die besten Ergebnisse erzielt. Albert Silver gibt ein paar Hinweise!

Das ganz große PC-Schachprogramm - Jetzt mit FAT FRITZ Das ganz große PC-Schachprogramm - Jetzt mit FAT FRITZ

Fritz, genau jenes Schachprogramm, das seit über 25 Jahren (!) die gesamte Schachwelt fasziniert: Siege gegen Garry Kasparov und den damaligen Weltmeister Vladimir Kramnik, innovative Trainingsmethoden für Amateure & Profis, fast 20 Jahre Internetschach auf dem Fritz-Server u.v.m.

Fritz, das „populärste deutsche Schachprogramm“ (Der Spiegel), bietet alles, was Sie als Schachfreund brauchen. Und das Sahnehäubchen: mit Fritz17 sind Sie teilnahmeberechtigt für die 1. Deutschen Online-Meisterschaft***!

Mehr...

Ein neues Paradigma

Seit 15 Jahren gibt es die CCRL, die Computer Chess Ratings List, und damit ist sie eine der ältesten Ratinglisten für Schach-Engines. Man findet dort sogar Tests aus dem Jahre 2004! Aber die Seite geht mit der Zeit und berücksichtigt bei Tests auch Grafikkarten, um zu sehen, wie leistungsstark neuronale Netzwerke sind - nicht nur Leela und Fat Fritz, sondern auch Allie und Stoofvlees. Auf der aktuellen Liste (23. November) liegt Fat Fritz (mit RTX2080 GPU) auf Platz 1 der Computerrangliste. Nun ist der Kampf Engine gegen Engine vielleicht nicht die beste Möglichkeit, unsere neue Flaggschiff-Engine zu nutzen — die Stärken von Fat Fritz als Analysepartner gehen über die reine Ratingzahl weit hinaus — aber dennoch sind diese Zahlen interessant.

CCRL standings

Maschine gegen Maschine

Die Webseite bietet eine beeindruckende Zahl von Filtern, Details und Statistiken. Standmäßig werden die Ergebnisse der besten Version der jeweiligen Engine angezeigt, aber mit einem Klick auf "Complete List" bekommt man die Ergebnisse von jeder Version und jeder getesteten Hardware-Konfiguration angezeigt.

Die Einzelergebnisse der Wettkämpfe werden am Ende der Tabelle oder mit einem Klick auf den entsprechenden Eintrag angezeigt. Alle Partien stehen zum Download bereit.

Die beste Leistung aus der Engine holen

Einer der faszinierendsten Aspekte neuronaler Netze besteht darin, dass sie (aktuell) einen Grafikprozessor (GPU) brauchen, um die besten Ergebnisse zu erzielen. Manche halten dies für "unfair", denn im Vergleich zu konventionellen Engines wie Stockfish, Komodo und vielen anderen, bekommen Programme mit neuronalen Netzen so einen Hauptprozessor (CPU) und einen Grafikprozessor (GPU). Aber das wird der Situation nicht gerecht. Denn:

  1. Die GPU wird nicht dazu benutzt, tatsächlich zu rechnen. Während die Suche wie bei jeder anderen Engine auf der CPU durchgeführt wird, liefert die GPU die Einschätzungen. Aber selbst bei der besten GPU läuft die Suche auf der CPU nur mit zwei Cores. Mehr Cores zu nutzen, kann sogar kontraproduktiv sein, denn wichtig ist nicht, wie schnell die CPU rechnet, sondern wie schnell die GPU die Ergebnisse der neuronalen Netze lesen kann.
  2. Die klassischen Engines können zwei, vier, 32 oder 128 Cores nutzen. Und jeder zusätzliche Core führt zu höherer Rechenleistung. Fat Fritz und Leela nutzen zusätzliche CPU-Cores nichts.

Deshalb haben neuronale Netze auch keinen Vorteil durch die GPU, denn im Gegensatz zu konventionellen Engines profitieren sie nicht von zusätzlichen CPU-Cores. Neuronale Netze funktionieren einfach anders als klassische Engines.

Aber wie kann man konventionelle Engines und neuronale Netze vergleichen? Leider gibt es auf diese Frage keine eindeutige Antwort.

Zum Vergleich: Die AlphaZero Ratio

Als DeepMind Informationen über AlphaZero und die Ergebnisse des Programms gegen Stockfish veröffentlichte, veröffentlichten sie auch wichtige Informationen, die zunächst nebensächlich zu sein schienen: die Ratio. Alle veröffentlichten Ergebnisse basierten auf zwei Dingen: der Bedenkzeit und der größeren Rechengeschwindigkeit von Stockfish: im Schnitt rechnete Stockfish etwa 900 Mal so viele Nodes pro Sekunde wie AlphaZero. 

Quelle: DeepMind

Warum ist das wichtig? Nun, wenn man neuronale Netze auf dem PC laufen und so AlphaZero reproduzieren lässt, dann kann man die Ergebnisse nur vergleichen, wenn die Wettkämpfe zwischen den Maschinen unter den gleichen Bedingungen stattfinden lässt (ca 63.000 vs 58,100.000 Nodes pro Sekunde). Das heißt, wenn Fat Fritz oder Leela mit 10.000 Nodes pro Sekunde laufen, dann sollte Stockfish mit 9.000.000 Nodes pro Sekunde laufen. Wenn man dieses Verhältnis nicht einhält, dann ist eine im Vorteil.

Der Diesel Dragster

DeepMind verriet auch, dass AlphaZero Zeit braucht, um seine Spielstärke zu entfalten. Die folgende Grafik illustriert das.

Performance von AlphaZero und Stockfish bei unterschiedlicher Bedenkzeit. (Quelle: DeepMind)

Die Grafik zeigt, dass AlphaZero bei geringer Rechentiefe schlechter abschneidet als Stockfish, aber bei ca 30.000 Nodes pro Zug spielen die beiden Engines etwa gleich stark und je mehr Zeit AlphaZero hat, desto besser spielt das Programm. 30.000 Nodes pro Zug entspricht auf auf der sehr leistungsstarken Hardware von DeepMind etwa einer halben Sekunde pro Zug, aber bei einer weniger schnellen GPU braucht AlphaZero mehr Zeit, um auf 30.000 Nodes pro Zug zu kommen. In sehr schnellen Partien (oder auf schwacher Hardware) schneidet Fat Fritz gegen andere Engines oft schlechter ab, eben weil das Programm eine gewisse Zeit braucht, um Varianten zu berechnen.

Aber wenn man das berücksichtigt, dann sind die Ergebnisse beeindruckend. Hier das Ergebnis eines Wettkampfs über 100 Partien gegen Stockfish Dev (Build vom 6. November), bei dem die TCEC 16 Eröffnungen verwandt wurden. Gespielt wurde mit einer Bedenkzeit von 10 Minuten für die gesamte Partie und einem Inkrement von 5 Sekunden pro Zug.

Die Hardware erlaubte es Stockfish auf 32 Threads etwa 27 Millionen Nodes pro Sekunde zu berechnen, während Fat Fritz (ein neuerer Build) auf 30.000 Nodes pro Sekunde kam - das entspricht der oben erläuterten Ratio von 900 zu 1. Das heißt auch, dass Fat Fritz für jeden Zug mindestens 400.000 Nodes zur Verfügung hatte. Hier sollte man daran denken, dass AlphaZero in weit längeren Partien leicht 30 Millionen Nodes pro Sekunde zur Verfügung hatte und Stockfish auf den 900-fachen Wert kam.

 

Aber warum ‘Diesel Dragster’? Nun, ein Diesel Dragster beschleunigt relativ langsam, aber wenn er in Fahrt gekommen ist, dann ist er phantastisch schnell.

Optimale Konfigurationen

Wenn man sich die Einstellungen von Fat Fritz und Leela anschaut, dann stellt man fest, dass einige Werte stark voneinander abweichen, z.B. der CPUCT-Wert, der CPUCT-Faktor, usw. Diese Werte sind das Ergebnis eines weitgehend automatisierten Prozesses, der als CLOP bekannt ist, und der dazu beiträgt, die besten Performance-Werte für eine Engine zu ermitteln. Diese Werte variieren von Engine zu Engine oder in diesem Fall von neuronalem Netz zu neuronalem Netz und so sollte man nicht davon ausgehen, dass bestimmte Werte, die bei einem Programm funktionieren auch automatisch für ein anderes Programm das Beste sind.

Der Tuning-Prozess für Fat Fritz wurde auf 170 Stunden ausgedehnt und die neuen optimalen Werte weichen etwas von denen der ersten Release ab. Beim nächsten Engine-Update werden sie implementiert, aber hier sind sie schon einmal vorab:

Setzen Sie cpuct auf 3.56 (anstatt 3.67), cpuctfactor auf 2.74 (anstatt 2.54), und Policy Temperature auf 1.84 (anstatt 1.87). Das Bild oben zeigt diese Werte.

Nvidia 16xx Videokarten

Wenn Sie einen Rechner mit einer der neueren Nvidia-Karten im mittleren Leistungsbereich haben, z.B. GTX1650, GTX 1650ti, GTX1660 oder GTX1660ti, dann können Sie die Geschwindigkeit erhöhen, indem Sie die UCI-Option Backend auf cudnn-fp16 setzen. Aber bleiben Sie bei zwei Threads. Mehr beeinträchtigen die Performance.

Multiple GPUs

Zweifellos bekommt man mit mehr als einer GPU bessere Ergebnisse. Allerdings müssen Sie installiert sein und auch ein paar Änderungen in den UCI-Optionen sind erforderlich:

Backend — Multiplexing
Backend Options — (backend=cudnn-fp16,gpu=0),(backend=cudnn-fp16,gpu=1)
Threads — 4

Mit diesen Hinweisen sollten Sie noch bessere Leistungen mit Fat Fritz oder Leela erzielen können und Sie wissen zugleich, was Sie von den Programmen erwarten können.





Albert Silver ist Redakteur und Autor. Er lebt in Rio de Janeiro in Brasilien.
Discussion and Feedback Join the public discussion or submit your feedback to the editors


Diskutieren

Regeln für Leserkommentare

 
 

Noch kein Benutzer? Registrieren

WetHair WetHair 01.12.2019 07:58
"... abweichen, z.B. der CPUCT-Wert, der CPUCT-Faktor, usw. ... Werte variieren ... von neuronalem Netz zu neuronalem Netz ... Tuning-Prozess... wurde auf 170 Stunden ausgedehnt und ... weichen etwas von denen der ersten Release ... Setzen Sie cpuct auf 3.56 (anstatt 3.67), cpuctfactor auf 2.74 (anstatt 2.54), und Policy Temperature auf 1.84 (anstatt 1.87). ... Backend Options — (backend=cudnn-fp16,gpu=0),(backend=cudnn-fp16,gpu=1)
Threads — 4."
Ja, nee, is klar ... leuchtet doch fast jedem ein.
Wenn ich so was als (vermeintliche) Werbung lese, ich hielt es erst für eine Persiflage, weiß ich doch zumindest, dass diese Firma mich als Kunden nicht begrüßen möchte.
Das ist wie in einem Edel-Restaurant: Ohne entspr. Kleidung keine Berührung des edlen Bestecks möglich. Der Lafer und mnche andere in diesem Stil haben übrigens gerade für immer zugesperrt.
Ganz bestimmt also werde ich nicht erst ein längeres Studium einlegen, um danach dieses Programm für teuer Geld überhaupt benutzen zu dürfen!
Fortgeschritten Fortgeschritten 30.11.2019 01:02
Mittlerweile ist "Fat Fritz" "nur noch" auf Platz 2, hinter "Leelenstein 11.1 RTX2080".

http://www.computerchess.org.uk/ccrl/404/
ChessChrissy ChessChrissy 29.11.2019 06:09
Der letzte Pulk mit Multiplexing, hatte ich vergessen.
Sorry.
ChessChrissy ChessChrissy 29.11.2019 06:07
Hi, hab Stockfish gegen FATFritz spielen lassen. Werkseinstellung 3 Min. 20 Partien:
6-14-0 für Stockfish.

10 Min.plus 5sek. mit fp16:
1-8-1
10Min.plus 5sek:
0-8-2, also FATFritz siegt 2x.
SvenRichter SvenRichter 28.11.2019 05:18
please foreward my comment to Albert Silver, thanks in advance
TheSlater TheSlater 28.11.2019 12:42
Stockfish ist bei Nutzung von nur 4 CPUs schon so stark wie FatFritz auf der stärksten Enduser Grafikkarte. Vielleicht sollte man den CPU Engines auch die beste CPU gönnen oder wenigstens 16 Kerne, damit es ein fairer Vergleich ist, wenn man von "1. Platz" redet.
SvenRichter SvenRichter 28.11.2019 11:06
Nachtrag: OpenCL läuft bei mir nicht. Die FatFritz-Engine stürzt bei mir ab. MacbookPro (mit NVIDIA GeForce GT 750M, Catalina) mit Windows 10 als VM. Und das Problem CUDA-Driver/NVIDIA und Mac dürfte ja hinlänglich bekannt sein. Vielleicht hat ja einer eine Idee...
SvenRichter SvenRichter 28.11.2019 10:59
Vielen Dank für die Fat Fritz engine und den Infos.

Ist es geplant auch für Nutzer ohne die entsprechende tolle GPU (nutze das Fritz17-Programm über Parallels auf dem Macbook) ein optimiertes Netz (analog das LD2-Netz für Lc0) für CPUs bereitzustellen? Vielen Dank!
1