|
|
||
|---|---|---|
| mgh_ppo | ||
| results_heft | ||
| schedulers | ||
| stg_to_json_benchmarks | ||
| stg_to_json_dataset | ||
| HEFT_full_results_fixed.xlsx | ||
| PPT.pptx | ||
| README.md | ||
| evaluate_schedulers.py | ||
| 作品原创承诺书.docx | ||
| 项目说明书.docx | ||
README.md
MHG-PPO Workflow Scheduling Project
这是一个面向云-边-异构计算资源调度的项目,核心目标是把 STG 工作流数据转换成可用于调度实验的 JSON 任务图,再用统一接口评测 HEFT、CP-SAT 和基于深度强化学习的 MHG-PPO 调度器。
演示视频
项目主线
stg_to_json_dataset/:把 STG 基准转换成结构化 JSON 工作流数据,并提供节点配置。stg_to_json_benchmarks/:传统调度基线实现,包括 HEFT、CP-SAT、MILP 等。schedulers/:统一调度器适配层,把不同方法包装成同一solve()接口。mgh_ppo/:MHG-PPO 训练、评估、环境、模型、教师策略和数据划分。evaluate_schedulers.py:批量评测脚本,统一跑多个调度器并导出结果。
目录说明
mgh_ppo/data.py:场景加载、数据划分、哈希与样本管理。env.py:调度环境、合法动作、奖励和结果验证。model.py:GNN Actor-Critic 模型。ppo.py:PPO 训练与 checkpoint 管理。teacher.py:HEFT 教师、行为克隆数据与专家轨迹。rollout.py:并行环境交互与采样。train.py:训练循环。evaluate.py:评估、质量门槛与 Excel 报表。pipeline.py:准备、训练、评估的一体化入口。
stg_to_json_dataset/stg_to_json_converter.py:STG 到 JSON 的转换器。schema(simplified).json:工作流 JSON 结构示意。heterogeneous_nodes_scc_mb.json:节点配置样例。
stg_to_json_benchmarks/heft_solver.py:HEFT 基线。cp_sat_solver.py:CP-SAT 基线。milp_solver.py/milp_solver_gurobi.py:MILP 基线。
schedulers/base.py:统一调度器抽象接口。heft_adapter.py:HEFT 适配器。cpsat_adapter.py:CP-SAT 适配器。drl_adapter.py:加载训练好的 MHG-PPO 模型做推理。
数据流
- 先用
stg_to_json_dataset/stg_to_json_converter.py把 STG 数据集转换成 JSON 工作流。 - 再用
stg_to_json_dataset/heterogeneous_nodes_scc_mb.json这类节点配置定义异构资源。 mgh_ppo根据dataset_root和nodes划分训练、验证、测试、OOD 集合。- 训练阶段先做 HEFT 教师轨迹和行为克隆,再做 PPO 微调。
- 评估阶段把 MHG-PPO 与 HEFT 等方法放在同一场景上比较 makespan、运行时间和合法性。
主要入口
1. 训练与评估 MHG-PPO
python -m mgh_ppo.pipeline --config mgh_ppo/smoke.yaml --mode all
python -m mgh_ppo.pipeline --config mgh_ppo/bc_ppo_10h.yaml --mode all
常用模式:
prepare:只生成教师轨迹。train:只训练。evaluate:只评估已有 checkpoint。all:准备 + 训练 + 评估。
2. 统一评测多个调度器
python evaluate_schedulers.py --dataset dataset --nodes stg_to_json_dataset/heterogeneous_nodes_scc_mb.json --output-root results/scheduler_evaluation
支持输入:
- 单个工作流 JSON 文件
- 某个数据集目录
dataset/根目录
典型输出
MHG-PPO 输出
mgh_ppo/outputs/<run_id>/
best.ptresults.xlsxsummary.jsontraining_log.csv- 可选
artifacts/或_work/
统一调度评测输出
results/scheduler_evaluation/
all_results.jsondetails/scheduler_makespan_results.xlsx
依赖
项目常用依赖包括:
torchnumpyPyYAMLpandasopenpyxlpytestpulp或gurobipy(仅 MILP 相关)ortools(仅 CP-SAT 相关)
mgh_ppo/requirements.txt 里列的是核心运行依赖,调度基线和导出报表还需要额外的包。
运行前提
- 数据集目录默认名为
dataset/。 - 节点配置默认使用
stg_to_json_dataset/heterogeneous_nodes_scc_mb.json。 evaluate_schedulers.py中的 DRL 评测默认会加载一个已训练好的best.pt,路径需要和实际输出对齐。- Windows 下建议直接使用仓库内的 PowerShell 命令运行。
结果解释
makespan越小越好。runtime_sec是调度器求解或推理耗时。status用来区分成功、无解、超时和异常。- MHG-PPO 的评估重点是和 HEFT 的比值、胜率和合法调度比例。
备注
- 仓库里已有的各子目录
README.md只覆盖各自模块,这个文件是整个项目的总说明。