目录

MHG-PPO Workflow Scheduling Project

这是一个面向云-边-异构计算资源调度的项目,核心目标是把 STG 工作流数据转换成可用于调度实验的 JSON 任务图,再用统一接口评测 HEFT、CP-SAT 和基于深度强化学习的 MHG-PPO 调度器。

演示视频

项目主线

  1. stg_to_json_dataset/:把 STG 基准转换成结构化 JSON 工作流数据,并提供节点配置。
  2. stg_to_json_benchmarks/:传统调度基线实现,包括 HEFT、CP-SAT、MILP 等。
  3. schedulers/:统一调度器适配层,把不同方法包装成同一 solve() 接口。
  4. mgh_ppo/:MHG-PPO 训练、评估、环境、模型、教师策略和数据划分。
  5. 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 模型做推理。

数据流

  1. 先用 stg_to_json_dataset/stg_to_json_converter.py 把 STG 数据集转换成 JSON 工作流。
  2. 再用 stg_to_json_dataset/heterogeneous_nodes_scc_mb.json 这类节点配置定义异构资源。
  3. mgh_ppo 根据 dataset_rootnodes 划分训练、验证、测试、OOD 集合。
  4. 训练阶段先做 HEFT 教师轨迹和行为克隆,再做 PPO 微调。
  5. 评估阶段把 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.pt
  • results.xlsx
  • summary.json
  • training_log.csv
  • 可选 artifacts/_work/

统一调度评测输出

results/scheduler_evaluation/

  • all_results.json
  • details/
  • scheduler_makespan_results.xlsx

依赖

项目常用依赖包括:

  • torch
  • numpy
  • PyYAML
  • pandas
  • openpyxl
  • pytest
  • pulpgurobipy(仅 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 只覆盖各自模块,这个文件是整个项目的总说明。
关于
183.8 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

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