Skip to content

Repository files navigation

AuctionNet: A Novel Benchmark for Decision-Making in Large-Scale Games

Static BadgeStatic BadgeStatic BadgeStatic Badge


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.

🔥 News


  • [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!

🥁 Background



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.

🏛︎ Project Structure


├── 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.

🧑‍💻 Quickstart


Create and activate conda environment

$ conda create -n AuctionNet python=3.9.12 pip=23.0.1
$ conda activate AuctionNet

Install requirements

$ pip install -r requirements.txt

Train Strategy & Offline Evaluation

For detailed usage, please refer to strategy_train_env/README_strategy_train.md.

cd strategy_train_env # Enter the strategy_train directory

Data Processing

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

Strategy Training

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

Offline Evaluation

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

Online Evaluation

Set up the hyperparameters for the online evaluation process.

config/test.gin

Run online evaluation.

# Return to the root directory
$ python main_test.py

📖 User Case

Train your own bidding strategy 'awesome_xx'

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.

Evaluate your own bidding strategy 'awesome_xx'

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

Generate new dataset

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.

Customize new auction environment

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).

🎡 Implemented Bid Decision-Making Algorithms


CategoryStrategyStatus
Reinforcement LearningIQL
BC
BCQ
TD3_BC
Online Linear ProgrammingOnlineLp
Generative ModelDecision-Transformer
Generative ModelDiffbidTo be implemented
OtherAbid (fixed bid rate)
PID

✌ Contributing


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.

  1. Fork the project.
  2. Create your feature branch (git checkout -b new-branch).
  3. Commit your changes (git commit -m 'Add some feature').
  4. Push to the branch (git push origin new-branch).
  5. Open a pull request.

🏷️ License


Distributed under the Apache License 2.0. See LICENSE.txt for more information.

💓 Reference


🧑‍🤝‍🧑 Contributors


Shuai Dou • Yusen Huo • Zhilin Zhang • Yeshu Li • Zhengye Han • Kefan Su
• Zongqing Lu • Chuan Yu • Jian Xu • Bo Zheng

✉️ Contact


For any questions, please feel free to email doushuai.ds@taobao.com.

📝 Citation


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}
}

About

AuctionNet: A Novel Benchmark for Decision-Making in Large-Scale Games

Resources

Stars

246 stars

Watchers

5 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - alimama-tech/AuctionNet: AuctionNet: A Novel Benchmark for Decision-Making in Large-Scale Games · GitHub
Skip to content

Repository files navigation

AuctionNet: A Novel Benchmark for Decision-Making in Large-Scale Games

Static BadgeStatic BadgeStatic BadgeStatic Badge


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.

🔥 News


  • [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!

🥁 Background



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.

🏛︎ Project Structure


├── 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.

🧑‍💻 Quickstart


Create and activate conda environment

$ conda create -n AuctionNet python=3.9.12 pip=23.0.1
$ conda activate AuctionNet

Install requirements

$ pip install -r requirements.txt

Train Strategy & Offline Evaluation

For detailed usage, please refer to strategy_train_env/README_strategy_train.md.

cd strategy_train_env # Enter the strategy_train directory

Data Processing

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

Strategy Training

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

Offline Evaluation

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

Online Evaluation

Set up the hyperparameters for the online evaluation process.

config/test.gin

Run online evaluation.

# Return to the root directory
$ python main_test.py

📖 User Case

Train your own bidding strategy 'awesome_xx'

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.

Evaluate your own bidding strategy 'awesome_xx'

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

Generate new dataset

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.

Customize new auction environment

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).

🎡 Implemented Bid Decision-Making Algorithms


CategoryStrategyStatus
Reinforcement LearningIQL
BC
BCQ
TD3_BC
Online Linear ProgrammingOnlineLp
Generative ModelDecision-Transformer
Generative ModelDiffbidTo be implemented
OtherAbid (fixed bid rate)
PID

