Decision-making in large-scale games is an essential research area in artificial intelligence (AI) with significant real-world impact. AuctionNet is a benchmark for bid decision-making in large-scale ad auctions derived from a real-world online advertising platform. AuctionNet is composed of three parts:
-
ποΈ Ad Auction Environment: The environment effectively replicates the integrity and complexity of real-world ad auctions with the interaction of several modules: the ad opportunity generation module, the bidding module, and the auction module.
-
π’ Pre-Generated Dataset: We pre-generated a substantial dataset based on the auction environment. The dataset contains trajectories with 48 diverse agents competing with each other, totaling over 500 million records and 80GB in size.
-
β΄οΈ Several Baseline Bid Decision-Making Algorithms: We implemented a variety of baseline algorithms such as linear programming, reinforcement learning, and generative models.
We note that AuctionNet is applicable not only to research on bid decision-making algorithms in ad auctions but also to the general area of decision-making in large-scale games. It can also benefit researchers in a broader range of areas such as reinforcement learning, generative models, operational research, and mechanism design.
- [2024-12-14] π₯ The AuctionNet-1.0 code has been officially open-sourced. We welcome everyone to give it a thumbs up and share valuable feedback.
- [2024-10-24] π« NeurIPS 2024 Competition: Auto-Bidding in Large-Scale Auctions has officially ended. The competition attracted more than 1,500 teams to participate. The auction environment for evaluation, dataset, baseline algorithms used in the competition are derived from this project.
- [2024-09-26] π Our paper AuctionNet has been accepted by NeurIPS 2024 Datasets and Benchmark Track!
Bid decision-making in large-scale ad auctions is a concrete example of decision-making in large-scale games.
Numbers 1 through 5 illustrate how an auto-bidding agent helps advertisers optimize performance.
For each advertiser's unique objective (I), the auto-bidding agent makes bid decision-making (II) for continuously arriving ad opportunities and competes against each other in the ad auction (III).
Then, each agent may win some impressions (IV), which may be exposed to users and potentially result in conversions. Finally, the agents' performance (V) will be reported to advertisers.
βββ config # Configuration files for setting up the hyperparameters.
βββ main_test.py # Main entry point for running evaluations.
βββ run # Core logic for executing tests.
βββ simul_bidding_env # Ad Auction Environment
β βββ Controller # Module controlling the simulation flow and logic.
β βββ Environment # The auction module.
β βββ PvGenerator # The ad opportunity generation module.
β βββ Tracker # Tracking components for monitoring and analysis.
β β βββ BiddingTracker.py # Tracks the bidding process and generates raw data on ad opportunities granularity.
β β βββ PlayerAnalysis.py # Implements metrics to evaluate the performance of user-defined strategies.
β βββ strategy # The bidding module (competitorsβ strategies).
βββ pre_generated_dataset # Pre-generated dataset.
βββ strategy_train_env # Several baseline bid decision-making algorithms.
β βββ README_strategy_train.md # Documentation on how to train the bidding strategy.
β βββ bidding_train_env # Core components for training bidding strategies.
β β βββ baseline # Implementation of baseline bid decision-making algorithms.
β β βββ common # Common utilities used across modules.
β β βββ train_data_generator # Reads raw data and constructs training datasets.
β β βββ offline_eval # Components required for offline evaluation.
β β βββ strategy # Unified bidding strategy interface.
β βββ data # Directory for storing training data.
β βββ main # Main scripts for executing training processes.
β βββ run # Core logic for executing training processes.
β βββ saved_model # Directory for saving trained models.
$ conda create -n AuctionNet python=3.9.12 pip=23.0.1
$ conda activate AuctionNet
$ pip install -r requirements.txt
For detailed usage, please refer to strategy_train_env/README_strategy_train.md
.
cd strategy_train_env # Enter the strategy_train directory
Run this script to convert the raw data on ad opportunities granularity into trajectory data required for model training.
python bidding_train_env/train_data_generator/train_data_generator.py
Load the training data and train the xxx (for example, IQL) bidding strategy.
python main/main_iql.py
Use the xxxBiddingStrategy as the PlayerBiddingStrategy for evaluation.
bidding_train_env/strategy/__init__.py
from .iql_bidding_strategy import IqlBiddingStrategy as PlayerBiddingStrategy
Load the raw data on ad opportunities granularity to construct an offline evaluation environment for assessing the bidding strategy offline.
python main/main_test.py
Set up the hyperparameters for the online evaluation process.
config/test.gin
Run online evaluation.
# Return to the root directory
$ python main_test.py
Refer to the baseline algorithm implementation and complete the following files.
βββ strategy_train_env
β βββ bidding_train_env
β β βββ baseline
β β β βββ awesome_xx
β β β βββawesome_xx.py # Implement model-related components.
β β βββ train_data_generator
β β β βββ train_data_generator.py # Custom-built training Data generation Pipeline.
β β βββ strategy
β β βββ awesome_xx_bidding_strategy.py # Implement Unified bidding strategy interface.
β βββ main
β β βββ main_awesome_xx.py # Main scripts for executing training processes.
β βββ run
β βββ run_awesome_xx.py # Core logic for executing training processes.
Use the awesome_xxBiddingStrategy as the PlayerBiddingStrategy for evaluation.
bidding_train_env/strategy/__init__.py
from .awesome_xx_bidding_strategy import awesome_xxBiddingStrategy as PlayerBiddingStrategy
Run the evaluation process.
# Return to the root directory
$ python main_test.py
Set the hyperparameters and run the evaluation process.
config/test.gin
GENERATE_LOG = True
python main_test.py
The newly generated data will be stored in the /data folder.
We adhere to the programming principles of high cohesion and low coupling to encapsulate each module, making it convenient for users to modify various modules in the auction environment according to their needs.
βββ simul_bidding_env # Ad Auction Environment
β βββ Environment # The auction module.
β βββ PvGenerator # The ad opportunity generation module.
β βββ Tracker
β β βββ PlayerAnalysis.py # Implements metrics to evaluate the performance.
β βββ strategy # The bidding module (competitorsβ strategies).
Category | Strategy | Status |
---|---|---|
Reinforcement Learning | IQL | β |
BC | β | |
BCQ | β | |
TD3_BC | β | |
Online Linear Programming | OnlineLp | β |
Generative Model | Decision-Transformer | β |
Generative Model | Diffbid | To be implemented |
Other | Abid (fixed bid rate) | β |
PID | β |
The field of decision intelligence is a fascinating area, and we welcome like-minded individuals to contribute their wisdom and creativity to optimize this project. If you have great ideas, feel free to fork the repo and create a pull request.
- Fork the project.
- Create your feature branch (
git checkout -b new-branch
). - Commit your changes (
git commit -m 'Add some feature'
). - Push to the branch (
git push origin new-branch
). - Open a pull request.
Distributed under the Apache License 2.0. See LICENSE.txt
for more information.
Shuai Dou β’ Yusen Huo β’ Zhilin Zhang β’ Yeshu Li β’ Zhengye Han β’ Kefan Su
β’ Zongqing Lu β’ Chuan Yu β’ Jian Xu β’ Bo Zheng
For any questions, please feel free to email doushuai.ds@taobao.com
.
If you find our work useful, please consider citing:
@inproceedings{
su2024a,
title={AuctionNet: A Novel Benchmark for Decision-Making in Large-Scale Games},
author={Kefan Su and Yusen Huo and Zhilin Zhang and Shuai Dou and Chuan Yu and Jian Xu and Zongqing Lu and Bo Zheng},
booktitle={The Thirty-eight Conference on Neural Information Processing Systems Datasets and Benchmarks Track},
year={2024},
url={https://arxiv.org/abs/2412.10798}
}