AYipppp/gtow-llama-sft-v3
GTO Wizard — Heads-Up NL Hold'em 200BB — SFT dataset (v3) Supervised fine-tuning data for heads-up No-Limit Texas Hold'em, 200 big blinds deep. Each row is a single decision point: a natural-language description of the game state, paired with the game-theory-optimal action GTO Wizard chose in that spot. Intended for instruction-tuning a chat LLM to play HU 200BB poker (see the pokerbench agent it was built for). Schema Two flat columns: Column Description… See the full description on the dataset page: https://huggingface.co/datasets/AYipppp/gtow-llama-sft-v3.
GTO Wizard — Heads-Up NL Hold'em 200BB — SFT dataset (v3)
Supervised fine-tuning data for heads-up No-Limit Texas Hold'em, 200 big blinds deep. Each row is a single decision point: a natural-language description of the game state, paired with the game-theory-optimal action GTO Wizard chose in that spot.
Intended for instruction-tuning a chat LLM to play HU 200BB poker (see the pokerbench agent it was built for).
Schema
Two flat columns:
System prompt (constant, not stored as a column — re-add it at train and inference time):
You are an expert poker player. Respond with your action in <action></action> tags.Splits
Split by `hand_id` — no hand appears in more than one split, so there is no leakage between train and eval.
How it was built
collect_data.py plays hands against the GTO Wizard researcher API; every action GTO Wizard takes becomes one labeled example. The public game state is rendered into the instruction text by prompt_formatter.format_prompt, using the exact wording the downstream agent sees at inference time.
Pre-action state correction (important)
The GTOWizard API only exposes the game state after an action lands, so a naively-collected pot/stack already includes the chips the player just committed — which leaks the label (a model can read the action straight off (pot, stack) and ignore the cards). This dataset is corrected: pot and stacks are rolled back to the pre-action state at the moment of the decision, matching what a live API serves before the action. Train on this, not on an uncorrected collection.
Action token reference
Blinds are 50 / 100; starting stack 20,000 (200 BB).
Caveats
- The label is GTO Wizard's action — a strong GTO-approximate policy, not a guaranteed exact Nash solution.
- Opponent hole cards appear only when a hand reached showdown.
- Derived from the GTO Wizard API; respect their terms for redistribution.
Lineage
v3 is the larger of two collection runs (8,884 hands → 31,931 decisions), pre-action-corrected. v1/v2 were an earlier, smaller collection (5,646 hands). Training on uncorrected data caused a fold-collapse failure; see the project notes on post-action state leakage.
