QGym|排队网络数据集|资源管理数据集
收藏QGym: Scalable Simulation and Benchmarking of Queuing Network Controllers
概述
QGym是一个开源的仿真框架,旨在通过多样化和现实的问题实例来基准化排队策略。该框架支持多种环境,包括并行服务器、交叉、串联和重入网络。它提供了一个平台,用于比较无模型强化学习方法和经典排队策略。
亮点
- OpenAI Gym接口:易于部署强化学习算法。
- 事件驱动仿真:精确的时间记录和快速仿真。
- 作业级跟踪:允许建模并行服务器系统。
- 任意到达模式:模拟时间变化的到达模式。
- 服务器池:快速仿真大量同类服务器。
- 批量仿真:高效并行仿真多个轨迹。
- 开源:可适应自定义需求。
文件结构
main
run_experiments.py
:运行配置在configs/experiments
中的批量实验。trainer.py
:定义Trainer类,包含训练和评估模型的方法。env.py
:带有OpenAI Gym接口的仿真器代码。
configs
experiments
:每个目录包含一个或多个YAML文件,每个文件配置一个实验。env
:包含指定排队网络的YAML文件。model
:包含指定排队策略的YAML文件。scripts
:包含定义到达和服务模式的Python文件。
logs
:包含实验的损失和切换日志。policies
:包含排队策略的实现。utils
:包含路由和绘图的实用函数。RL
:包含用于基准测试的PPO及其变体基线。policies
:包含各种PPO策略,如WC和Vanilla。PPO
:包含PPO算法的实现。trainer.py
:PPO训练器。train.py
:启动PPO实验的主脚本。
utils
:rl_env.py
:使排队环境兼容强化学习算法的包装器。eval.py
:强化学习模型的评估实用程序。
policy_configs
:包含不同强化学习策略的YAML配置文件。
作为OpenAI Gym环境使用
用户可以使用main/env.py
中的DiffDiscreteEventSystem
类编写自定义实验代码,将其作为OpenAI Gym环境使用。用户可以通过reset
和step
方法与该环境交互。
用法
创建DiffDiscreteEventSystem
实例并使用reset()
方法初始化环境,使用step(action)
方法模拟系统随时间的变化。
API参考
参数
network
(torch.Tensor):网络拓扑。mu
(torch.Tensor):每个服务器的服务率。h
(float):队列中作业的单位时间持有成本。draw_service
(callable):绘制队列中作业服务时间的函数。draw_inter_arrivals
(callable):绘制每个队列的到达间隔时间的函数。init_time
(float, optional):初始仿真时间,默认为0。batch
(int, optional):并行仿真的批量大小,默认为1。queue_event_options
(torch.Tensor, optional):自定义队列事件选项。straight_through_min
(bool, optional):使用直通估计器进行最小操作,默认为False。queue_lim
(int, optional):最大队列长度。temp
(float, optional):Gumbel-Softmax的温度,默认为1。seed
(int, optional):随机种子,默认为3003。device
(str, optional):运行计算的设备,默认为"cpu"。f_hook
(bool, optional):启用调试钩子,默认为False。f_verbose
(bool, optional):启用详细输出,默认为False。
方法
reset(init_queues=None, time=None, seed=None)
:重置环境到初始状态。step(action)
:根据动作执行一步仿真。get_observation()
:获取系统状态的当前观察。print_state()
:打印系统的当前状态。
运行实验
在main
目录中,运行run_experiments.py
脚本,使用-exp_dir
参数设置包含所需实验YAML文件的子目录名称。
定义实验
实验使用位于configs/experiments
目录中的YAML文件进行配置。每个实验有自己的子目录,包含一个或多个指定环境、模型和脚本的YAML文件。
定义排队网络
排队网络的参数在configs/env
目录下的文件中定义。每个YAML文件包含以下键:
network
:定义网络拓扑。mu
:定义到达率。lam_params
:定义到达参数。server_pool_size
:定义服务器池大小。h
:定义每个队列的持有成本。queue_event_options
:定义每个到达或服务事件的队列变化。train_T
,test_T
:每个仿真轨迹的步数。init_queues
:初始队列长度。
定义到达和服务模式
到达和服务模式在configs/scripts
目录中定义。定义一个返回每个队列的下一个到达或服务时间的任意时间函数。
定义排队策略
使用policies/<policy>.py
文件定义策略的逻辑。每个策略文件包含一个实现策略的类。该类在configs/scripts/<script>.py
中使用。
定义训练/测试超参数
排队策略的参数在configs/model
目录下的文件中定义。每个YAML文件包含以下重要超参数:
test_batch_size
:测试集的批量大小。num_epochs
:训练策略的轮数。test_policy
,train_policy
:分配算法,支持linear_assignment
、sinkhorn
和softmax
。
运行强化学习训练和评估
提供代码库来训练和评估多个强化学习基线。在RL/PPO
目录中运行以下命令:
bash
python train.py <policy-config-name> <queue-env-name>
基准测试结果
Criss-cross
Network | $cmu$ | MW | MP | FP | PPO | PPO BC | PPO WC |
---|---|---|---|---|---|---|---|
Criss Cross BH | $16.1 pm 0.0$ | $mathbf{15.3 pm 0.0}$ | $8.3 ext{E+}3 pm 0.0$ | $29.3 pm 0.0$ | $8.6 ext{E+}3 pm 4.6$ | $24.0 pm 0.2$ | $mathbf{15.4 pm 0.2}$ |
Reentrant-1 [Exponential]
$L$ | $cmu$ | MW | MP | FP | PPO | PPO BC | PPO WC |
---|---|---|---|---|---|---|---|
2 | $19.0 pm 0.0$ | $14.8 pm 0.0$ | $18.9 pm 0.0$ | $1.0 ext{E+}3 pm 0.0$ | $1.8 ext{E+}3 pm 6.6$ | $25.1 pm 0.6$ | $mathbf{13.6 pm 0.4}$ |
3 | $mathbf{21.6 pm 0.0}$ | $24.8 pm 0.0$ | $30.9 pm 0.0$ | $8.1 ext{E+}3 pm 0.0$ | $1.0 ext{E+}4 pm 21.6$ | $48.2 pm 0.5$ | $22.6 pm 0.4$ |
4 | $30.1 pm 0.0$ | $32.1 pm 0.0$ | $40.3 pm 0.0$ | $4.3 ext{E+}3 pm 0.0$ | $1.8 ext{E+}4 pm 41.7$ | $183.4 pm 5.2$ | $mathbf{29.7 pm 0.4}$ |
5 | $51.3 pm 0.0$ | $50.0 pm 0.0$ | $52.2 pm 0.0$ | $9.8 ext{E+}3 pm 0.0$ | $2.7 ext{E+}4 pm 84.4$ | $135.2 pm 3.1$ | $mathbf{38.7 pm 0.4}$ |
6 | $54.7 pm 0.0$ | $49.2 pm 0.0$ | $59.1 pm 0.0$ | $1.2 ext{E+}4 pm 0.0$ | $5.9 ext{E+}4 pm 315.3$ | $358.0 pm 9.7$ | $mathbf{4.85 pm 0.5}$ |
7 | $56.4 pm 0.0$ | $mathbf{54.4 pm 0.0}$ | $70.5 pm 0.0$ | $2.9 ext{E+}4 pm 0.0$ | $4.4 ext{E+}4 pm 208.1$ | $526.6 pm 8.7$ | $56.3 pm 8.2$ |
8 | $mathbf{59.4 pm 0.0}$ | $68.0 pm 0.0$ | $81.4 pm 0.0$ | $1.7 ext{E+}4 pm 0.0$ | $5.9 ext{E+}4 pm 315.2$ | $868.5 pm 6.0$ | $65.8 pm 6.2$ |
9 | $72.7 pm 0.0$ | $mathbf{64.4 pm 0.0}$ | $90.8 pm 0.0$ | $5.3 ext{E+}4 pm 0.0$ | $1.1 ext{E+}5 pm 2219.7$ | $1304.5 pm 10.1$ | $75.8 pm 0.7$ |
10 | $87.7 pm 0.0$ | $mathbf{80.1 pm 0.0}$ | $100.5 pm 0.0$ | $6.3 ext{E+}4 pm 0.0$ | $1.6 ext{E+}5 pm 852.8$ | $3809.1 pm 10.4$ | $83.1 pm 0.7$ |
Reentrant-2 [Exponential]
Network | $cmu$ | MW | MP | FP | PPO | PPO BC | PPO WC |
---|---|---|---|---|---|---|---|
2 | $26.01 pm 0.00$ | $17.45 pm 0.00$ | $2.49 ext{E+}4 pm 0.00$ | $mathbf{1.76 pm 0.00}$ | $9.04 ext{E+}3 pm 41.13$ | $30.62 pm 0.37$ | $13.72 pm 0.22$ |
3 | $26.27 pm 0.00$ | $26.65 pm 0.00$ | $4.00 ext{E+}4 pm 0.00$ | $2.12 ext{E+}3 pm 0.00$ | $1.82 ext{E+}4 pm 37.23$ | $48.59 pm 0.56$ | $mathbf{22.09 pm 0.29}$ |
4 | $27.62 pm 0.00$ | $34.10 pm 0.00$ | $3.99 ext{E+}4 pm 0.00$ | $5.54 ext{E+}3 pm 0.00$ | $1.77 ext{E+}4 pm 52.30$ | $79.20 pm 1.06$ | $mathbf{29.90 pm 0.47}$ |
5 | $44.82 pm 0.00$ | $40.34 pm 0.00$ | $4.99 ext{E+}4 pm 0.00$ | $9.72 ext{E+}3 pm 0.00$ | $2.58 ext{E+}4 pm 63.54$ | $91.65 pm 1.37$ | $mathbf{38.01 pm 0.52}$ |
6 | $mathbf{54.48 pm 0.00}$ | $46.63 pm 0.00$ | $1.00 ext{E+}5 pm 0.00$ | $1.65 ext{E+}4 pm 0.00$ | $4.02 ext{E+}4 pm 349.64$ | $526.57 pm 8.74$ | $46.80 pm 0.47$ |
7 | $70.25 pm 0.00$ | $77.93 pm 0.00$ | $9.98 ext{E+}4 pm 0.00$ | $1.39 ext{E+}4 pm 0.00$ | $5.78 ext{E+}4 pm 116.92$ | $352.02 pm 6.68$ | $mathbf{55.51 pm 0.57}$ |
8 | $70.32 pm 0.00$ | $72.96 pm 0.00$ | $1.00 ext{E+}5 pm 0.00$ | $2.73 ext{E+}4 pm 0.00$ | $4.79 ext{E+}4 pm 208.70$ | $1332.68 pm 7.82$ | $mathbf{63.15 pm 0.70}$ |
9 | $mathbf{65.80 pm 0.00}$ | $77.34 pm 0.00$ | $1.00 ext{E+}5 pm 0.00$ | $6.53 ext{E+}4 pm 0.00$ | $6.54 ext{E+}4 pm 491.49$ | $1574.86 pm 9.34$ | $70.30 pm 0.86$ |
10 | $81.35 pm 0.00$ | $mathbf{82.00 pm 0.00}$ | $1.50 ext{E+}5 pm 0.00$ | $9.36 ext{E+}4 pm 0.00$ | $8.11 ext{E+}4 pm 355.34$ | $1876.54 pm 89.20$ | $80.36 pm 0.79$ |
Reentrant-1 [Hyperexponential]
| L

- 1QGym: Scalable Simulation and Benchmarking of Queuing Network Controllers哥伦比亚大学 · 2024年
中国食物成分数据库
食物成分数据比较准确而详细地描述农作物、水产类、畜禽肉类等人类赖以生存的基本食物的品质和营养成分含量。它是一个重要的我国公共卫生数据和营养信息资源,是提供人类基本需求和基本社会保障的先决条件;也是一个国家制定相关法规标准、实施有关营养政策、开展食品贸易和进行营养健康教育的基础,兼具学术、经济、社会等多种价值。 本数据集收录了基于2002年食物成分表的1506条食物的31项营养成分(含胆固醇)数据,657条食物的18种氨基酸数据、441条食物的32种脂肪酸数据、130条食物的碘数据、114条食物的大豆异黄酮数据。
国家人口健康科学数据中心 收录
Figshare
Figshare是一个在线数据共享平台,允许研究人员上传和共享各种类型的研究成果,包括数据集、论文、图像、视频等。它旨在促进科学研究的开放性和可重复性。
figshare.com 收录
MOOCs Dataset
该数据集包含了大规模开放在线课程(MOOCs)的相关数据,包括课程信息、用户行为、学习进度等。数据主要用于研究在线教育的行为模式和学习效果。
www.kaggle.com 收录
Breast Cancer Dataset
该项目专注于清理和转换一个乳腺癌数据集,该数据集最初由卢布尔雅那大学医学中心肿瘤研究所获得。目标是通过应用各种数据转换技术(如分类、编码和二值化)来创建一个可以由数据科学团队用于未来分析的精炼数据集。
github 收录
UniMed
UniMed是一个大规模、开源的多模态医学数据集,由穆罕默德·本·扎耶德人工智能大学等机构创建,包含超过530万张图像-文本对,涵盖六种不同的医学成像模态:X射线、CT、MRI、超声、病理和眼底。数据集通过利用大型语言模型(LLMs)将特定模态的分类数据集转换为图像-文本格式,并结合现有的医学图像-文本数据,实现了可扩展的视觉-语言模型(VLM)预训练。UniMed旨在解决医学领域中公开可用的大规模图像-文本数据稀缺的问题,适用于多种医学成像任务,如零样本分类和跨模态泛化。
arXiv 收录