Not logged inCSS-Forum
Forum CSS-Online Help Search Login
CSS-Shop Impressum Datenschutz
Up Topic Hauptforen / CSS-Forum / experiment match1000 T1; T4; T16
- - By Clemens Keck Date 2018-01-06 12:22 Upvotes 2
Hallo zusammen, und ein gutes neues Jahr erst mal an Alle.

Die Testserie von Andreas Strangmüller mit 1cpu und kurzen bis sehr langen Zeitkontrollen fand ich klasse.
Inspiriert dadurch hatte ich mir eine (ähnliche) Zeitkontrolle heraus gesucht, bei der der ELO Unterschied Stockfish-Komodo sehr groß war.10min+10sec
Für meine Partien habe ich das HERT set verwendet. 500 Possitionen=1000 Spiele.
Ich habe eine ca. 4Wochen alte Komodo beta in Verwendung, und bei Stockfish das starke update vom 26 Dezember.


Ich plane das match unter gleichen Bedingungen zu wiederholen. Nur die Anzahl der CPUs wird jeweils vervierfacht.
Also:
1024mb hash
6Steiner
HERT set
10+10
T1 ; T4 ; T16

Aktuell, nach 362 Spielen 4 cpu je engine konnte Komodo 15 Elo Punkte "gut machen".


Hier noch die ECO Verteilung des ersten matches:
Code:
Games        :   1000 (finished)

White Wins   :    174 (17.4 %)
Black Wins   :     68 ( 6.8 %)
Draws        :    758 (75.8 %)
Unfinished   :      0

White Perf.  : 55.3 %
Black Perf.  : 44.7 %

ECO A =     79 Games ( 7.9 %)
ECO B =    283 Games (28.3 %)
ECO C =    305 Games (30.5 %)
ECO D =    194 Games (19.4 %)
ECO E =    139 Games (13.9 %)


Mal sehn wie es weitergeht, werde berichten

Clemens Keck
Parent - - By Clemens Keck Date 2018-01-11 06:07
So, testrun mit 4 cpu beendet



Sieht so aus, als hat Komodo allein durch parallele Suche um 12 - 13 ELO den Abstand verkürzt.

Code:
    Program                          Elo    +   -   Games   Score   Av.Op.  Draws

  1 Stockfish 261217 64 POPCNT T4  : 3017   10  10  1000    54.8 %   2983   77.2 %
  2 Komodo 1973.00 64-bit T4       : 2983   10  10  1000    45.2 %   3017   77.2 %

Games        :   1000 (finished)

White Wins   :    178 (17.8 %)
Black Wins   :     50 ( 5.0 %)
Draws        :    772 (77.2 %)
Unfinished   :      0

White Perf.  : 56.4 %
Black Perf.  : 43.6 %

ECO A =     82 Games ( 8.2 %)
ECO B =    283 Games (28.3 %)
ECO C =    304 Games (30.4 %)
ECO D =    192 Games (19.2 %)
ECO E =    139 Games (13.9 %)


C.K.
Parent - - By Frank Brenner Date 2018-01-11 15:41
Code:
Sieht so aus, als hat Komodo allein durch parallele Suche um 12 - 13 ELO den Abstand verkürzt.


Wohl eher nicht.

Der Grund ist viel eher die effektiv höhere Bedenkzeit die -  bekanntermaßen - die Engines näher zusammenrücken lässst.

Wenn du wirklich nachweisen möchtest, daß die parallele Suche  die Spielstärke von Komodo näher an SF rücken lässt, so müsstest du bei 4 threads die Bedenkzeit  in etwa dritteln.
Parent - - By Clemens Keck Date 2018-01-11 18:31
Stimme da nicht zu.
Ich denke die parallele Suche ist ein Faktor der keinesfalls mit mehr Bedenkzeit gleich zu setzen ist.

Ich glaube das Komodo in 10+10 unter meinen Spielbedingungen von 1 auf 4 cpu gegen Stockfish 13 ELO gutmacht.

C.K.


Frank Brenner schrieb:

Code:
Sieht so aus, als hat Komodo allein durch parallele Suche um 12 - 13 ELO den Abstand verkürzt.


Wohl eher nicht.

Der Grund ist viel eher die effektiv höhere Bedenkzeit die -  bekanntermaßen - die Engines näher zusammenrücken lässst.

