Not logged inCSS-Forum
Forum CSS-Online Help Search Login
CSS-Shop Impressum Datenschutz
Up Topic Hauptforen / CSS-Forum / Frage zu cutechess-cli
- - By Stefan Pohl Date 2019-07-23 11:59
Ich hab eine Frage zu cutechess-cli bzgl. der Eröffnungswahl im Gauntlet-Modus.

Wie bekannt sein dürfte, benutze ich ja für meine Testruns für meine Website die LittleBlitzerGUI. Wenn ich dort ein Gauntlet von einer Stockfish-Dev gegen 5 Gegner spielen lasse, dann sind das 5000 Partien (1000 pro Gegner) und ich nutze das HERT-Eröffnungsset. Dieses umfaßt ja 500 Vorgabestellungen. Und die LBG spielt dieses Gauntlet nun so ab, wie man es eigentlich erwarten würde und wie es auch die FritzGUI macht, nämlich dergestalt, daß in jeder der 1000 Partien-Einzelbegegnungen (also Stockfish vs Houdini, Stockfish vs Komodo, Stockfish vs Fire etc. etc.) jeweils alle 500 Eröffnungs-Vorgabestellungen 2x (mit vertauschten Farben wiederholt) abgespielt werden.
Und das bekomme ich mit cutechess-cli nicht hin. Spiele ich dort ein Gauntlet gegen mehr als einen Gegner, was ja der übliche Fall ist, wird immer nach nur zwei Partien (also Hin- und Rückspiel einer Engine-Engine Konstellation) die nächste Eröffnungsstellung aus dem Vorgabeset genommen. Auch, wenn ich den repeat-Parameter höher als 2 stelle. Dann bekomme ich eine Warning-Anzeige und es wird dennoch nach 2 Partien immer eine neue Vorgabestellung gewählt.
Das ist doch totaler Mist. So kann man ja gar keine ernsthaften Test-Gauntlet-Runs, wie sie für Ranglistentests unerläßlich sind, durchführen. Zumindest nicht so, daß jede Engine immer die genau gleichen Eröffnungen gegen jede Gegnerengine spielt. Oder bin ich nur zu blöd das richtig einzustellen?

Ich wäre für jede Aufklärung und Hilfe dankbar.

Die Versionsnummer, die mir cutechess-cli anzeigt, ist übrigens diese hier:
cutechess-cli 1.0.0
Using Qt version 5.9.2

Copyright (C) 2008-2017 Ilari Pihlajisto and Arto Jonsson
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

(Nur, falls es vielleicht eine neuere Version gibt, von der ich nichts weiß und wo diese Verhalten nicht mehr auftritt?!?)
Parent - - By Peter Weise Date 2019-07-23 12:22
Wie sieht denn die command-line aus? Bitte mal hier reinkopieren.
Parent - - By Stefan Pohl Date 2019-07-23 12:34
Peter Weise schrieb:

Wie sieht denn die command-line aus? Bitte mal hier reinkopieren.


cutechess-cli.exe -engine name="lc0 0.21.2 42741" dir="C:\Cutechess-cli_v1\Leela_base" option.Threads=1 cmd="lc0.exe --backend=cudnn" nodes=100 -engine name="lc0 0.21.2 42793" dir="C:\Cutechess-cli_v1\Leela_new1" option.Threads=1 cmd="lc0.exe --backend=cudnn" nodes=100 -engine name="lc0 0.21.2 42794" dir="C:\Cutechess-cli_v1\Leela_new2" option.Threads=1 cmd="lc0.exe --backend=cudnn" nodes=100 -engine name="lc0 0.21.2 42795" dir="C:\Cutechess-cli_v1\Leela_new3" option.Threads=1 cmd="lc0.exe --backend=cudnn" nodes=100 -pgnout "match.pgn" min -each proto=uci tc=inf -recover -concurrency 1 -tournament gauntlet -resign movecount=3 score=700 -draw movenumber=160 movecount=1 score=9999 -ratinginterval 20 -games 2 -rounds 500 -openings file="C:\Cutechess-cli_v1\Hert500.pgn" format=pgn order=sequential -repeat

