Closed tissatussa closed 3 years ago
Very good point !
My "make" build script assume Minic is cloned using git, and not downloaded from an archive and thus try to get a submodule and fail badly.
I fixed this just now on master just now so you can just override the Makefile of 3.03 with this : https://github.com/tryingsomestuff/Minic/blob/master/Makefile or wait for the next release.
Another solution might be to adapt TCEC script to your need if you want (https://github.com/tryingsomestuff/Minic/blob/master/Tools/TCEC/update.sh).
Thanks for reporting
I worked, thanks !
Testing many different engines from GitHub, i often use the ZIP file and do 'make' to compile a binary. So you adjusted one code line .. i changed the Makefile script accordingly and then doing 'make' compiled Minic "3.04" without errors or warnings!
I found the created binary in ./Dist : this might seem logical (to you) but you could mention it for the general user. The compiling process seems to write files into the directories ./Dist and ./Fathom, so you could also mention that these folders should be writable (they were, but anyhow).
Also some info could be given how to obtain a NNUE file. I once found the webpage https://www.comp.nus.edu.sg/~sergio-v/nnue/ where many (newest) NN files are, having a .bin extension. NOTE: using CuteChess, to let engines play against eachother, sometimes such .bin file needs to have the extension .nnue to function (Minic accepts .bin, but anyhow).
Yes I fixed this line in the makefile
git rev-parse --is-inside-work-tree > /dev/null 2>&1 && git submodule update --init -- Fathom || (rm -rf Fathom && git clone https://github.com/jdart1/Fathom.git)
to allow the download of Fathom when it is not a submodule.
Indeed, executable are found in Dist/Minic3 and if you use "make install" it will be in subdirectory "Tourney", which is indeed not really intuitive ;-) ... This fits my development process but maybe not the end user needs. I'll do something more userfriendly soon.
Minic's nets are available here : https://github.com/tryingsomestuff/NNUE-Nets Be sure to read the compatibility remarks carefully, because Minic's NNUE architecture changed last few months and thus not all nets are usable with all version of Minic.
If your plan is to use SV nets (SF architecture), you will need Minic 2.53. If your plan is to use "Seer style" net, you have to go for Minic 3.01 or Minic 3.03 depending on the net used.
Minic accept all extension but you have to be very very carefull of the compatibility of the net.
Again here, I'll will add some "version" checking soon in newer version of Minic.
Thanks for your interest.
Thanks for this explanation and the provided links. I picked the nettling_nemesis.bin and it works.
For beginners and non-programmers the NN subject is rather complex .. your answer introduces several net formats, which i didn't know about .. i find several .nnue / .bin / .nn ("weight") files scattered all around the internet .. how can i determine / test if a NN file is usable for an engine? Maybe you can give a link to some article about this subject ..
The answer is probably not the one you expect ... you can't ...
But as of today, many/most "NNUE" engine are using directly the SF code or some lib that to exactly the same. So SF nets (understand Hafkp architecture from Nodship initial proposal) are compatible with all those engine.
Some author are also trying their own stuff and thus introduce net architecture that of not compatible between each other, like Seer-like Halfka for instance. And even with what looks like the same architecture, some net can be incompatible. That is the case between Minic3.01 versus 3.02 where I introduced ReLU on top of classic Halfka architecture from Seer.
Good new is that for SF net, there is a "version" check (https://github.com/official-stockfish/Stockfish/blob/master/src/nnue/nnue_common.h#L49) and if architecture is changing for SF in the future, this will protect users from bad usage.
I don't have introduce such check in Minic yet, but will do soon.
By the way, the extension .nn .bin .nnue .whatsoever doesn't mean anything, it all depends on the binary format used inside.
One real difference exist though between pytorch checkpoint (.ckpt) and converted nnue net (.nnue), and of course the .ckpt are not usable as nets for engine directly.
I've added some explanation more here (https://github.com/tryingsomestuff/Minic/blob/master/README.md). Still not ideal of course but a lot is already said. Thanks again.
after downloading and unZIPping the newest v3.03, i tried to 'make' Minic but i see this error message :
git submodule update --init -- Fathom fatal: not a git repository (or any of the parent directories): .git make: *** [Makefile:11: fathom] Error 128
what's wrong ? does using the ZIP package include GIT also ? i'm not new to Linux and compiling, but i can not solve this error ..