【边缘计算实战】P1:从零搭建边云任务卸载仿真实验台(Python 可复现)
【边缘计算实战】P1:从零搭建边云任务卸载仿真实验台(Python 可复现)
适合人群:研0 / 本科毕设 / 想入门 Computation Offloading 的同学
系列说明:巡检机器人场景下的边云协同(P1 仿真 → P2 运行时 → P3 在线 → P4 运维诊断)
代码仓库:https://gitee.com/ghaweiuptgb/edge-computing
本篇对应目录:projects/p01-offloading-lab
一、写在前面
边缘计算里有个非常经典的问题:计算卸载(Computation Offloading)——一个推理/检测任务,到底放在本地边缘算,还是卸载到云端算?
很多文章停留在公式推导,缺少「能跑、能对比、能复现」的小实验台。本篇带你用 纯 Python 搭一个最小但完整的卸载仿真实验台,并产出可写进组会 PPT 的对比图。
本篇你将得到:
- 清晰的时延代价模型
- 4 种可插拔策略(含基线)
- 固定随机种子、≥1000 任务的可复现实验
- 一张能说明「无脑策略会翻车」的结果图
二、问题场景(巡检机器人)
想象复杂环境下的巡检机器人:摄像头持续产生「缺陷检测」类感知任务。
- 边缘节点:离机器人近,RTT 小,但算力有限,容易排队
- 云端:算力强,但弱网时传输代价陡增
目标不是做一个「万能调度器」,而是先证明:
在弱网 / 过载工况下,合理策略显著优于 Always-Local / Always-Cloud。
三、时延代价模型
端到端时延拆成四项(代码与文档一致):
[
T = T_{tx} + T_{queue} + T_{compute} + T_{base}
]
| 符号 | 含义 | 直觉 |
|---|---|---|
| (T_{tx}) | 传输 | 图大、带宽小、上云 RTT 大时变差 |
| (T_{queue}) | 排队 | 边侧过载时变差 |
| (T_{compute}) | 计算 | 复杂度高、核少时变差 |
| (T_{base}) | 固有开销 | 云端通常更大 |
成功判定:(T \le deadline) 则成功,否则超时。
四、四种策略
| 策略 | 行为 | 典型翻车场景 |
|---|---|---|
always_local |
固定走本地边缘 | 边侧过载 |
always_cloud |
固定上云 | 弱网 |
threshold |
队列/时延超阈值才上云 | 阈值极端时退化 |
greedy_min_latency |
选估计时延最小的节点 | 估计不准时(研一再改进) |
研究里一定要有「傻基线」。没有 AlwaysLocal/AlwaysCloud,你的改进看不出价值。
五、环境与快速跑通
git clone https://gitee.com/ghaweiuptgb/edge-computing.git
cd edge-computing/projects/p01-offloading-lab
pip install -r requirements.txt
# 单元测试
python -m pytest tests/ -v
# 跑实验(1000 任务,种子 42)
python scripts/run_experiments.py --seed 42 --n-tasks 1000
# 总验收
python scripts/accept_p1.py
结果输出在:
experiments/results/
summary.md
summary.csv
timeout_normal.png
timeout_weak_net.png
timeout_edge_overload.png
latency_*.png
六、关键代码结构
p01-offloading-lab/
├── src/
│ ├── models.py # 任务/节点/网络/工况
│ ├── cost.py # 时延分解
│ ├── policies/ # 四种策略
│ ├── simulator/ # 工作负载 + 仿真引擎
│ └── eval/ # 汇总与出图
├── scripts/run_experiments.py
└── docs/教学手册.md
策略统一接口(示意):
class OffloadingPolicy(ABC):
def select(self, task, nodes, network) -> ComputeNode:
...
这样实验脚本可以对 同一批任务 切换策略,保证对比公平。
七、一组可复现实验结果(seed=42, n=1000)
| 工况 | 现象(摘要) |
|---|---|
| normal | greedy / threshold 成功率可达 100%;两基线因单点拥塞很差 |
| weak_net | always_cloud 超时率显著高于 greedy |
| edge_overload | always_local 进一步变差;智能策略仍稳 |
组会口述三句话:
- 无脑策略会把单一节点队列打满。
- 弱网主要惩罚云端传输项。
- 用代价模型做决策,能明显降低超时。
八、常见问题
Q1:仿真和真实系统差很多怎么办?
A:研0 先保证可讲解、可复现。下一篇 P3 会把策略接到真实 HTTP 推理服务,并对比 online vs sim。
Q2:为什么不上强化学习?
A:中等难度路线优先把建模与评测做扎实;RL 留研一。
Q3:和导师的视觉组怎么衔接?
A:视觉组出模型,你出「何时何地跑模型」的决策与评测。
九、小结与下期预告
P1 解决的是:纸面上把卸载问题跑通并出图。
下一篇 【P2】巡检边缘运行时:用 Docker Compose 拉起真正的 edge/cloud 服务,提供 /infer、注册与心跳——把「节点」从对象变成可调用的微服务。
标签建议:边缘计算 计算卸载 Python 仿真 研究生 可复现实验
系列导航:P1(本篇) → P2 运行时 → P3 在线卸载 → P4 可观测诊断
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)