Releases: jnlt3/blackmarlin
9.0
Black Marlin 9.0
Black Marlin 9.0 gains ~90 Elo over Black Marlin 8.0 at long time controls and makes a few significant changes to the engine behavior.
The time management algorithm has been entirely rewritten, fixing the problem where Black Marlin could think up to 80% of its remaining time on a single move.
Black Marlin 9.0 is the first release to target improvement in longer time controls. The search algorithm has been tuned for long time control performance at over 500000 games. The time management has also been tuned with genetic algorithms to optimize performance for long time controls.
Black Marlin 9.0 benefits from significant improvements in the Neural Network Evaluation including a larger dataset of 3.5 billion chess positions. This release also fixes the issue where Black Marlin would rate winning endgames close to drawn.
Despite being slower due to the larger neural network, Black Marlin 9.0 comes with significant performance improvements that users will especially benefit from with larger Hash sizes.
Picking Binaries
Find the binaries that match your operating system and processor according to the below table:
Operating System | Processor | Binary |
---|---|---|
Windows/Linux | AMD Zen 1/2/3 | x86-64-v3 |
Windows/Linux | AMD Zen 4 / Some Intel processors | x86-64-v4 |
Windows/Linux | Intel (After ~2013) | x86-64-v3 |
Windows/Linux | Intel (Before ~2013) | x86-64-v2 or x86-64 |
MacOS | Intel (After ~2013) | soon to be available |
MacOS | Intel (Before ~2013) | soon to be available |
Linux on Apple Silicon | ARM | soon to be available |
Apple Silicon | ARM | soon to be available |
8.0
Release Info
I have decided to continue the development of Black Marlin after a couple months long break. This release consists of many improvements on search and the Neural Network, the most significant one being the usage of threats.
Results Against Previous Release
ELO | 104.71 +- 3.05 (95%)
CONF | 8.0+0.08s Threads=1 Hash=8MB
GAMES | N: 20008 W: 7140 L: 1286 D: 11582
Selecting Binaries
If you are on Apple Silicon, the binary is blackmarlin-darwin-arm
.
On any other system, the binaries with higher numbers are faster as long as your hardware supports them, more information below.
If you know the capabilities of your CPU:
x86-64: SSE2
x86-64-v2: SSSE3, SSE4.2
x86-64-v3: AVX2
x86-64-v4: AVX512
Otherwise, pick your operating system and start from the binary with the highest x86-64 level and pick a lower one until the binary doesn't crash. Alternatively, check the link here.
7.0
Search
Black Marlin's search now includes the threats idea from Koivisto. There are various other search tweaks, though most notably, the search algorithm has been tuned automatically via the usage of SPSA. The new search parameters result in a much wider, yet much stronger search.
Evaluation
The neural network has doubled in size and has been trained on a much larger dataset than previously done. This data has been generated by the author of Seer and resulted in significant gains.
Self Play Results
ELO | 134.35 +- 3.48 (95%)
CONF | 8.0+0.08s Threads=1 Hash=8MB
GAMES | N: 20000 W: 8935 L: 1565 D: 9500
Testing
Testing has been done on the main OpenBench instance. Aside from increased hardware, this has the added benefit of ideas being verified by various other engine authors. Thanks to Andrew Grant and all the engine authors on the instance.
Thanks
Analog Hors, for developing cozy chess.
MinusKelvin (Frozenight author), for exchanging ideas.
Koivisto authors, for the idea of using threats in search.
Connor (Seer author), for generating data.
Andrew Grant, for developing OpenBench.
noobpwnftw, for providing the OpenBench hardware.
Selecting Binaries
If you are on Apple Silicon, the binary is blackmarlin-darwin-arm
.
If you know the capabilities of your CPU:
x86-64: SSE2
x86-64-v2: SSSE3, SSE4.2
x86-64-v3: AVX2
x86-64-v4: AVX512
Otherwise, pick your operating system and start from the binary with the highest x86-64 level and pick a lower one until the binary doesn't crash. Alternatively, check the link here.
6.0
Bug Fixes
Black Marlin no longer has issues with multi-threaded environments.
Features
The main improvement comes from the search function where various new ideas were implemented in addition to major bug fixes.
The neural network trainer has been refactored with the help of Minus Kelvin and Analog Hors and was used to train the 6.0 network.
FRC specific patches were made to increase FRC performance until an evaluation system that covers both can be made.
Self play results
Classical Chess
ELO | 98.22 +- 3.42 (95%)
CONF | 8.0+0.08s Threads=1 Hash=8MB
GAMES | N: 20000 W: 7816 L: 2308 D: 9876
FRC
ELO | 93.35 +- 3.82 (95%)
CONF | 8.0+0.08s Threads=1 Hash=8MB
GAMES | N: 20000 W: 8756 L: 3508 D: 7736
Selecting Binaries
If you are on Apple Silicon, the binary is blackmarlin-darwin-arm
.
Otherwise, pick your operating system and start from the binary with the highest x86-64 level and pick a lower one until the binary doesn't crash. Alternatively, check the link here if you already know the capabilities of your CPU.
5.0
Features
Black Marlin 5.0 is noticeably more optimized than 4.0, comes with various improvements to the search function and uses the HalfKP feature set for NNUE evaluation. The network has been trained on 820M positions which is composed of the dataset used to train 4.0 neural networks and a newly generated one. The neural network is embedded in the executable, so no additional work is required.
In self play, Black Marlin 5.0 is ~125 Elo stronger than Black Marlin 4.0 at short time controls (8+0.08).
Which Binary to Download?
Before everything, the main branch on GitHub is always the strongest version and is configured to compile for the CPU of the specific machine. Building from source will always give you the strongest possible engine.
The binaries require the instructions in their names (e.g. blackmarlin-windows-popcnt-avx2.exe will require popcnt and avx2 instructions).
If you are on an ARM Mac, you'll need the darwin-neon build.
Binaries Ordered by Runtime Performance:
- AVX512F + POPCNT
- AVX2 + POPCNT
- SSE4.2 + POPCNT
- SSSE3 + POPCNT
- POPCNT
- No Instructions Included
4.0
Features
Black Marlin 4.0 introduces a larger neural network, more aggressive pruning, better move ordering and code optimizations.
In self play, Black Marlin 4.0 is ~150 Elo stronger than Black Marlin 3.0 at short time controls (8+0.08).
Neural Network File
This has been misunderstood in the past. The neural networks are included in the release binaries and doesn't need to be set afterwards.
Which Binary to Download? (Windows)
Before everything, the main branch on GitHub is always the strongest version and is configured to compile for the CPU of the specific machine. Building from source will always give you the strongest possible engine.
The binaries require the instructions in their names (e.g. blackmarlin-popcnt-avx2.exe will require popcnt and avx2 instructions).
Binaries Ordered by Runtime Performance:
- AVX512F + POPCNT
- AVX2 + POPCNT
- SSE4.2 + POPCNT
- SSSE3 + POPCNT
- POPCNT
- No Instructions Included
3.0
Note
Binaries have been updated to do proper castling for non FRC games.
They are functionally the same however the binary won't match the source code provided.
Features
Black Marlin 3.0 is mostly NNUE and evaluation improvements in general. It is also capable of playing Chess960 although there is no estimate on its strength.
Thanks
Analog Hors, for keeping me motivated to do computer chess. We met each other through discord around a month after I started computer chess and have been talking ever since.
Ofek Shochat for being supportive of Black Marlin's development and contributing CPU time.
Andrew Grant for OpenBench. A private instance has been used for Black Marlin's development and it has been massively helpful for faster testing and keeping track of results.
A massive thanks to the OpenBench community as a whole for providing me with guidance with development and testing.
Which Binary to Download? (Windows)
Before everything, the main branch on GitHub is always the strongest version and is configured to compile for the CPU of the specific machine. Building from source will always give you the strongest possible engine.
The binaries require the instructions in their names (e.g. blackmarlin-popcnt-avx2.exe will require popcnt and avx2 instructions).
Binaries Ordered by Runtime Performance:
AVX512F + POPCNT
AVX2 + POPCNT
SSE4.2 + POPCNT
SSSE3 + POPCNT
POPCNT
No Instructions Included
2.0
Features
Black Marlin 2.0 is composed of various improvements in search, a new neural network trained for a longer amount of time and a completely new time management system.
Which Binary to Download? (Windows)
Before everything, the main branch on GitHub is always the strongest version and is configured to compile for the CPU of the specific machine. Building from source will always give you the strongest possible engine.
The binaries require the instructions in their names (e.g. blackmarlin-popcnt-avx2.exe will require popcnt and avx2 instructions).
Binaries Ordered by Runtime Performance:
- AVX512F + POPCNT
- AVX2 + POPCNT
- SSE4.2 + POPCNT
- SSSE3 + POPCNT
- POPCNT
- No Instructions Included
1.0
First release of Black Marlin or BM for short.
Features:
Supports the UCI Protocol
NNUE trained on self-play
Classical Alpha Beta Search that supports LazySMP
NNUE:
The Neural Network comes embedded in the binary, and can't be deactivated. Due to major differences in design, Black Marlin neural networks can't/most likely won't be compatible with other engines' neural networks.
Search:
The search supports usage of multiple threads. The optimal number is most likely the amount of threads your CPU supports however a larger Hash will be required. An Elo gain of ~80 can be expected for each thread doubling.
UCI:
Black Marlin supports everything that is necessary to play a game of chess. Although it has a few additions that only work in the command-line interface.
Dev:
Calling eval will output what Black Marlin currently thinks of the position without doing any sort of calculations.
Calling detail will make Black Marlin output how much each square contributes to the total evaluation.
Calling detailsearch x will make Black Marlin output how much each square contributes to the total evaluation considering the future x moves.
Which Binary to Download? (Windows)
Before everything, the main branch on GitHub is always the strongest version and is configured to compile for the CPU of the specific machine. Building from source will always give you the strongest possible engine.
The binaries require the instructions in their names (e.g. blackmarlin-popcnt-avx.exe will require popcnt and avx instructions).
Binaries Ordered by Runtime Performance:
- AVX512F + POPCNT
- AVX2 + POPCNT
- AVX + POPCNT
- SSSE3 + POPCNT
- SSE2 + POPCNT
- SSE2
- No Instructions Included