目录

云—边—端异构计算资源管理调度框架

1. 项目简介

本项目是一套可训练的深度强化学习调度框架,用于云—边—端异构计算环境中的 DAG 任务调度。

框架在每个调度步骤中,从当前 READY 任务和合法资源组合中选择一个动作,在满足任务依赖、资源兼容性和内存约束的前提下,尽量降低整体完成时间 makespan。

2. 比赛要求对应关系

本项目支持:

  • 任务 DAG、资源和网络参数配置化;
  • 更换任务规模、资源数量、资源类型和异构参数;
  • Random、Greedy-EFT、HEFT 和 MaskablePPO 等多种策略;
  • 统一调度策略接口;
  • 相同场景下的公平评测;
  • HEFT 专家轨迹采集;
  • 行为克隆预训练;
  • BC 初始化后的 MaskablePPO 微调;
  • 固定训练集、验证集和测试集;
  • 自动化测试和模型复现。

3. 目录结构

cloudedgesched/       核心调度框架
configs/              场景池与训练配置
scripts/              训练和评测脚本
scenarios/            DAG 与异构资源场景
tests/                自动化测试
artifacts/            最佳模型和专家数据
docs/                 项目说明书

4. 环境要求

推荐使用:

  • Python 3.11
  • PyTorch
  • Gymnasium
  • Stable-Baselines3
  • sb3-contrib
  • NumPy
  • PyYAML

安装依赖:

python3.11 -m venv .venv
source .venv/bin/activate

python -m pip install --upgrade pip
python -m pip install -r requirements.txt

5. 自动化测试

bash run_tests.sh

冻结版本包含 111 项自动化测试。

6. 训练提交方法

当前最佳学习方法为:

增强任务—资源观测
+ HEFT 行为克隆初始化
+ MaskablePPO 微调

启动训练:

bash train_submission_model.sh

快速训练冒烟测试:

bash train_submission_model.sh smoke

正式训练结果默认写入:

outputs/checkpoints/submission_bc_ppo

7. 从随机初始化训练基础 PPO

python -m scripts.train_maskable_ppo \
  --config configs/submission/train_maskable_ppo.yaml \
  --device cpu

8. 重新训练行为克隆模型

python -m scripts.train_heft_behavior_cloning \
  --config configs/submission/train_behavior_cloning.yaml \
  --device cpu

9. 最佳预训练模型

当前最佳模型:

artifacts/pretrained/best_ppo_model.zip

行为克隆初始模型:

artifacts/pretrained/best_bc_model.zip

检查最佳模型是否可以正常加载:

bash check_best_model.sh

10. 最佳验证结果

当前最佳学习模型在固定验证集上的结果为:

mean_ratio_to_heft = 1.432058
best_timestep = 10000

模型选择仅使用验证集,冻结测试集没有参与训练或超参数选择。

11. 配置化设计

场景由 JSON 文件描述,主要包括:

  • 任务工作量;
  • DAG 依赖边;
  • 依赖边数据量;
  • 资源类型;
  • 资源计算速度;
  • 资源内存容量;
  • 任务—资源兼容关系;
  • 节点间通信带宽。

固定场景池配置:

configs/scenario_pools/baseline_pool_v1_frozen.json

提交专用训练配置:

configs/submission/train_maskable_ppo.yaml
configs/submission/train_behavior_cloning.yaml
configs/submission/train_bc_ppo.yaml

12. 统一策略接口

所有调度策略遵循统一的 SchedulerPolicy 接口,并通过:

select_action(
    context: PolicyContext,
    deterministic: bool = True,
) -> int

返回动作。

不同策略使用统一 episode runner 和 evaluator,在相同场景、相同时间模型和相同合法动作约束下进行比较。

13. 动作空间

动作编码方式:

action_id =
task_id × max_resource_count
+ resource_id

当前模型配置:

max_task_count = 100
max_resource_count = 16
action_count = 1600

环境通过:

env.action_masks()

提供合法动作掩码。

14. 项目说明书

完整设计、训练流程和实验结果见:

docs/项目说明书.md

15.大文件百度网盘连接

best_ppo_model.zip: https://pan.baidu.com/s/1j0F2jtncADvPT_P_S9U7SQ 提取码: qtha

关于
116.9 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

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