Awesome
Auction Learning as a Two-Player Game in JAX
DISCLAIMER: This code is a work in progress and has passed preliminary checks, but might still contain bugs. Thorough testing is yet to come, feedback and questions are very welcome.
This repository is a JAX/Haiku implementation of the paper "Auction Learning as a Two-Player Game" (extended arXiv version). It uses an architecture inspired by GANs to learn (near-)optimal multi-bidder, multi-item auctions.
The GAN example from dm-haiku was used as a starting point.
Getting started
Prerequisites
- Install Python 3.7+
- Install CUDA (optional)
- follow the instructions for installing JAX with CUDA support
- clone this repository and
cd
into it - run
pip3 install -r requirements.txt
Usage
To run the auction experiment with specific parameters:
python algnet.py with num_steps=100 misr_updates=50 misr_reinit_iv=500 misr_reinit_lim=1000 batch_size=100 bidders=5 items=10 net_width=200 net_depth=7 num_test_samples=20
Logging and Artifacts
The project uses the Sacred framework for experiment tracking.
- Logs and experiment metadata are saved to an SQLite database named
results.db
. - The state parameters of the last trained model are saved to
tpal_state_params.pkl
.
Implementation notes
This module is kept simple to make it suitable for use with computational experiment frameworks, or as a component in larger systems. Black is used as a code formatter.
Funding
This project is funded through the NGI Assure Fund, a fund established by NLnet with financial support from the European Commission's Next Generation Internet program. Learn more on the NLnet project page.