Wenn du wirklich nachweisen möchtest, daß die parallele Suche  die Spielstärke von Komodo näher an SF rücken lässt, so müsstest du bei 4 threads die Bedenkzeit  in etwa dritteln.
Parent - - By Stefan Pohl Date 2018-01-11 19:15 Edited 2018-01-11 19:25
Clemens Keck schrieb:

Stimme da nicht zu.
Ich denke die parallele Suche ist ein Faktor der keinesfalls mit mehr Bedenkzeit gleich zu setzen ist.

Ich glaube das Komodo in 10+10 unter meinen Spielbedingungen von 1 auf 4 cpu gegen Stockfish 13 ELO gutmacht.

C.K.



Das stimmt zwar. Aber beides generiert den gleichen Effekt, nämlich, daß die Engine mehr Knoten durchrechnet, wenn sie am Zug ist. Und mehr Knoten durchrechnen bedeutet immer, daß Ergebnisse wegen der höheren Remisqoute, die das immer zur Folge hat, näher an die 50%-Marke gedrückt werden. Daß also die schwächere Engine (in diesem Fall Komodo) ihr Ergebnis verbessert (in Prozent und in Elo). Ergo geht es darum, die Faktoren "längere Bedenkzeit" und "mehr parallele Threads" zu trennen und das bedeutet, einen der beiden Effekte bei seinen Tests möglichst zu eliminieren. Andernfalls kann man nicht bestimmen, welche der beiden Faktoren wieviel zum Gesamteffekt beiträgt. Will man also wissen, ob eine Engine dank besserer Parallelisierung mit mehr Threads/Cores auch mehr in Elo zulegt, als eine andere, muß man die Bedenkzeit entsprechend absenken. Also mal mit beiden Engines einige Mittelspiel- und Endpsielstellungen anrechnen lassen (mit den verschiedenen Threads-Einstellungen) und damit zumindest halbwegs abschätzen, wie sehr die Knotenzahl steigt, wenn mehr Threads/cores zugewiesen werden. Und die Bedenkzeit dann dementsprechend absenken. Also beim Schritt von 1 auf 4 Threads wird sich wohl in etwa eine Drittelung der Bedenkzeit anbieten (aber das muß man eben mit ein Knotenmessungen von Mittel- und Endspielstellungen mal ausmessen).
In etwa wäre also m.E. sinnvoll:
wenn 1 Thread/Core: 10'+10'', dann bei 4 Threads/Cores: 3'+3'' spielen lassen etc .

Dann kann man den Effekt der guten oder nicht so guten Parallelisierung der Engines halbwegs isoliert messen. Bei immer gleicher Bedenkzeit bedeutet eine höhere Zahl von Threads/Cores auch immer eine de facto Verlängerung der Bedenkzeit (in der Währung "berechnete Knoten pro Zug auf dem Brett" (und nur diese Währung wird schlußendlich im Ergebnis in Elo gemessen!)). Damit weiß man nicht, ob es nun die - durch die mehr parallelen Cores erreichte - längere Bedenkzeit war, oder die bessere Parallelisierung an sich als Algorithmus, die das Ergebnis von Komodo besser werden ließ.
Parent - - By Clemens Keck Date 2018-01-12 13:21
Stefan Pohl schrieb:

Endspielstellungen mal ausmessen).
In etwa wäre also m.E. sinnvoll:
wenn 1 Thread/Core: 10'+10'', dann bei 4 Threads/Cores: 3'+3'' spielen lassen etc .



Frage:
Müsste dann bei 1000 Spielen 40min  + 40sec und 1 cpu in etwa das Ergebnis von 10+10 4 cpu rauskommen?

MfC C.K.
Parent - By Stefan Pohl Date 2018-01-12 14:11
Clemens Keck schrieb:

Stefan Pohl schrieb:

Endspielstellungen mal ausmessen).
In etwa wäre also m.E. sinnvoll:
wenn 1 Thread/Core: 10'+10'', dann bei 4 Threads/Cores: 3'+3'' spielen lassen etc .



Frage:
Müsste dann bei 1000 Spielen 40min  + 40sec und 1 cpu in etwa das Ergebnis von 10+10 4 cpu rauskommen?

MfC C.K.


