|
|
||
|---|---|---|
| artifacts | ||
| cloudedgesched | ||
| configs | ||
| docs | ||
| scenarios | ||
| scripts | ||
| .gitignore | ||
| README.md | ||
| SHA256SUMS.txt | ||
| SUBMISSION_INFO.txt | ||
| VERSION | ||
| check_best_model.sh | ||
| requirements-lock.txt | ||
| requirements.txt | ||
| run_live_demo.sh | ||
| train_submission_model.sh | ||
| 作品介绍PPT.pptx | ||
| 原创承诺书.pdf | ||
| 项目说明书.pdf | ||
README.md
云—边—端异构计算资源管理调度框架
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