SHARINGAN-2: the full-length Poker Sharingan blueprint

SHARINGAN-2 is blueprint C of the Poker Sharingan Pluribus reproduction (Brown & Sandholm, Science 2019) for 6-player no-limit Texas hold'em, trained to the full 1.83e11 iterations. It is the successor of SHARINGAN-1 (the same run at 2e10 iterations). Code, training and evaluation tooling: https://github.com/markokraemer/poker-sharingan (Rust workspace, "library: custom": the weights are read by the Rust crates blueprint and bench).

The public arena's sharingan-1 track keeps SHARINGAN-1 as its opponent for the duration of the current competition, so scores stay comparable.

Results

All numbers: 6-max, duplicate deals + AIVAT, mbb/game (1 mbb/game = 0.1 bb/100), 95% CI, 4M deals per format.

test 3 + 3 seats 1 SHARINGAN-2 vs 5 5 vs 1 (the other side's score)
SHARINGAN-2 vs SHARINGAN-1 (C@2e10) +5.09 +- 1.16 +8.60 +- 1.89 -7.64 +- 1.88
SHARINGAN-2 vs C@4.77e10 (strongest earlier checkpoint) +1.97 +- 0.97 +3.76 +- 1.57 -1.95 +- 1.58
test result
trained best response (12M iterations, every seat) vs SHARINGAN-2 the exploiter loses -247 +- 58 (SHARINGAN-1: -323 +- 62). A true best response cannot lose, so this run is far too short to measure exploitability: a sanity check that it finds no easy leak, not evidence of robustness
gauntlet, 6-max, vs nit / TAG / LAG / maniac / calling station / random +125 +- 35 / +303 +- 56 / +933 +- 85 / +1,622 +- 99 / +2,572 +- 118 / +4,004 +- 197

It is a 6-max blueprint: heads-up (2-max) play is out of distribution (it loses to the simple built-in bots there).

What is in this repository

file size what it is
sharingan-2.plcp.part-* 169.9 GB SHARINGAN-2: blueprint C after 1.83e11 iterations (PLCP1 compact, 14.5B infosets, medium bet sizes)
buckets-200.tar 0.28 GB the 200-bucket card abstraction for postflop streets (same as SHARINGAN-1). Required
SHA256SUMS.models, SHA256SUMS.parts checksums of the reassembled file and of every part

Files are split into 25 GB parts for upload. Reassemble and check:

pip install -U huggingface_hub
hf download markokraemer/sharingan-2 --local-dir weights
cd weights && sha256sum -c SHA256SUMS.parts
cat sharingan-2.plcp.part-* > sharingan-2.plcp && sha256sum -c SHA256SUMS.models && rm sharingan-2.plcp.part-*
mkdir -p ../data && tar xf buckets-200.tar -C ../data          # -> data/buckets-200/

Use it

From a clone of the repo (RUSTFLAGS="-C target-cpu=native" cargo build --release). The file is memory-mapped: disk is required, RAM only makes it faster. Load it with the medium menu.

# inference server: POST /v1/act with a hand, get SHARINGAN-2's action (format: sharingan-1/serve/README.md)
./target/release/sharingan-serve --blueprint weights/sharingan-2.plcp --buckets data/buckets-200 --sizing medium --no-auth

# your own arena with SHARINGAN-2 as the house bot
ARENA_BLUEPRINT=$PWD/weights/sharingan-2.plcp ARENA_BUCKETS=tables:$PWD/data/buckets-200 ARENA_SIZING=medium ./target/release/sharingan-arena --port 8080

# the head-to-head above
./target/release/pluribus h2h --a weights/sharingan-2.plcp --sizing-a medium --b weights/sharingan-1.plcp --sizing-b medium \
    --buckets data/buckets-200 --players 6 --deals 4000000 --threads 32 --warm --out h2h.json

Model details

  • Game: 6-max no-limit hold'em, 100 bb stacks.
  • Algorithm: parallel external-sampling Linear MCCFR with negative-regret pruning; the paper's schedule scaled to iterations. Run C, seed 2019, trained to 1.83e11 iterations (the paper's budget), on 64-core / 576 GB bare-metal servers, resumed across restarts from checkpoints.
  • Abstraction: preflop lossless; 200 buckets per postflop street. Action menu medium (must match at load time).
  • Real-time search is code, not weights (see SHARINGAN-1's card and the repo); the numbers above are blueprint against blueprint.

Limitations and risks

  • Not evaluated against strong humans; exploitability is only bounded from below by one trained best response.
  • Trained for 100 bb, 6-max. Off-menu bet sizes are handled by action translation, the main exploitable surface of this class of agents.
  • A near-equilibrium bot is a weaker exploiter of weak opponents than adaptive bots.
  • Dual use: a strong poker agent can be used to cheat on real-money sites, which prohibit bots. Do not use it for that.

Citation

@article{brown2019superhuman,
  title   = {Superhuman AI for multiplayer poker},
  author  = {Brown, Noam and Sandholm, Tuomas},
  journal = {Science}, volume = {365}, number = {6456}, pages = {885--890}, year = {2019}
}
Downloads last month

-

Downloads are not tracked for this model. How to track
Video Preview
loading