Skip to content

Neural Equilibrium Solvers for OpenSpiel#1526

Open
alexunderch wants to merge 14 commits into
google-deepmind:masterfrom
alexunderch:nes-deb-jax
Open

Neural Equilibrium Solvers for OpenSpiel#1526
alexunderch wants to merge 14 commits into
google-deepmind:masterfrom
alexunderch:nes-deb-jax

Conversation

@alexunderch

@alexunderch alexunderch commented Apr 29, 2026

Copy link
Copy Markdown
Contributor

This PR attempts to introduce the concept of Neural equilibrium solvers, following the papers:

  1. Turbocharging Solution Concepts: Solving NEs, CEs and CCEs with Neural Equilibrium Solvers (arXiv:2210.09257)
  2. Deep Incentive Design with Differentiable Equilibrium Blocks (arXiv:2603.07705)

So far, we've got [Ready for the review]:

  1. Sampling utility for OpenSpiel and Random games (L-invariant) based on the paper [1]
  2. Implementations of the equivariant architecture
  3. Evaluation metrics
  4. NES Module
  5. Test coverage of all the above

In the draft stage:

  1. Mechanism design modules and losses

This pull request in created maybe too early to facilitate the development process (Dr. Marris may or may not be somewhat shy). I think that it does not currently learn correctly (from the fundamental perspective) and lacks some utility (see README).

CC to @lanctot : for a while, don't run the CI/CD: it takes some time and I haven't put the tests to the Makefile, until we fix we ensure that I match that "internal" implementation in necessary capacity. Thank you.

@lukemarris, your turn.

P.s. I understand that I did use AI to fulfill some code snippets in question. However, whole code was read and run by me, and I'll eliminate these parts in the future: I had no1 to ask questions, sorry.

@lanctot lanctot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you add NES to docs/algorithms.md?

Comment thread open_spiel/python/jax/nes/examples/nes.py
@lanctot

lanctot commented Apr 30, 2026

Copy link
Copy Markdown
Collaborator

Thanks!

@lukemarris lukemarris left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First pass through.

I would focus on:

  • Just CCE
  • Just ME
  • Fixed shape game (say 4x4) No masking

When that is working well we can add the other bells and whistles.

Comment thread open_spiel/python/jax/nes/equilibria_utils.py Outdated
Comment thread open_spiel/python/jax/nes/equilibria_utils.py Outdated
Comment thread open_spiel/python/jax/nes/equilibria_utils.py
Comment thread open_spiel/python/jax/nes/equilibria_utils.py
Comment thread open_spiel/python/jax/nes/equilibria_utils.py Outdated
Comment thread open_spiel/python/jax/nes/games.py Outdated
Comment thread open_spiel/python/jax/nes/games.py Outdated
Comment thread open_spiel/python/jax/nes/nes.py
Comment thread open_spiel/python/jax/nes/games.py
Comment thread open_spiel/python/jax/nes/networks_test.py
@alexunderch alexunderch requested a review from lukemarris June 15, 2026 17:35

@lanctot lanctot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes look good on my side but would still like Luke's final OK before we import. Let's continue this when he's back

@lanctot lanctot self-requested a review July 8, 2026 17:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants