一、引言

在智能工厂、自动驾驶、远程医疗等场景中,AI 应用常面临两难:

  • 纯端侧推理:受限于算力,无法运行大模型;
  • 纯云端推理:网络延迟高、带宽成本大、隐私风险高。

端云协同推理(Edge-Cloud Collaborative Inference)成为破局关键——将模型按层拆分,前端轻量部分在设备端执行,后端复杂部分卸载至云端,实现低延迟、高精度、强隐私的平衡。

然而,传统方案存在三大痛点:

  1. 手动分割模型,开发效率低;
  2. 网络波动时体验骤降
  3. 端云算子不兼容,需重复适配。

为此,CANN 推出 ops-edgeops-cloud 协同框架,提供自动模型分割动态卸载决策统一算子接口三大能力,让开发者只需编写一次模型,即可在昇腾端侧芯片(如 310P)与云侧集群(如 910B)间无缝协同运行。

本文将详解该架构,并通过工业质检案例展示:如何在 200ms 网络延迟下,实现 98.5% 检测精度 + 320ms 端到端延迟 的实时缺陷识别。


二、技术背景

2.1 端云协同的典型模式

模式描述适用场景
Early Exit端侧置信度高则直接输出人脸识别、关键词唤醒
Layer Splitting固定分割点(如前 5 层在端)视频分析、语音识别
Dynamic Partitioning根据网络/电量实时调整分割点自动驾驶、移动 AR

CANN 主要支持 Layer Splitting + Dynamic Adjustment

2.2 ops-edge / ops-cloud 的定位

  • ops-edge:部署于昇腾 310/310P 等端侧 NPU,提供轻量 runtime
  • ops-cloud:部署于昇腾 910 集群,支持高并发、大模型
  • 协同中间件:自动处理张量序列化、加密传输、状态同步

关键特性:

  • 统一 IR:基于 MindIR,端云模型结构一致
  • 零拷贝传输:NPU 内存直连网络 DMA
  • 故障回退:网络中断时自动切换至纯端模式

2.3 协同工作流程

云服务器(ops-cloud) 端设备(ops-edge) 云服务器(ops-cloud) 端设备(ops-edge) 执行模型前半段(e.g., CNN Backbone) 加密发送中间特征(Tensor) 执行后半段(e.g., Transformer Head) 返回结果 后处理(如绘制 bounding box)

中间特征体积仅为原始图像的 1/10~1/50


三、核心机制详解

3.1 自动模型分割

使用 cann-split 工具自动寻找最优分割点:

cann-split \
  --input model.mindir \
  --target-edge ascend310p \
  --target-cloud ascend910b \
  --max-latency 300ms \      # 端到端延迟约束
  --output-dir ./split_model

输出:

  • edge_part.mindir:端侧模型
  • cloud_part.mindir:云侧模型
  • split_config.json:包含分割层名、张量 shape、带宽预估

内部算法综合考虑:

  • 端侧算力(TOPS)
  • 云侧负载
  • 中间张量大小
  • 网络带宽(可选输入)

3.2 动态卸载策略

运行时根据环境调整行为:

from cann.edge import EdgeCloudRunner

runner = EdgeCloudRunner(
    edge_model="edge_part.mindir",
    cloud_endpoint="https://ai-cloud.example.com/infer",
    fallback_policy="local_only"  # 网络断开时仅用端侧
)

# 可选:设置 QoS 策略
runner.set_qos(
    max_latency=400,      # ms
    min_accuracy=0.95,    # 置信度阈值
    network_sensitivity="high"
)

当检测到网络 RTT > 300ms,自动启用 Early Exit

3.3 安全传输与压缩

中间特征默认启用:

  • AES-128-GCM 加密
  • Zstandard 压缩(压缩比 3:1~5:1)
  • Protobuf 序列化

可通过配置关闭以提升速度(内网场景)。


四、实战代码演示

4.1 示例 1:工业质检模型分割

# 1. 准备 YOLOv5 + ViT 融合模型
# 2. 分割:CNN 在端,ViT 在云
cann-split \
  --input defect_detect.mindir \
  --split-layer "backbone.conv5" \
  --output-dir ./defect_split

生成:

  • edge_part.mindir(含 backbone)
  • cloud_part.mindir(含 neck + head + ViT)

4.2 示例 2:端侧部署(Python)

# device.py
from cann.edge import EdgeClient

client = EdgeClient(
    model_path="./defect_split/edge_part.mindir",
    cloud_url="http://192.168.1.100:8080/cloud_infer"
)

image = cv2.imread("product.jpg")
result = client.infer(image)  # 自动处理协同逻辑

if result["status"] == "cloud":
    print("Defect detected:", result["class"])
elif result["status"] == "edge_only":
    print("Low confidence, processed locally")

4.3 示例 3:云侧服务(Flask)

# cloud_server.py
from flask import Flask, request
import mindspore as ms

app = Flask(__name__)
cloud_model = ms.load("./defect_split/cloud_part.mindir")

@app.route("/cloud_infer", methods=["POST"])
def cloud_infer():
    # 自动解密 & 解压
    feature = deserialize(request.get_data())
    
    # 执行后半模型
    output = cloud_model(feature)
    
    return serialize(output)

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8080)

支持 gRPC/HTTP/WebSocket 多协议。


五、性能与可靠性评估

表 1:工业质检系统实测(1080P 图像)

配置端到端延迟精度 (mAP)带宽占用
纯端侧(YOLOv5s)180ms82.1%0
纯云端(YOLOv5l+ViT)650ms96.3%8.2 MB/帧
端云协同320ms98.5%1.7 MB/帧

精度提升 16.4%,延迟降低 51% vs 纯云。

表 2:网络波动下的自适应表现

网络 RTT行为延迟精度
<100ms全协同280ms98.5%
100~300ms协同 + Early Exit320ms97.8%
>300ms 或断网纯端侧180ms82.1%

系统始终可用,体验平滑降级。

表 3:资源消耗对比(昇腾 310P)

模式NPU 利用率内存峰值功耗
纯端95%1.8 GB8.5W
协同(仅跑 backbone)62%0.9 GB5.2W

端侧负载显著降低,延长设备寿命。


六、常见问题与解决方案

Q1:分割后精度下降?

  • 原因:分割点位于信息瓶颈层
  • 解决
    cann-split --avoid-layers "layer_norm,softmax"
    

Q2:云侧响应慢?

  • 优化
    • 启用 ops-dist 多实例负载均衡
    • 使用 ops-fusion 加速云侧模型

Q3:如何支持多设备并发?

  • 云侧部署建议:
    # 使用 Gunicorn + 多进程
    gunicorn -w 8 -b 0.0.0.0:8080 cloud_server:app
    
  • 端侧连接池自动管理。

七、未来展望

端云协同方向:

  • 联邦协同学习:端侧梯度聚合 + 云侧更新
  • 5G MEC 集成:利用边缘云缩短传输距离
  • 数字孪生联动:物理设备与云模型实时同步

开发者可贡献:

  • 新分割策略(如基于注意力热力图)
  • 低功耗通信协议(CoAP over QUIC)
  • 跨厂商协同标准(与 ARM Ethos-U 对接)

GitHub 示例库:
👉 https://github.com/huawei/cann/tree/main/examples/edge-cloud


八、参考文献

  1. CANN 端云协同指南:https://www.atommgit.com/cann/docs/edge-cloud
  2. Neurosurgeon: Collaborative Intelligence Between the Cloud and Mobile Devices: https://dl.acm.org/doi/10.1145/3092819
  3. Deep Decision: Adaptive DNN Partitioning for Edge-Cloud Collaboration: https://arxiv.org/abs/2103.12708
  4. Huawei EdgeGallery Project

九、附录:部署 checklist

  • 使用 cann-split 自动生成分割模型
  • 端侧启用 EdgeCloudRunner
  • 云侧部署 cloud_part.mindir 服务
  • 配置 TLS 加密(生产环境)
  • 设置 fallback 策略应对网络异常

cann组织链接:https://atomgit.com/cann
ops-edge仓库链接:https://atomgit.com/cann/ops-edge
ops-cloud仓库链接:https://atomgit.com/cann/ops-cloud

更多推荐