In etwa schon. Allerdings werden 4 Cores nicht ganz 4-facher Bedenkzeit auf 1 core entsprechen. Eher so Faktor 3.2 bis 3.5 würde ich schätzen. Das müßtest du eben mal ein bißchen ausmessen, indem du dir die Knoten pro Sekunde bei ein paar Teststellungen (Mittel- und Endspiel) mal anguckst (mit 1 und mit 4 Cores) und das ungefähr mittelst.
Andernfalls würde ich mit Faktor 3.3 kalkulieren, das ist sicher nicht ganz schlecht. Also 10'+10'' auf 4 cores und dann 33'+33'' auf einem Core.
Parent - - By Frank Brenner Date 2018-01-11 19:16
Code:
Ich denke die parallele Suche ist ein Faktor der keinesfalls mit mehr Bedenkzeit gleich zu setzen ist.


Was läßt Dich annehmen, daß es für z.B. Stockfish (und im allgemeinen für gar kein Schachprogramm) keinen Bedenkzeitfaktor gibt (zb 1,8) der die Spielstärke von einem z.B.  einem Core zu zwei Cores kompensiert ?
Parent - - By Benno Hartwig Date 2018-01-11 20:10
Will man nur die Spielstärke betrachten, so gibt es wohl einen Geschwindigkeitsfaktor, der einem Verdoppeln der Kernanzahl entspricht.
Die Art zu spielen wird dadurch aber wohl nicht gleich. Ich nehme dies allein schon aus der Erfahrung, dass das Zugverhalten nur sehr mäßig reproduzierbar ist, sobald du mehr als einen Thread laufen lässt, bei einem Thread die Reproduzierbarkeit aber gut gegeben ist.

Benno
Parent - - By Frank Brenner Date 2018-01-11 22:07
Du glaubst also, daß sich allein durch teilweise nicht mehr vorhandene Nichtreproduzierbarkeit von Zügen bei der Parallelen Suche mit wenigen Threads sich bereits eine andere Spielweise etabliert ?

Ich wette mit dir um jeden Betrag, daß du nicht in der Lage sein wirst  -und auch keine Person auf der Welt benennen könntest der in der Lage ist -  einen Stockfisch mit 1 Core nur anhand der Spielweise von einem Stockfisch  mit 2 Cores  mit Spielstärkeangleichender Bedenkzeitkorrektur zu unterscheiden.

Ich verstehe aber was du meinst:  Wenn ich zb die Selektivität von Stockfish massiv erhöhe und die Figurenwerte niedriger setze  und für die daher einhergehende Elo-Schwächung die Bedenkzeit um einen großen Faktor vergrößere, dann wäre es durchaus möglich anhand der Spielweise die beiden Stockfishe zu unterscheiden.
Das gleiche gilt selbstverständlich auch für Komodo und für jede andere Engine.

Bei der Implementierung der parallelen Suche steht aber heutzutage bei SF, Komodo, Houdini usw... nicht die Etablierung eines anderen Spielstils im Vordergrund sondern ausschließlich die Maximierung der Spielstärke.

Und da für die nicht-parallele Engine der bereits in dieser Engine realisierte Spielstiel die maximale Spielstärke repräsentiert (sonst könnte man mit die nicht-parallele Engine noch stärker machen) gilt dies ebenso 1:1 für die Parallele Version ebenfalls  , zumindestens für kleine Corezahlen.
Ab  1000 Cores ist es sehr sicher, daß eine andere Spielweise erfolgreicher sein wird.

Aber so weit sind wir bei SF , K, H noch nicht.  Diese Engines ändern auch bei einem Core noch nicht programmgeleitet den Spielstiel egal ob mit 1 Millisekunde pro zug oder mit 1 jahr /Zug gespielt wird.
Parent - - By Benno Hartwig Date 2018-01-12 07:39 Edited 2018-01-12 07:45
Ich will lediglich einem Fehlschluss vorbeugen:
Es ist nicht gleichbedeutend für das Verhalten einer Engine, ob du ihr mehr Zeit (mehr Geschwindigkeit) oder mehr Threads gibst.
Dass ist sehr gut belegt durch die gegebene bzw. nicht gegebene Reproduzierbarkeit der Ergebnisse diverser Engines.

Ob du das nun "andere Spielweise"  taufst, bleibt dir überlassen.

Deine Wette würdest du natürlich gewinnen (sofern du denn jemanden findest, der gegen dich wettet).

Benno
Parent - - By Frank Brenner Date 2018-01-12 15:41
Zitat:
Es ist nicht gleichbedeutend für das Verhalten einer Engine, ob du ihr mehr Zeit (mehr Geschwindigkeit) oder mehr Threads gibst.
Dass ist sehr gut belegt durch die gegebene bzw. nicht gegebene Reproduzierbarkeit der Ergebnisse diverser Engines.


