架构手册
Web 端 Python 算法调用与
Web 端 Python 算法调用与
模型训练架构选择手册
把 Python 算法接入 Web 平台时,开发者的真正问题不是「能不能调」,而是「数据放哪、算力跑哪、谁付钱、谁负责」。本手册把调用方式拆成三种、把架构拆成四种、并给出明确的决策路径与平台搭建方案。
3
Python → Web 调用路径
HTTP · WASM · ONNX
4
数据 × 算力 架构模式
① 本地·本地 / ② OSS·本地 / ③ OSS·云 / ④ 主机·云
$902
100GB · 月训练100次 · OSS总成本
vs $10 服务器本地
② + ④
推荐混合方案
本地算力为主 · 云端为备
arch_select.py — 架构决策伪代码
# 1. 数据敏感? → ① 本地 + 本地 # 2. 多用户共享? → 进入云端路径 ↓ def choose_arch(data_gb, calls_per_day, latency_s, budget): if data_gb > 5 and calls_per_day > 10: return "④ 服务器存储 + 云端算力" # 高速 IO elif latency_s < 1: return "④ 服务器存储 + 云端算力" # 数据预加载 elif budget == "low": return "② OSS + 用户本地算力" # Pyodide + WebGPU else: return "③ OSS + 云端算力" # FastAPI + OSS SDK
// 01 · INVOCATION
让前端调用 Python 算法的三种方式
本质差别:算法运行在哪。这是后续所有架构选择的起点。
// 01
HTTP API · 服务端调用
将算法封装为 Web 服务,前端通过 HTTP 请求调用。最主流、最成熟的方案。
- Flask轻量灵活 · 快速原型
- FastAPI高性能 · 自动生成文档
- Django大而全 · 自带 Admin
// 02
浏览器端 Python · 本地算力
WebAssembly 把 Python 解释器搬进浏览器,算法在用户本地执行。零服务端算力开销。
- PyodideNumPy / Pandas / Matplotlib
- Brython轻量 · 启动快 · 与 DOM 交互
- Eryx支持快照恢复 · 状态持久化
// 03
ONNX Runtime · 模型推理
把训练好的模型导出为 ONNX,在浏览器用 onnxruntime-web 加载,支持 WebGPU 加速。
- WebGPU调用用户本地显卡
- WASMCPU 兜底
- ONNX跨框架可移植
PRODUCTION API
生产级算法服务
复杂模型、大数据、需要稳定 SLA → HTTP API
CLIENT SIDE
轻量交互 · 教学 · 隐私
小脚本、不上传数据、即时反馈 → Pyodide
EDGE INFERENCE
已训练模型的快速推理
模型固定、调用频繁、低延迟 → ONNX Runtime Web
// 02 · ARCHITECTURE
四种训练 / 推理架构模式
两个维度交叉出四种模式:数据存在哪 × 算力跑在哪。这是整个手册最核心的一张图。
// MODE 01
数据·本地 / 算力·本地
① 本地数据 + 本地算力
硬盘 → 内存 → CPU/GPU
// MODE 02
数据·OSS / 算力·本地
② 云端数据 + 本地算力
云端OSS → ↓ 网络下载 → 内存 → CPU/GPU
// MODE 03
数据·OSS / 算力·云端
③ 云端数据 + 云端算力
云端OSS → ↓ 内网 → 服务器内存 → 服务器CPU/GPU
// MODE 04
数据·主机 / 算力·云端
④ 服务器本地 + 云端算力
服务器硬盘 → 内存 → CPU/GPU
// 03 · SELECTION
方案选择:决策路径与核心对比
不直接告诉你「选哪个」,而是给你五个判断维度和一棵决策树,按你的实际约束走一遍。
决策树 · 按你的约束走一遍
decision_tree.txt
开始 │ ├─ 数据是否需要在多用户/多设备间共享? │ ├─ 否 → 数据是否高度敏感(医疗/金融/隐私)? │ │ ├─ 是 → ① 本地+本地 │ │ └─ 否 → ① 本地+本地 或 ② OSS+本地(看便利性) │ └─ 是 → 继续 ↓ │ ├─ 单次计算数据量是否 > 5GB? │ ├─ 是 → 用户下载时间过长,考虑云端算力 → 继续 ↓ │ └─ 否 → ② OSS+本地(省钱) │ ├─ 训练/推理是否高频(每天 > 10 次)? │ ├─ 是 → 数据量是否 > 100GB? │ │ ├─ 是 → ④ 服务器存储+云端(本地高速IO) │ │ └─ 否 → ③ 或 ④(取决于预算) │ └─ 否 → 低频调用,选 ③ OSS+云端 │ ├─ 响应时间要求是否 < 1秒? │ ├─ 是 → ④ 服务器存储+云端(数据预加载) │ └─ 否 → ③ OSS+云端 │ └─ 预算是否充裕? ├─ 是 → ④ 服务器存储+云端 └─ 否 → ② OSS+本地(利用用户算力)
// COST · 100GB 数据集
OSS vs 服务器本地
同样 100GB,低频 vs 高频访问成本差异巨大:
| 月存储费 | OSS $2 | 主机 $10 |
| 训练一次读取 | + $9(流量) | 免费 |
| 100 次/月 | $902 | $10 |
| 每月 1-2 次 | $2-20 ✅ | $10 |
决策结论:低频存为主 → OSS(③);高频算为主 → 主机(④)。
// SECURITY
隐私与安全
不同架构的数据泄露风险点不一样,对应不同的防护策略:
- ① 设备丢失 / 硬盘损坏 → 设备加密 · 定期备份
- ② 传输过程 / 内存残留 → HTTPS · 端到端加密 · 内存清理
- ③ 云端访问 / 传输 → 服务端加密 · IAM 访问控制
- ④ 云服务商访问 → 静态加密 · 严格 IAM 策略
// 04 · PLATFORM
Web 平台搭建:五层架构
从浏览器到算力集群,平台被划分为五层。每层各司其职,又通过统一的 API 契约互相调用。
L5 · 用户
浏览器端
用户在浏览器中运行 Pyodide + WebGPU,承担本地算力
↕ HTTP / HTTPS
L4 · 接入
API Gateway
签名 URL、限流、鉴权、负载均衡
↕
L3 · 业务
任务调度
用户管理 · 任务调度 · 权限控制 · 监控告警
↕
L2 · 存储
对象存储 + 元数据
OSS 存数据 · PostgreSQL 存元数据 · 版本管理
↕
L1 · 算力
本地 + 云端 GPU
优先使用用户本地算力 · 任务积压时启动云端 GPU
平台核心模块与技术选型
// 06 · CHEATSHEET
速查表:按需求特征反推架构
五分钟做决策。把你的场景对照下面五条,按图索骥。
// 01
数据敏感 · 无需共享 · 用户设备好
① 本地 + 本地
隐私性最高,无网络依赖
// 02
需要团队协作 · 数据共享 · 预算有限
② OSS + 本地
利用用户闲置算力,节省云成本
// 03
低频调用 · 用户设备差 · 数据量中等
③ OSS + 云端
按需付费,不维护长期服务器
// 04
高频训练 · 数据量大 · 需稳定性能
④ 主机 + 云端
高速 IO,训练效率最高
// 05
混合场景:共享 + 本地算力为主 + 云端为备
② + ④
平衡成本、性能与弹性