flowchart LR
C["YAML 配置"] --> G["场景生成与数据划分"]
G --> S["DAG、异构资源与网络场景"]
S --> E["调度模拟器 / RL 环境"]
E --> B["Random / EFT / HEFT"]
E --> R["Masked PPO / HEFT 行为克隆"]
R --> T["任务规模路由"]
B --> P["BC + EFT 候选组合"]
T --> P
P --> A["合法性审计"]
A --> O["JSON / CSV / 图表 / 最终汇总"]
云-边-端异构计算资源调度框架
本项目对应高校赛题“研究创新-基于深度强化学习的云-边-端异构计算资源 管理调度方法”。给定带依赖约束的任务 DAG、异构计算资源和有向网络参数, 调度器为就绪任务选择执行节点,以降低整体完成时间(makespan)。
项目提供可训练、可配置、可插拔和可复现的完整工程框架,而不只是单个模型:
Scheduler接口及 Random、EFT、HEFT 外部基线。正式结果
推荐策略为
routed_bc_eft:这是明确标注的“BC + 启发式候选组合”,不读取 HEFT 评测答案,也不将 行为克隆或组合成绩表述为纯 DRL 单模型成绩。真正经过 PPO 更新的模型通过 独立的
best_ppo.pt报告,即使其性能低于 BC 也保留供复核。routed_bc_eftbc_initialized_ppo_eft指标定义:
数值越低越好,
1.0表示与 HEFT 相同。正式汇总位于outputs/final/final-v3-audited/summary.json,逐组指标位于outputs/final/final-v3-audited/metrics.csv。九方法严格消融位于artifacts/results/ablation-nine-method-v3/。固定测试审计 400 份时间表,泛化评测审计 1080 份时间表,任务缺失、依赖 违规、资源重叠和非法动作计数均为 0。九方法消融另审计 900 份时间表, 同样全部合法。
系统结构
flowchart LR C["YAML 配置"] --> G["场景生成与数据划分"] G --> S["DAG、异构资源与网络场景"] S --> E["调度模拟器 / RL 环境"] E --> B["Random / EFT / HEFT"] E --> R["Masked PPO / HEFT 行为克隆"] R --> T["任务规模路由"] B --> P["BC + EFT 候选组合"] T --> P P --> A["合法性审计"] A --> O["JSON / CSV / 图表 / 最终汇总"]环境、场景来源、资源参数和调度策略通过独立模块连接。所有策略使用相同的 场景模型、合法动作约束和评测指标。
环境准备
推荐环境:
Windows Conda 示例:
Windows 开发环境使用 Python
3.11.15和 PyTorch2.12.0+cpu。 openEuler 验证环境使用 openEuler24.03 LTS SP4、内核6.6.0-159.4.3.154.oe2403sp4.x86_64、Python3.11.6和 PyTorch2.12.0+cpu。验证虚拟机分配 2 个 CPU、3 GB 内存和 40 GB 动态磁盘, 网络模式为 NAT。项目代码不依赖 CUDA;不同平台安装 PyTorch 时应选择与平台匹配的 CPU wheel。
一键复现
完整执行单规模和混合规模数据生成、双模型训练、固定测试、270 场景泛化 评测及最终汇总:
Windows:
openEuler:
openEuler 专用配置使用独立的数据、模型和结果目录,避免覆盖 Windows 正式 v3 产物。正式复现命令不带
--reuse-existing。已有完整数据和 checkpoint 时可复用通过指纹校验的训练产物:
正式输出目录:
--reuse-existing会同时校验步骤命令、输入文件或目录、源码、Git 状态和 输出产物 SHA-256。缺少旧版指纹,或任一指纹发生变化时,该步骤会自动重跑; 上游产物变化还会使依赖它的下游步骤失效。最终正式实验仍要求从空输出目录 且不带该参数完整运行一次。openEuler 复现结果
2026-07-28 在 openEuler 空输出目录中完成了不带
--reuse-existing的 六步流水线。数据生成两步、模型训练两步、固定测试和泛化评测在pipeline_run.json中均记录为completed。跨平台重新训练结果存在轻微浮点与优化轨迹差异,但两个平台的指标和方法排序 保持一致。最终验收从 GitLink 提交
b8e2d5e9d89a5adc80d1ad9bb353b27d6766ab55全新 clone,在干净工作树中 完成依赖完整性检查、当前 93 项自动化测试和无复用六步流水线:正式证据位于
artifacts/openeuler/final-acceptance/,包括:system-info.txt:系统版本、内核、CPU、内存和磁盘信息。requirements-freeze.txt:Python 依赖版本。console.log与logs/:总控制台日志和六步独立日志。pipeline_run.json:六步状态、耗时和产物路径。fingerprints/:输入、源码和输出产物指纹。summary.json、metrics.csv、固定测试及泛化明细。自动化测试
当前共有 93 项测试,已在 Windows 和 openEuler 最终验收环境全部通过。 测试覆盖:
规模边界
运行压力测试:
32、64、90 任务各使用 3 个固定场景。动态强化学习环境、EFT 和 HEFT 均 成功运行至 90 任务,30 份已完成时间表全部合法。
现有 checkpoint 的固定容量为
max_tasks = 32。因此组合策略只在 32 任务运行;64 和 90 任务明确记录为超容量跳过。这里区分“框架支持 90 任务”和“当前 DRL 模型支持 90 任务”,后者尚未实现。主要入口
python scripts/run_demo.pypython scripts/generate_dataset.py --config configs/dataset.yaml --output data/datasets/baseline-v1python scripts/evaluate_baselines.py --scenarios data/datasets/baseline-v1/test --output outputs/baselines/testpython scripts/train_ppo.py --config configs/ppo.yaml --dataset data/datasets/baseline-v1 --output outputs/training/ppo-v1python scripts/train_ppo.py --config configs/ppo_diagnostics_smoke.yaml --dataset data/datasets/baseline-v1 --output outputs/validation/ppo-diagnostics-smokepython scripts/run_full_pipeline.py --config configs/final_pipeline_v3.yamlpython scripts/run_full_pipeline.py --config configs/final_pipeline_openeuler.yaml项目结构
文档索引
已知限制
artifacts/openeuler/final-acceptance/。