(Leider ändert sich das Verhalten nicht, wenn ich -repeat 6 reinstelle, statt nur -repeat.)
Parent - - By Peter Weise Date 2019-07-23 13:37 Edited 2019-07-23 13:40
Was passiert bei: "- rounds 5000" wenn man gegen 5 Gegner antreten lässt, also 5 x 1000 Partien haben will?
Parent - - By Stefan Pohl Date 2019-07-23 13:48
Peter Weise schrieb:

Was passiert bei: "- rounds 5000" wenn man gegen 5 Gegner antreten lässt, also 5 x 1000 Partien haben will?


-games2 -rounds 500 gibt bei 5 Gegnerengines ein Gauntlet mit 5000 Partien. Das zeigt cutechess ja auch dann so an (Partie 1 von 5000, Partie 2 von 5000).

-rounds 5000 wäre bei -games 2 bei 5 Gegnerengines 50000 Partien.
Parent - - By Peter Weise Date 2019-07-23 14:05
War nur so eine erste Idee.
Hattest du den Wert bei repeat in eckige Klammern gesetzt?

In der Anleitung steht:
-repeat [N]
Parent - By Stefan Pohl Date 2019-07-23 15:13
Peter Weise schrieb:

War nur so eine erste Idee.
Hattest du den Wert bei repeat in eckige Klammern gesetzt?

In der Anleitung steht:
-repeat [N]


Natürlich nicht. Die eckigen Klammern bedeuten nur, daß das Angeben von N optional ist.
Parent - - By Jörg Oster Date 2019-07-23 14:55
Nur mal jetzt so schnell in die Runde geworfen,
setze games auf 1000, du willst ja pro Begegnung alle 500 Eröffnungen,
wiederholt mit vertauschten Farben, spielen lassen.

Ich nutze den Gauntlet-Modus äußerst selten, aber ich meine mich zu erinnern,
dass das nur so funktioniert. Ob der rounds Parameter überhaupt benötigt wird, weiß ich jetzt auch nicht.
Evtl. musst du ihn auf die Anzahl der Gegner setzen.

Die Dokumentation ist in dieser Hinsicht leider etwas dürftig.
Parent - By Stefan Pohl Date 2019-07-23 15:17
Jörg Oster schrieb:

Nur mal jetzt so schnell in die Runde geworfen,
setze games auf 1000, du willst ja pro Begegnung alle 500 Eröffnungen,
wiederholt mit vertauschten Farben, spielen lassen.

Ich nutze den Gauntlet-Modus äußerst selten, aber ich meine mich zu erinnern,
dass das nur so funktioniert. Ob der rounds Parameter überhaupt benötigt wird, weiß ich jetzt auch nicht.
Evtl. musst du ihn auf die Anzahl der Gegner setzen.

Die Dokumentation ist in dieser Hinsicht leider etwas dürftig.


Die Dokumentation ist in jeder Hinsicht mehr als dürftig. Wenn man schon ein commandline-Tool mit so vielen Parametern baut, muß man wenigstens eine ausführliche Doku schreiben. Wie z.B. bei pgn-extract.

Aber deinen Vorschlag probiere ich morgen mal aus. Allerdings befürchte ich, daß dann erst die 1000 Partien gegen die erste Gegnerengine komplett durchgespielt werden und dann die 1000 Partien gegen die zweite Engine. Damit hätte man keinen brauchbaren Zwischenstand bzgl. des zu erwartenden Endergebnisses, solange der Testrun läuft.
Aber das muß ich erst probieren
Parent - - By Thomas Plaschke Date 2019-07-23 16:00
Das Turnier als 5 Einzelturniere - sequentiell - laufen zu lassen geht nicht?

In meiner "Batch-Syntax" wäre das:

Code:

cutechess %E1% %E2% %TURNIER%
cutechess %E1% %E3% %TURNIER%
cutechess %E1% %E4% %TURNIER%
cutechess %E1% %E5% %TURNIER%
cutechess %E1% %E6% %TURNIER%


Viele Grüße
Th. Plaschke
Parent - - By Stefan Pohl Date 2019-07-23 16:29
Thomas Plaschke schrieb:

Das Turnier als 5 Einzelturniere - sequentiell - laufen zu lassen geht nicht?

In meiner "Batch-Syntax" wäre das:

Code:

cutechess %E1% %E2% %TURNIER%
cutechess %E1% %E3% %TURNIER%
cutechess %E1% %E4% %TURNIER%
cutechess %E1% %E5% %TURNIER%
cutechess %E1% %E6% %TURNIER%


Viele Grüße
Th. Plaschke


Doch, das ginge natürlich, aber dann habe ich keinen brauchbaren Zwischenstand, ähnlich wie vermutlich bei Jörg Osters Vorschlag. Weil dann eben erst die 1000 Partien gegen die erste Gegnerengine komplett durchgespielt werden und dann die 1000 Partien gegen die zweite Engine usw. Damit hätte man keinen brauchbaren Zwischenstand bzgl. des zu erwartenden Endergebnisses, solange der Testrun läuft. Nur, wenn ich brauchbare Live-Zwischenstände sehe, kann ich ggf. einen Testrun auch mal abbrechen. Wenn ich z.B. jetzt im Schnellverfahren Lc0-Netze teste. Dann lasse ich so einen 5000er Testrun halt gut 24 Stunden laufen und stoppe dann und schaue mir das Ergebnis bis dahin an, wenn eben ca. 3000 Partien durch sind.  Dann hat jedes der 5 Netze so 600 Partien gespielt. Mit deinem Verfahren hätte ich dann 3 1000er Ergebnisse der ersten drei Netze und Null Partien der letzten 2 Netze.
Das ist einfach nicht praxistauglich für mich als Tester.
Parent - By Thomas Plaschke Date 2019-07-23 17:24
Das sehe ich ein.

VG
Th. Plaschke
Parent - By Thomas Plaschke Date 2019-07-23 22:29
Ich habe inzwischen ein wenig getestet. Leider kann ich auch keine Lösung anbieten. Eine verrückte Idee wäre die Begegnungen als eigene Paarungen (mein Lösungsvorschlag) parallel laufen zu lassen, aber auf verschiedene Ergebnisfiles, damit es kein Kuddelmuddel gibt. Für den Zwischenstand kopiert man diese Files in eine Datei. Fertig. Eine Lösung für Leidensfähige.

Viele Grüße
Th. Plaschke
Parent - - By Peter Weise Date 2019-07-24 09:36
Ich habe es mal gestern Nacht selbst getestet mit 3 Teilnehmern und 50 Stellungen. Teilnehmer Nummer 1 soll gegen die anderen 2 spielen, also gesamt 200 Partien. Der Parameter repeat mit einer Zahl also -repeat 2 hat bei mir gar nicht funktioniert. Es kam immer "Warning: Too many arguments for option "-repeat"".
Die Erklärung zu repeat in der Anleitung:
"-repeat [N]
Play each opening twice (or N times). Unless the -noswap option is used, the players swap sides after each game. So they get to play the opening on both sides. Please note that a new encounter will use a new opening."

Das von mir hervor gehobene scheint das Problem zu sein: jede neue Begegnung verwendet automatisch eine neue Eröffnung, deshalb auch der Versatz bei Stefan Pohl.

Folgender Punkt in der Anleitung bezüglich Vorgabedatei scheint die Lösung des Problems zu sein:
The POLICY rules when to shift to a new opening. It can be one of 'encounter'- which uses a new opening for any new pair of players, 'round'- which shifts only for a new round, or 'default'- which shifts for any new pair of players and also when the number of opening repetitions is reached."

Allerdings bekomme ich policy=round nicht zum laufen es erscheint immer die Fehlermeldung: "Warning: Invalid argument for option "-openings": "policy=round"".

So sieht meine command-line aus:
cutechess-cli.exe -engine name="Booot63" cmd="booot6_popcnt.exe" dir="K:\Cutechess\Engines\Booot" option.Threads=1 -engine name="Laser17" cmd="Laser-1_7.exe" dir="K:\Cutechess\Engines\Laser" option.Threads=1 -engine name="Andscacs095" cmd="andscacs.exe" dir="K:\Cutechess\Engines\Andscacs" option.Threads=1 -pgnout "testserie.pgn" min -each proto=uci tc=80/10 -concurrency 2 -tournament gauntlet -ratinginterval 20 -games 2 -rounds 50 -openings file="K:\Cutechess\Vorgaben50Vol1.pgn" format=pgn order=sequential policy=round -repeat

