| Mar 23 | The first commit adds a two-player solver that works one betting round at a time. |
|---|
| Mar 24 | The six-player blueprint pipeline starts, with a Monte Carlo CFR (MCCFR) trainer and a street solver in CUDA for two to six players. Later that day a test finds that, hour for hour, a GPU trainer running a noisier form of MCCFR converges 5 to 10 times more slowly than the MCCFR trainer on the CPU, so training stays on the CPU. |
|---|
| Mar 27 | A 32-bit config overflow crashes training at about 14 million iterations. |
|---|
| Apr 1 | The preflop explorer starts, and the compare view and the drills follow by Apr 7. |
|---|
| Apr 4 to 7 | A fix takes the board out of the information-set key, and tiered preflop sizes make the preflop tree 19 times smaller (43.8 million to 2.28 million nodes). Fixes follow for a race that writes duplicate keys and for a preflop chart that shows nearly every hand with another hand's strategy. |
|---|
| Apr 24 to 29 | A training run reaches 3.4 billion iterations. On Apr 29, prime table sizes cut the longest probe chain in the trainer's hash table from the 4,096-slot cap to about 37. |
|---|
| May 10 | A diagnostic finds a hash-function mismatch in the trainer's flop lookups. A blueprint resumed from the Apr 24 run reaches 5.21 billion iterations but passes only 2 of 12 preflop sanity positions. The blueprint before it, trained with the same mismatch, passed 9, so I set the newer blueprint aside. |
|---|
| May 12 to 23 | The 8.05-billion-iteration run starts from scratch and trains the blueprint NexusGTO plays. The explorer shows its preflop strategy. |
|---|
| Jun 1 | After a threading fix, a CPU solver overtakes the CUDA solver at five players. Five-player search moves to the CPU. Two- and three-player search follows by Jun 6, and it is the only search the finished engine keeps. |
|---|
| Jun 5 | The engine's first timed run from the blueprint hits 688 crashes. Its game state doesn't track real chip counts, so on lines where much of a stack is already in the pot it offers actions the blueprint has dropped. I choose the fix that has the game state count chips the way the trainer does, over one that trims the action list to match the blueprint's. After the fix the engine makes 40,004 decisions without a crash. |
|---|
| Jul 1 | Brown and Sandholm described a six-player program, Pluribus, in a 2019 Science paper, and I make it the design target in everything except bet sizes. Bet sizes are the exception because an early tree with more preflop sizes had grown too big to train. After the flop the blueprint and the search have one size for each bet or raise, where Pluribus searched with one to six raise sizes. |
|---|
| Jul 11 | The engine gets a six-max game loop and a duplicate match runner, which replays the same cards with the seats rotated so that much of the luck cancels. |
|---|
| Jul 28 to 29 | A cache of turn and river bucket IDs and a table of all five-card hands cut a fixed six-way flop benchmark from 22 minutes to 13.4 seconds. In matches NexusGTO still plays the blueprint whenever four or more players are left. |
|---|
| Sep 13 | In the first large batch of self-play matches, the first search configuration doesn't beat its blueprint. |
|---|
| Sep 16 | I ask whether matches against copies of the blueprint are the right way to compare search configurations, and choose to measure exploitability directly with a local best responder, a program that looks for the best reply one decision at a time. From then on it plays the blueprint and several of the search configurations alongside the matches, to see how much it can win from each. |
|---|
| Sep 17 | I ask why blueprint-only play could beat the search. An audit finds the search rating its own options on heads-up flops about half a pot too high, because of the leaf values the flop search assumes where its tree stops. So I drop the leaf values on heads-up flops, and the heads-up flop search runs through the river instead. |
|---|
| Sep 22 | The search has to beat the blueprint at 95% confidence, and I ask whether Pluribus was held to the same bar. Pluribus's bar was a significant win over professionals, never a win over its own blueprint. At 3,000 deals the matches are too noisy to show an edge of 4 big blinds per 100 hands, so I size the next test at 14,250 deals. That night a search that runs only on the flop, with the blueprint playing the turn and river, wins 4.11 big blinds per 100 hands against five copies of the blueprint over those deals (95% confidence interval 1.42 to 6.80). |
|---|
| Sep 23 | The decision rule is committed that morning, before the run. It says how the run's results will pick between that flop-only search and searching every street. The plan around the rule already lists own-range tracking among the fixes to build. With it the search works out the hands it could hold from how it has played. The tracking's code goes in about four hours after the rule, and the run starts minutes later. |
|---|
| Sep 24 | The run's full results come in. The search with own-range tracking wins 5.73 big blinds per 100 hands against five copies of the blueprint (95% confidence interval 2.74 to 8.72) over 14,250 duplicate deals at 100 big blinds with no rake. AIVAT scores the deals by subtracting the luck it can calculate. Read literally, the decision rule doesn't adopt this search. If a search added after the run started counts, as the project's results log took it to, the rule adopts the search without own-range tracking; if not, it adopts the flop-only search. The search without own-range tracking scores 8.61, not significantly more. But heads-up in the blinds, with each showdown scored over every hand a version could hold, the best responder takes 64.4 big blinds per 100 hands from that search and only 9.2 from the tracked one, so the results lead with the tracked search. In chips won the gap between the two takes is 30.8 and isn't significant. |
|---|