【边缘计算实战】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,你的改进看不出价值。


五、环境与快速跑通

bash 复制代码
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

结果输出在:

text 复制代码
experiments/results/
  summary.md
  summary.csv
  timeout_normal.png
  timeout_weak_net.png
  timeout_edge_overload.png
  latency_*.png

六、关键代码结构

text 复制代码
p01-offloading-lab/
├── src/
│   ├── models.py          # 任务/节点/网络/工况
│   ├── cost.py            # 时延分解
│   ├── policies/          # 四种策略
│   ├── simulator/         # 工作负载 + 仿真引擎
│   └── eval/              # 汇总与出图
├── scripts/run_experiments.py
└── docs/教学手册.md

策略统一接口(示意):

python 复制代码
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 进一步变差;智能策略仍稳

组会口述三句话:

  1. 无脑策略会把单一节点队列打满。
  2. 弱网主要惩罚云端传输项。
  3. 用代价模型做决策,能明显降低超时。

八、常见问题

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 可观测诊断

相关推荐
码云骑士6 分钟前
94-实战Prompt优化师Agent-迭代优化-效果评分-自动生成Few-Shot
python·prompt
从零开始学习人工智能18 分钟前
PyTorch 踩坑:Input type \(Half\) and bias type \(float\) 类型不匹配终极解决方案
人工智能·pytorch·python
海盗123421 分钟前
微软技术日报——2026-08-07
python·microsoft·flask
醉城夜风~29 分钟前
querySelector()
人工智能·python·tensorflow
海兰31 分钟前
【数据库】tdsql(MySQL )的事务隔离级别
android·数据库·mysql
灵析表格1 小时前
Excel连接MySQL的函数化革命:灵析表格MySQL函数族业务应用分析
数据库·mysql·adb·excel·wps·灵析表格·excel公式盒子
todoitbo1 小时前
把发票台账接进 Codex:KingbaseES MCP 的一次只读风险排查实践
数据库·oracle·codex·kingbasees·mcp
Navicat中国1 小时前
使用 Navicat 轻松生成数据库测试数据
数据库·数据
看浪的路人1 小时前
第5讲:代码审查与 Bug 检测
开发语言·windows·python
zyplayer-doc1 小时前
核心制度不该被随手修改:用zyplayer-doc锁定文档和全部子文档
大数据·数据库·人工智能·笔记·pdf·ocr