Die nicht mehr gegebene reproduzierbarkeit der Züge ist noch gar nicht mal ein Indiz für einen anderen Spielstil.

Du kannst auch einen 1 Core Stockfish nichtdeterministisch machen indem du die Bewertungsfunktionen abänderst und zwar indem die Bewertungsfunktion zum Bewertungsergebnis ein paar zufällig gewählte hundertstel Bauernpunkte dazuaddiert oder abzieht.

Die Spielweise des so modifizierten Stockfishes ist noch indentisch zum original Stockfisch , wobei allerdings wahrscheinlich die Spielstärke darunter leidet.
Parent - - By Benno Hartwig Date 2018-01-12 20:21 Upvotes 2

> Die nicht mehr gegebene reproduzierbarkeit der Züge ist noch gar nicht mal ein Indiz für einen anderen Spielstil.


Ich aber doch nun wirklich nie von "Spielstil" gesprochen.
Und natürlich könnte der Entwickler die Bewertungsfunktion skuril ändern.

Mir ging es aber vielmehr um:
"Es ist nicht gleichbedeutend für das Verhalten einer Engine, ob du ihr mehr Zeit (mehr Geschwindigkeit) oder mehr Threads gibst."
Es kommen halt andere Züge heraus. Vermutlich nicht ein anderer Stil, aber es ist einfach nicht gleichbedeutend, der Engine mehr Threads zu geben und ihr mehr Zeit zu geben. Es passiert tatsächlich was anderes, auch von den Ergebnissen her.

Benno
(nun habe ich das aber auch oft genug gesagt, finde ich)
Parent - - By Frank Brenner Date 2018-01-12 23:46 Upvotes 1
Zitat:
Es kommen halt andere Züge heraus.


Nur manchmal kommen andere Züge heraus.  Die Multithread Engine ist selbstverständlich nicht äquivalent zur Bedenkzeit justierten Single-Core Engine.

Carlsen spielt am Mittwoch auch eine andere Partie als am Freitag und möglicherweise würde er auch (wenn er sich seine Partien nicht merken würde) in der gleichen Stellung an einem anderen
Tag einen anderen Zug spielen.
Aber dennoch ist die Art mit die er spielt  (der Spielstiel ) immer gleich.

Du hast jedoch ursprünglich gesagt:

Zitat:
Die Art zu spielen wird dadurch aber wohl nicht gleich.


Und das ist nicht richtig. Die Art zu spielen ist identisch mit dem  Spielstiel und der bleibt  der gleiche.

Ich verstehe nicht wieso du dich immer so sehr windest.
Parent - By Benno Hartwig Date 2018-01-13 10:20

> Die Art zu spielen wird dadurch aber wohl nicht gleich.


Damit meine ich: Sie machen manchmal andere Züge, und das ist richtig, und das meinte ich.
Und welchem Missverständnis ich konkret vorbeuen wollte, sagte ich sogar ausdrücklich.
Ich winde mich sicherlich nicht. Aber das ist jetzt wohl mehr als ausreichend geklärt.
Benno
Parent - - By Clemens Keck Date 2018-01-12 13:27
Frank Brenner schrieb:

Du glaubst also, daß sich allein durch teilweise nicht mehr vorhandene Nichtreproduzierbarkeit von Zügen bei der Parallelen Suche mit wenigen Threads sich bereits eine andere Spielweise etabliert ?


Eine andere Spielweise halte fürt übertrieben dargestellt. Aber ich vermute daß das Ergebnis beeinflusst wird.
Außerdem bringen Behauptungen nicht wirklich was 
Ich spiele es lieber aus.
Würde 40 + 40 1 cpu in etwa das selbe Ergebnis produzieren wie 10+10 4cpu?

C.K.
Parent - By Frank Brenner Date 2018-01-12 15:36
Zitat:
Würde 40 + 40 1 cpu in etwa das selbe Ergebnis produzieren wie 10+10 4cpu?


4 Cpu's erzielen eine schwächere Performance als 1 CPU mit 4-facher Bedenkzeit.

Wie Stefan Pohl es schon sagte, man muß es einmal ausloten. Ich tippe auf einen Bereich von 3,0 - 3,5
Wenn du einmal den Faktor genau ausgelotet hast, kannst du die Bedenkzeit z.B. verzehnfachen und gucken ob auch bei zehn facher Bedenkzeit der gleiche Faktor kompensiert.
Parent - - By Guenter Stertenbrink Date 2018-01-13 05:06

> Ich wette mit dir um jeden Betrag, daß du nicht in der Lage sein wirst  -und auch keine


> Person auf der Welt benennen könntest der in der Lage ist -  einen Stockfisch mit 1 Core
> nur anhand der Spielweise von einem Stockfisch  mit 2 Cores  mit Spielstärkeangleichender
> Bedenkzeitkorrektur zu unterscheiden.

die Wette wuerd ich aber annehmen.
2 cores geht mit "lazy SMP" das sollte anders sein.

z.B. 1Mio mal die Ausgangsstellung spielen ,
2 threads bestmove nach 1sec
1 thread bestmove nach 1.7 sec oder was auch immer -
das sollte signifikant unterschiedliche Anzahlen zeigen
used Hash sollte unterschiedlich sein , evals sollten unterschiedlich sein
Parent - - By Frank Brenner Date 2018-01-13 10:48
Der Zug der angezeigt wird ist aber vermutlich gleich und Einsicht in den Suchprozess, Knoten/s , Rechentiefe, hast du selbstverständlich nicht .

es gibt noch eine zuverlässigere Möglichkeit:

Du recherchierst im Vorfeld in welcher Stellung ein 2 Core Stockfish ab und zu einen anderen Zug ausführt als ein 1-Core Stockfish mit 1,8 facher Bedenkzeit. Und lässst die beiden zu identifizierenden Endignes dann tausend mal auf diese Stellung los.

Aber das war nicht gemeint.

Gemeint war daß du die Engines am Spielstiel unterscheiden kannst.

Ich gucke mir also Partien von Karpov und von Kasparov an und dann brauche ich nur wenige Partien um Eindeutig Karpov zu identifizieren.

Bei 1-Core SF mit 1,8x Bedenkzeit  vs 2-Core SF wird dir und niemanden anderen das gelingen.
Parent - - By Guenter Stertenbrink Date 2018-01-14 01:41
auch nicht mit Computer-Hilfe ? Ich lass einfach die Partien analysieren
mit 2core-fish und 1.8time-fish und zaehle die Uebereinstimmungen.
Der "Spilstil" sollte sein, dass 1core tiefer rechnet, im Durchschnitt groessere Tiefe erreicht.

das merkt man z.B. wenn die 50-Zug-Grenze sich naehert, oder wenn kein Fortschritt erzielt wird
Parent - By Frank Brenner Date 2018-01-15 00:02
Ich denke das Thema ist vollkommen uninteressant, wir kommen vom Hölzchen aufs Stöckchen.

Sebstverständlich hätte ich vorab auf mehreren Seiten  Seiten definieren sollen wie die Bedingungen lauten, so wie es sowieso bei jedem Turnier der Fall ist.
Fehlen diese vielen Seiten, so kommen irgendwelche Freaks daher und denken sich die obskursten Dinge aus die vollkommen am eigentlichen Thema vorbeigehen.
Parent - By Clemens Keck Date 2018-01-11 21:19
Hm...
Ich muß nachdenken über die von Stefan aufgeführten Argumente, die sind sehr interessant.

Außerdem habe ich mich schlecht ausgedrückt, denn mehr threads in der Suche sind schon auch teilweise vergleichbar mit mehr Bedenkzeit.
Aber es spielen noch andere Faktoren mit rein die auf das match Ergebnis Auswirkungen haben.
Die parallele Suche verläuft teilweise "chaotisch" und führt zu Zufallstreffern, oder nicht nach zu vollziehenden Niederlagen.
Womöglich gibt es noch mehr solcher Beispiele, die eine parallele Suche liefern kann.
Deswegen denke ich das eine 1cpu engine nie ganz die gleiche Leistung wie ein 4cpu oder 8cpu engine erreichen wird nur durch längere Bedenkzeit.

beste Grüße, Clemens Keck

Frank Brenner schrieb:

Code:
Ich denke die parallele Suche ist ein Faktor der keinesfalls mit mehr Bedenkzeit gleich zu setzen ist.


Was läßt Dich annehmen, daß es für z.B. Stockfish (und im allgemeinen für gar kein Schachprogramm) keinen Bedenkzeitfaktor gibt (zb 1,8) der die Spielstärke von einem z.B.  einem Core zu zwei Cores kompensiert ?
- By Guenter Stertenbrink Date 2018-01-07 06:56
wie waren die durchschnittlichen kn/s ? konnte Komodo hier auch zulegen ?
Up Topic Hauptforen / CSS-Forum / experiment match1000 T1; T4; T16

Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill