【边缘计算实战】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 可观测诊断

相关推荐
DeepVisionary9 小时前
谷歌 Gemini Omni 1.1 Flash 正式发布:4K 视频、40 秒场景延伸,视频生成进入按 token 计费时代
python·自动化
zlwool9 小时前
图纸管理选型避坑指南
数据库·erp·设备erp·非标机械
阡之尘埃9 小时前
Python数据分析案例85——大模型微调全流程(SFT的LoRA微调)
人工智能·python·深度学习·语言模型·llm·微调·千问
海兰9 小时前
【应用】基于 Next.js 16 + Python mplfinance的金融K线图与技术指标可视化平台(三)
javascript·python·金融
cvcode_study9 小时前
Ollama+ComfyUI 多模态
大数据·人工智能·python
小灰灰搞电子10 小时前
完全驾驭 Qt 与数据库:C++ ORM 框架 QxOrm 原理与实践指南
数据库·c++·qt
星核0penstarry11 小时前
试一试用gr.Workflow把AI多步骤串联变成可视化画布
人工智能·python·ai作画·api·ai编程·工作流·api聚合平台
taller_200011 小时前
【005】PiE 与传统 VBA 的核心区别
python·vba·pie·py
海兰11 小时前
【应用】基于 Next.js 16 + Python mplfinance的金融K线图与技术指标可视化平台(一)
javascript·python·金融
大衛說11 小时前
《Python 从入门到精通》系列总览与学习路线
开发语言·python·学习