Hat jemand eine Idee weshalb das nicht funktioniert?
Parent - - By Peter Weise Date 2019-07-24 10:13
Ich habe Version 1.0.0 (5.9.1) im Einsatz, die kann das alles wohl nicht.
cutechess-cli -help (Auszug):

-openings file=FILE format=FORMAT order=ORDER plies=PLIES start=START

es fehlt also policy

...
-repeat Play each opening twice so that both players get to play it on both sides

es fehlt also N.

@ Stefan Pohl: deine Version konnte doch repeat N, woher stammt diese Version?
Und kann diese  -openings file ... policy=round?
Parent - - By Peter Weise Date 2019-07-24 10:17
Das ist wohl die Lösung:

https://github.com/cutechess/cutechess/commit/123f75184eb07e601a4b104e73653353ba432844

"RoundPolicy shifts to a new opening only when a new round starts."

ich weiß aber nicht ob man schon eine Version downloaden kann?
Parent - By Stefan Pohl Date 2019-07-24 11:43
Peter Weise schrieb:

Das ist wohl die Lösung:

<a class='ura' href='https://github.com/cutechess/cutechess/commit/123f75184eb07e601a4b104e73653353ba432844'>https://github.com/cutechess/cutechess/commit/123f75184eb07e601a4b104e73653353ba432844</a>

"RoundPolicy shifts to a new opening only when a new round starts."

ich weiß aber nicht ob man schon eine Version downloaden kann?


Das ist definitiv die Lösung, aber diese ist vom 28.4.2019. Und der letzte Github-Release, also eine compilierte, lauffähige .exe ist leider vom September 2016 (V0.85). Ich habe die Version 1.0 vom 30.Januar 2018 (keine Ahnung, wer die compiliert hat). Hilft mir aber auch nicht. Ein neuer Release muß her! Also, wer sich damit auskennt, Github Sourcen in brauchbare exe-Dateien zu compilieren (ich nicht!) möge bitte mal zur Tat schreiten, das wäre wirklich ein großer Schritt vorwärts für cutechess, vorausgesetzt der Code funktioniert.
Parent - By Stefan Pohl Date 2019-07-24 11:54
Peter Weise schrieb:

Ich habe Version 1.0.0 (5.9.1) im Einsatz, die kann das alles wohl nicht.
cutechess-cli -help (Auszug):

-openings file=FILE format=FORMAT order=ORDER plies=PLIES start=START

es fehlt also policy

...
-repeat Play each opening twice so that both players get to play it on both sides

es fehlt also N.

@ Stefan Pohl: deine Version konnte doch repeat N, woher stammt diese Version?
Und kann diese  -openings file ... policy=round?


Weiß ich nicht, du kannst sie dir aber auf meiner Website downloaden:

https://www.sp-cc.de/files/cutechess-cli_v1.zip

den policy-Parameter kennt sie aber nicht.
Parent - - By Guenter Stertenbrink Date 2019-07-23 14:13
ich wuerde einfach ein neues 2500er Buch machen mit jeder Eroeffnung 5mal hintereinander
Parent - - By Stefan Pohl Date 2019-07-23 16:32
Guenter Stertenbrink schrieb:

ich wuerde einfach ein neues 2500er Buch machen mit jeder Eroeffnung 5mal hintereinander


Das geht nicht. Wenn man z.B. eine Engine mit je 1000 Partien nur gegen drei Gegnerengines testen will, dann geht das nicht auf. Eine Vollrunde wären dann 6 Partien. Das kann man nicht gerade durch 1000 teilen..
Dann müßte man sich ein Set bauen, wo die erste Eröffnungslinie 3x identisch hintereinander vorkommt, danach die zweite 3x identisch usw. Dann ginge es. Aber das müßte man dann auch für 4x und 5x etc. machen. Nein, danke.
Parent - - By Guenter Stertenbrink Date 2019-07-23 20:43
da koennte ich leicht ein tool fuer schreiben

