目录

赛题题目:基于深度强化学习的云-边-端异构计算资源管理调度方法(高校赛题)

赛题说明:

本赛题聚焦云-边-端异构计算环境中的资源管理与调度问题。给定任务 DAG 及多类型计算资源(云/边/端),任务之间存在依赖约束;在资源速度与跨节点通信带宽不一致的情况下,调度器需要在每一步选择一个就绪任务并将其分配到合适的计算节点,从而尽量降低整体完成时间(makespan)。赛题强调的不仅是“训练一个DRL模型”,更要求参赛者提供一个可复用的训练与评测框架:参赛方法应当能够抽象并封装环境状态、动作空间与合法性约束,支持场景(任务图与资源参数)的生成/加载,提供统一的策略接口以便评测脚本批量调用,并能与外部调度方法(如启发式基线、行为克隆等)进行公平对比。参赛者需要设计清晰的模块边界,使得环境与资源配置可替换、算法可插拔、实验流程可复现。最终,参赛者应输出在验证集上的标准化指标与模型/配置说明,展示其框架的可训练性、可扩展性与工程可用性。

赛题要求:

  • 基于 openEuler、openKylin、OpenHarmony 等至少一个国内主流开源操作系统开发,鼓励在更多Linux发行版上编译、运行和测试。

  • 参赛者需提交一个可训练的 DRL 调度框架,用于云-边-端异构计算资源管理调度。

  • 框架必须支持将环境与资源参数抽象为可配置组件,便于更换任务规模、资源类型与异构参数。

  • 框架必须提供统一的调度策略接口,使评测脚本能够在同一组验证场景上对不同策略进行公平比较。

    评分细则(明确评审角度、标准和分值范围):

  • 功能完整性(40 分) (1)代码可运行:一键完成“训练 + 验证评测 + 产出结果文件”(如 summary.json/表格),且不依赖手工修改关键代码(10 分) (2)模块化/抽象能力:环境、资源配置、场景来源、策略接口(Policy/Scheduler)解耦清晰,能通过配置替换资源规模/异构参数(10 分) (3)插拔接口:参赛者框架支持接入至少一种外部调度方法(如 HEFT、BC 或用户自定义策略),评测脚本可统一调用并输出同一指标(10 分) (4)合法动作处理:对 ready/task mask 等约束有明确实现(如 action masking、非法动作惩罚/过滤),训练与推理阶段行为一致(10 分)

  • 性能优化(35 分) (1)指标表现:在给定验证集上达到更优 mean_ratio = mean(RL_makespan / HEFT_makespan),并给出均值与方差或样本规模说明(15 分) (2)泛化能力:在未参与训练的场景(或不同划分)上性能保持稳定,避免仅对少量场景过拟合(10 分) (3)训练策略有效性:合理设计采样/更新/早停/超参,并能解释选择原因(5 分) (4)工程效率:在合理时间/算力预算下达到性能(5 分)

  • 文档质量(25 分) (1)赛题对齐说明:文档清楚描述“问题建模—环境—动作定义—奖励设计—训练流程—评估指标”的对应关系,且与代码一致(10 分) (2)复现实验说明:给出运行命令/配置文件示例、关键超参、数据划分方式、输出路径、依赖版本(如 PyTorch 版本)(10 分) (3)可读性与结构:目录组织合理、接口原型/类职责明确、图示或伪代码帮助理解框架(5 分)

    赛题联系人:

    汪老师 wlp@nwpu.edu.cn

    参考资料:

  • Grapheonrl,AasishKumarSharma/grapheonrl-benchmark

    DRL-DAG

本仓库根目录用于存放参赛提交材料,完整可运行代码位于 code/ 目录。

作品目录结构

.
├── README.md
├── code/                  # 完整项目代码、数据、模型与实验结果
├── 技术报告.pdf           # 参赛技术报告
├── 演示PPT.pptx           # 项目演示文稿
├── 演示视频.mp4           # 演示视频(不超过 100 MB)
└── 参赛承诺书.pdf         # 签署后的参赛承诺书

技术报告、演示 PPT、演示视频和参赛承诺书将在最终提交前补充至仓库根目录,并与 code/ 目录并列。

进入代码目录

除非特别说明,本文后续所有安装、训练、评测和绘图命令均应在 code/ 目录中执行:

cd code

面向云—边—端环境的 DAG 任务调度项目,以最小化 Makespan 为主要优化目标。

支持 HEFT、CPOP、PEFT、GA、MILP 和基于 PPO 的 DRL 调度算法。

环境安装

推荐使用 Python 3.11 和 Conda:

conda create -n drl python=3.11 -y
conda activate drl

安装基础依赖:

python -m pip install numpy matplotlib

安装 CPU 版本 PyTorch:

python -m pip install torch --index-url https://download.pytorch.org/whl/cpu

使用 NVIDIA GPU 时,请根据本机 CUDA 版本安装对应的 PyTorch。

MILP 需要额外安装 Gurobi,并配置有效许可证:

python -m pip install gurobipy

快速开始

运行 HEFT:

python cli.py solve --method HEFT --dataset data/EXP01.json

绘制调度甘特图:

python cli.py plot-schedule --input results/HEFT/EXP01_result.json --output results/HEFT/EXP01_gantt.png

结果保存在 results/HEFT/

常用命令

查看帮助

python cli.py --help
python cli.py solve --help

求解单个数据集

python cli.py solve --method HEFT --dataset data/EXP06.json

可选算法:

HEFT  CPOP  PEFT  GA  MILP  DRL

其他算法示例:

python cli.py solve --method CPOP --dataset data/EXP01.json
python cli.py solve --method PEFT --dataset data/EXP01.json
python cli.py solve --method GA --dataset data/EXP01.json
python cli.py solve --method MILP --dataset data/EXP01.json
python cli.py solve --method DRL --dataset data/EXP01.json --checkpoint artifacts/drlv1/checkpoint_best.pt --device cpu

批量求解

HEFT:

python cli.py batch --method MILP --datasets "data/EXP*.json"

DRL Greedy:

python cli.py batch --method DRL --datasets "data/EXP*.json" --checkpoint artifacts/drlv1/checkpoint_best.pt --strategy greedy --num-rollouts 1 --device cuda

DRL Sampling:

python cli.py batch --method DRL --datasets "data/EXP*.json" --checkpoint artifacts/drlv1/checkpoint_best.pt --strategy sampling --num-rollouts 10 --device cuda

批量结果保存为:

results/<METHOD>/batch_makespan.csv
results/DRLgreedy/batch_makespan.csv
results/DRLsampling/batch_makespan.csv

生成数据集

python cli.py generate --output-dir data --seed 20260522

默认生成 EXP01.jsonEXP30.json

训练 DRL

使用在线生成的数据训练:

python cli.py train --online-generate --num-tasks 30 --iterations 500 --episodes 64 --parallel-envs 32 --eval-episodes 8 --device cuda

没有可用 GPU 时,将 --device cuda 改为 --device cpu

分析批量结果

先运行各算法的批量实验,再执行:

python cli.py analyze --results-dir results --data-dir data --output-dir results/analysis

绘制训练曲线

python cli.py plot-training --metrics artifacts/drlv1/training_metrics.json --output-dir results/analysis/figures

绘制调度甘特图

python cli.py plot-schedule --input results/DRLgreedy/EXP06_result.json --output results/HEFT/EXP06_gantt.png

输出目录

data/
├── EXP01.json
└── EXP30.json

artifacts/drl/
├── checkpoint_best.pt
├── checkpoint_iter_*.pt
├── training_metrics.json
└── run_summary.json

results/
├── HEFT/
├── CPOP/
├── PEFT/
├── GA/
├── MILP/
├── DRLgreedy/
├── DRLsampling/
└── analysis/

单数据集求解通常生成:

EXP01_result.json
EXP01_schedule.csv
EXP01_summary.txt

算法

算法 类型 额外要求
HEFT 启发式
CPOP 启发式
PEFT 启发式
GA 元启发式
MILP 精确优化 Gurobi
DRL 深度强化学习 PyTorch 和训练好的 checkpoint

数据集字段

字段 含义
tasks 任务集合
resources 云、边缘服务器和端设备
edges DAG 任务依赖
workload 任务计算量
speed 资源计算速度
data_size 依赖边传输数据量
bandwidth 资源间网络带宽

更多参数请使用:

python cli.py <command> --help
关于
126.2 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号