✌ Contributing


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.

  1. Fork the project.
  2. Create your feature branch (git checkout -b new-branch).
  3. Commit your changes (git commit -m 'Add some feature').
  4. Push to the branch (git push origin new-branch).
  5. Open a pull request.

🏷️ License


Distributed under the Apache License 2.0. See LICENSE.txt for more information.

💓 Reference


🧑‍🤝‍🧑 Contributors


Shuai Dou • Yusen Huo • Zhilin Zhang • Yeshu Li • Zhengye Han • Kefan Su
• Zongqing Lu • Chuan Yu • Jian Xu • Bo Zheng

✉️ Contact


For any questions, please feel free to email doushuai.ds@taobao.com.

📝 Citation


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}
}

About

AuctionNet: A Novel Benchmark for Decision-Making in Large-Scale Games

Resources

Stars

246 stars

Watchers

5 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - alimama-tech/AuctionNet: AuctionNet: A Novel Benchmark for Decision-Making in Large-Scale Games · GitHub
Skip to content

Repository files navigation

AuctionNet: A Novel Benchmark for Decision-Making in Large-Scale Games

Static BadgeStatic BadgeStatic BadgeStatic Badge


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.

🔥 News


  • [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!

🥁 Background



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.

🏛︎ Project Structure


├── 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.

🧑‍💻 Quickstart


Create and activate conda environment

$ conda create -n AuctionNet python=3.9.12 pip=23.0.1
$ conda activate AuctionNet

Install requirements

$ pip install -r requirements.txt

Train Strategy & Offline Evaluation

For detailed usage, please refer to strategy_train_env/README_strategy_train.md.

cd strategy_train_env # Enter the strategy_train directory

Data Processing

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

Strategy Training

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

Offline Evaluation

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

Online Evaluation

Set up the hyperparameters for the online evaluation process.

config/test.gin

Run online evaluation.

# Return to the root directory
$ python main_test.py

📖 User Case

Train your own bidding strategy 'awesome_xx'

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.

Evaluate your own bidding strategy 'awesome_xx'

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

Generate new dataset

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.

Customize new auction environment

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).

🎡 Implemented Bid Decision-Making Algorithms


CategoryStrategyStatus
Reinforcement LearningIQL
BC
BCQ
TD3_BC
Online Linear ProgrammingOnlineLp
Generative ModelDecision-Transformer
Generative ModelDiffbidTo be implemented
OtherAbid (fixed bid rate)
PID

✌ Contributing


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.

  1. Fork the project.
  2. Create your feature branch (git checkout -b new-branch).
  3. Commit your changes (git commit -m 'Add some feature').
  4. Push to the branch (git push origin new-branch).
  5. Open a pull request.

🏷️ License


Distributed under the Apache License 2.0. See LICENSE.txt for more information.

💓 Reference


🧑‍🤝‍🧑 Contributors


Shuai Dou • Yusen Huo • Zhilin Zhang • Yeshu Li • Zhengye Han • Kefan Su
• Zongqing Lu • Chuan Yu • Jian Xu • Bo Zheng

✉️ Contact


For any questions, please feel free to email doushuai.ds@taobao.com.

📝 Citation


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}
}

About

AuctionNet: A Novel Benchmark for Decision-Making in Large-Scale Games

Resources

Stars

246 stars

Watchers

5 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - alimama-tech/AuctionNet: AuctionNet: A Novel Benchmark for Decision-Making in Large-Scale Games · GitHub
Skip to content

Repository files navigation

AuctionNet: A Novel Benchmark for Decision-Making in Large-Scale Games

Static BadgeStatic BadgeStatic BadgeStatic Badge


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.

🔥 News


  • [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!

🥁 Background



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.

🏛︎ Project Structure


├── 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.

🧑‍💻 Quickstart


Create and activate conda environment

$ conda create -n AuctionNet python=3.9.12 pip=23.0.1
$ conda activate AuctionNet

Install requirements

$ pip install -r requirements.txt

Train Strategy & Offline Evaluation

For detailed usage, please refer to strategy_train_env/README_strategy_train.md.

cd strategy_train_env # Enter the strategy_train directory

Data Processing

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

Strategy Training

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

Offline Evaluation

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

Online Evaluation

Set up the hyperparameters for the online evaluation process.

config/test.gin

Run online evaluation.

# Return to the root directory
$ python main_test.py

📖 User Case

Train your own bidding strategy 'awesome_xx'

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.

Evaluate your own bidding strategy 'awesome_xx'

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

Generate new dataset

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.

Customize new auction environment

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).

🎡 Implemented Bid Decision-Making Algorithms


CategoryStrategyStatus
Reinforcement LearningIQL
BC
BCQ
TD3_BC
Online Linear ProgrammingOnlineLp
Generative ModelDecision-Transformer
Generative ModelDiffbidTo be implemented
OtherAbid (fixed bid rate)
PID

✌ Contributing


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.

  1. Fork the project.
  2. Create your feature branch (git checkout -b new-branch).
  3. Commit your changes (git commit -m 'Add some feature').
  4. Push to the branch (git push origin new-branch).
  5. Open a pull request.

🏷️ License


Distributed under the Apache License 2.0. See LICENSE.txt for more information.

💓 Reference


🧑‍🤝‍🧑 Contributors


Shuai Dou • Yusen Huo • Zhilin Zhang • Yeshu Li • Zhengye Han • Kefan Su
• Zongqing Lu • Chuan Yu • Jian Xu • Bo Zheng

✉️ Contact


For any questions, please feel free to email doushuai.ds@taobao.com.

📝 Citation


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}
}

About

AuctionNet: A Novel Benchmark for Decision-Making in Large-Scale Games

Resources

Stars

246 stars

Watchers

5 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - alimama-tech/AuctionNet: AuctionNet: A Novel Benchmark for Decision-Making in Large-Scale Games · GitHub
Skip to content

Repository files navigation

AuctionNet: A Novel Benchmark for Decision-Making in Large-Scale Games

Static BadgeStatic BadgeStatic BadgeStatic Badge


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.

🔥 News


  • [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!

🥁 Background



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.

🏛︎ Project Structure


├── 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.

🧑‍💻 Quickstart


Create and activate conda environment

$ conda create -n AuctionNet python=3.9.12 pip=23.0.1
$ conda activate AuctionNet

Install requirements

$ pip install -r requirements.txt

Train Strategy & Offline Evaluation

For detailed usage, please refer to strategy_train_env/README_strategy_train.md.

cd strategy_train_env # Enter the strategy_train directory

Data Processing

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

Strategy Training

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

Offline Evaluation

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

Online Evaluation

Set up the hyperparameters for the online evaluation process.

config/test.gin

Run online evaluation.

# Return to the root directory
$ python main_test.py

📖 User Case

Train your own bidding strategy 'awesome_xx'

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.

Evaluate your own bidding strategy 'awesome_xx'

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

Generate new dataset

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.

Customize new auction environment

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).

🎡 Implemented Bid Decision-Making Algorithms


CategoryStrategyStatus
Reinforcement LearningIQL
BC
BCQ
TD3_BC
Online Linear ProgrammingOnlineLp
Generative ModelDecision-Transformer
Generative ModelDiffbidTo be implemented
OtherAbid (fixed bid rate)
PID

✌ Contributing


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.

  1. Fork the project.
  2. Create your feature branch (git checkout -b new-branch).
  3. Commit your changes (git commit -m 'Add some feature').
  4. Push to the branch (git push origin new-branch).
  5. Open a pull request.

🏷️ License


Distributed under the Apache License 2.0. See LICENSE.txt for more information.

💓 Reference


🧑‍🤝‍🧑 Contributors


Shuai Dou • Yusen Huo • Zhilin Zhang • Yeshu Li • Zhengye Han • Kefan Su
• Zongqing Lu • Chuan Yu • Jian Xu • Bo Zheng

✉️ Contact


For any questions, please feel free to email doushuai.ds@taobao.com.

📝 Citation


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}
}

About

AuctionNet: A Novel Benchmark for Decision-Making in Large-Scale Games

Resources

Stars

246 stars

Watchers

5 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - alimama-tech/AuctionNet: AuctionNet: A Novel Benchmark for Decision-Making in Large-Scale Games · GitHub
Skip to content

Repository files navigation

AuctionNet: A Novel Benchmark for Decision-Making in Large-Scale Games

Static BadgeStatic BadgeStatic BadgeStatic Badge


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.

🔥 News


  • [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!

🥁 Background



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.

🏛︎ Project Structure


├── 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.

🧑‍💻 Quickstart


Create and activate conda environment

$ conda create -n AuctionNet python=3.9.12 pip=23.0.1
$ conda activate AuctionNet

Install requirements

$ pip install -r requirements.txt

Train Strategy & Offline Evaluation

For detailed usage, please refer to strategy_train_env/README_strategy_train.md.

cd strategy_train_env # Enter the strategy_train directory

Data Processing

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

Strategy Training

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

Offline Evaluation

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

Online Evaluation

Set up the hyperparameters for the online evaluation process.

config/test.gin

Run online evaluation.

# Return to the root directory
$ python main_test.py

📖 User Case

Train your own bidding strategy 'awesome_xx'

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.

Evaluate your own bidding strategy 'awesome_xx'

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

Generate new dataset

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.

Customize new auction environment

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).

🎡 Implemented Bid Decision-Making Algorithms


CategoryStrategyStatus
Reinforcement LearningIQL
BC
BCQ
TD3_BC
Online Linear ProgrammingOnlineLp
Generative ModelDecision-Transformer
Generative ModelDiffbidTo be implemented
OtherAbid (fixed bid rate)
PID

✌ Contributing


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.

  1. Fork the project.
  2. Create your feature branch (git checkout -b new-branch).
  3. Commit your changes (git commit -m 'Add some feature').
  4. Push to the branch (git push origin new-branch).
  5. Open a pull request.

🏷️ License


Distributed under the Apache License 2.0. See LICENSE.txt for more information.

💓 Reference


🧑‍🤝‍🧑 Contributors


Shuai Dou • Yusen Huo • Zhilin Zhang • Yeshu Li • Zhengye Han • Kefan Su
• Zongqing Lu • Chuan Yu • Jian Xu • Bo Zheng

✉️ Contact


For any questions, please feel free to email doushuai.ds@taobao.com.

📝 Citation


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}
}

About

AuctionNet: A Novel Benchmark for Decision-Making in Large-Scale Games

Resources

Stars

246 stars

Watchers

5 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - alimama-tech/AuctionNet: AuctionNet: A Novel Benchmark for Decision-Making in Large-Scale Games · GitHub
Skip to content

Repository files navigation

AuctionNet: A Novel Benchmark for Decision-Making in Large-Scale Games

Static BadgeStatic BadgeStatic BadgeStatic Badge


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.

🔥 News


  • [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!

🥁 Background



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.

🏛︎ Project Structure


├── 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.

🧑‍💻 Quickstart


Create and activate conda environment

$ conda create -n AuctionNet python=3.9.12 pip=23.0.1
$ conda activate AuctionNet

Install requirements

$ pip install -r requirements.txt

Train Strategy & Offline Evaluation

For detailed usage, please refer to strategy_train_env/README_strategy_train.md.

cd strategy_train_env # Enter the strategy_train directory

Data Processing

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

Strategy Training

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

Offline Evaluation

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

Online Evaluation

Set up the hyperparameters for the online evaluation process.

config/test.gin

Run online evaluation.

# Return to the root directory
$ python main_test.py

📖 User Case

Train your own bidding strategy 'awesome_xx'

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.

Evaluate your own bidding strategy 'awesome_xx'

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

Generate new dataset

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.

Customize new auction environment

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).

🎡 Implemented Bid Decision-Making Algorithms


CategoryStrategyStatus
Reinforcement LearningIQL
BC
BCQ
TD3_BC
Online Linear ProgrammingOnlineLp
Generative ModelDecision-Transformer
Generative ModelDiffbidTo be implemented
OtherAbid (fixed bid rate)
PID

✌ Contributing


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.

  1. Fork the project.
  2. Create your feature branch (git checkout -b new-branch).
  3. Commit your changes (git commit -m 'Add some feature').
  4. Push to the branch (git push origin new-branch).
  5. Open a pull request.

🏷️ License


Distributed under the Apache License 2.0. See LICENSE.txt for more information.

💓 Reference


🧑‍🤝‍🧑 Contributors


Shuai Dou • Yusen Huo • Zhilin Zhang • Yeshu Li • Zhengye Han • Kefan Su
• Zongqing Lu • Chuan Yu • Jian Xu • Bo Zheng

✉️ Contact


For any questions, please feel free to email doushuai.ds@taobao.com.

📝 Citation


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}
}

About

AuctionNet: A Novel Benchmark for Decision-Making in Large-Scale Games

Resources

Stars

246 stars

Watchers

5 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - alimama-tech/AuctionNet: AuctionNet: A Novel Benchmark for Decision-Making in Large-Scale Games · GitHub
Skip to content

Repository files navigation

AuctionNet: A Novel Benchmark for Decision-Making in Large-Scale Games

Static BadgeStatic BadgeStatic BadgeStatic Badge


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.

🔥 News


  • [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!

🥁 Background



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.

🏛︎ Project Structure


├── 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.

🧑‍💻 Quickstart


Create and activate conda environment

$ conda create -n AuctionNet python=3.9.12 pip=23.0.1
$ conda activate AuctionNet

Install requirements

$ pip install -r requirements.txt

Train Strategy & Offline Evaluation

For detailed usage, please refer to strategy_train_env/README_strategy_train.md.

cd strategy_train_env # Enter the strategy_train directory

Data Processing

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

Strategy Training

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

Offline Evaluation

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

Online Evaluation

Set up the hyperparameters for the online evaluation process.

config/test.gin

Run online evaluation.

# Return to the root directory
$ python main_test.py

📖 User Case

Train your own bidding strategy 'awesome_xx'

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.

Evaluate your own bidding strategy 'awesome_xx'

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

Generate new dataset

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.

Customize new auction environment

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).

🎡 Implemented Bid Decision-Making Algorithms


CategoryStrategyStatus
Reinforcement LearningIQL
BC
BCQ
TD3_BC
Online Linear ProgrammingOnlineLp
Generative ModelDecision-Transformer
Generative ModelDiffbidTo be implemented
OtherAbid (fixed bid rate)
PID

✌ Contributing


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.

  1. Fork the project.
  2. Create your feature branch (git checkout -b new-branch).
  3. Commit your changes (git commit -m 'Add some feature').
  4. Push to the branch (git push origin new-branch).
  5. Open a pull request.

🏷️ License


Distributed under the Apache License 2.0. See LICENSE.txt for more information.

💓 Reference


🧑‍🤝‍🧑 Contributors


Shuai Dou • Yusen Huo • Zhilin Zhang • Yeshu Li • Zhengye Han • Kefan Su
• Zongqing Lu • Chuan Yu • Jian Xu • Bo Zheng

✉️ Contact


For any questions, please feel free to email doushuai.ds@taobao.com.

📝 Citation


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}
}

About

AuctionNet: A Novel Benchmark for Decision-Making in Large-Scale Games

Resources

Stars

246 stars

Watchers

5 watching

Forks

Releases

Packages

Used by

Contributors

Languages