vorrausgesetzt das .pgn Format ist einigermassen simple und einheitlich
Leerzeile am Ende oder "*" oder so

pgnmult.exe pgnfile multiplicity

prints to stdout
Parent - - By Stefan Pohl Date 2019-07-23 20:52
Guenter Stertenbrink schrieb:

da koennte ich leicht ein tool fuer schreiben

vorrausgesetzt das .pgn Format ist einigermassen simple und einheitlich
Leerzeile am Ende oder "*" oder so

pgnmult.exe pgnfile multiplicity

prints to stdout


Eigentlich schon. Das Hert500.pgn kannst du dir jederzeit auf meiner Website herunterladen. So ein Tool wäre natürlich sehr schön. Und würde cutechess-cli erheblich aufwerten. Aber vielleicht kann auch jemand cutechess selbst umschreiben, sodaß man vernünftige Testgauntlets spielen kann?! Der Code ist doch OpenSource.
Parent - - By Guenter Stertenbrink Date 2019-07-23 22:25 Edited 2019-07-23 22:28
http://magictour.free.fr/pgn-mult.exe
http://magictour.free.fr/PGN-MULT.C

compiled auf meinem alten Laptop mit altem gcc3.2

wenn's nicht klappt kann ich's morgen auf 'nem neuem
Rechner versuchen oder du compilierst es selber

asmfish 2017/11/07 verlor just gegen asmfish 2017/10/03
mit 2496-2504 damit (random move) , Chess for Android

--------------------------------
#include <stdio.h>

unsigned char A[999][999];
int N[999];
int m,f,i,j,k,a,b,n,x,y,p,q,mult=0;
FILE *file;

//------------------------------------------------------------
int main(int argc,char*argv[]){
  if(argc<3){printf("\nusage:pgn-mult pgnfile multiplicator \n\n");
             printf("multiplies each opening from pgnfile f\n");
             printf("output to stdout , use > file to safe it to file \n");
       goto m9;}

sscanf(argv[2],"%i",&mult);if(mult<1 || mult>999)mult=2;

  if((file=fopen(argv[1],"rb"))==NULL){printf("\ncan't open file %s\n",argv[1]);goto m9;}

m0:m=0;
m1:m++;if(m>990)m=990;n=0;
m2:n++;if(n>990)n=990;if(feof(file))goto m5;
   A[m][n]=fgetc(file);if(A[m][n]!=10)goto m2;N[m]=n;
   if(A[m][n-1]!=42 && A[m][n-2]!=42)goto m1;  // opening-end must be * - character

m5:;if(m<3)goto m9;
for(f=1;f<=mult;f++)
for(i=1;i<=m;i++){
for(j=1;j<N-1;j++)printf("%c",A[j]);printf("\n");
}

if(feof(file)==0)goto m0;

m9:fclose(file);

}
Parent - By Stefan Pohl Date 2019-07-24 11:51 Edited 2019-07-24 12:38
Vielen Dank für deine schnellen Bemühungen, leider läuft die exe nicht (angeblich keine Windows 64bit Version).

Da es aber den benötigten Patch für cutechess auf Github schon gibt, bin ich zuversichtlich, daß sich das Gauntlet-Problem bei cutechess bald erledigt haben wird...Insofern solltest du dich nicht weiter bemühen.
Für meine Schnelltests der lc0-Nets mit 100 nodes pro Zug nehme ich einfach ein großes Eröffnungsset und für meine richtigen Testruns sowieso die LittleBlitzerGUI.
Es wäre eben nur perspektivisch toll, wenn cutechess für ernsthafte Ranglisten-Testruns brauchbar würde, weil ich ja nicht weiß, wie lange die LittleBlitzerGUI noch benutzbar ist. Irgendwann könnte sich ja das UCI-Protokoll mal ändern, oder Windows 13 erlaubt den Start solch alter Anwendungen nicht mehr oder ähnliches. Dann müßte ich auf cutechess umsteigen.
Up Topic Hauptforen / CSS-Forum / Frage zu cutechess-cli

Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill