DEV Community

Charles Zhang
Charles Zhang

Posted on

从美颜到生成式修图:美图秀秀亿级流量下的端侧 AI 架构与性能优化实战

从美颜到生成式修图:美图秀秀亿级流量下的端侧 AI 架构与性能优化实战

1. 背景与挑战

美图秀秀作为一款覆盖亿级用户的影像编辑应用,业务形态已经从传统美颜、滤镜、拼图,演进到 AI 消除、AI 扩图、局部重绘、风格化等生成式修图能力。用户通过美图秀秀官网了解版本信息,或完成美图秀秀下载后,即可在移动端体验这些端侧 AI 功能。

端侧 AI 的价值非常明确:低延迟、隐私安全、节省流量、弱网可用。但挑战同样巨大:

  • 机型碎片化:CPU、GPU、NPU 能力差异大,Android 生态尤其明显。
  • 生成式模型大:Diffusion、Transformer 参数量大,内存和算力需求高。
  • 体验要求高:预览要实时,导出要高清,功耗和发热要可控。
  • 亿级流量:模型下发、灰度、降级、监控必须工程化。

因此,端侧 AI 不能只依赖单点模型优化,而需要一套从模型生产到端侧推理、再到线上运营的完整架构。

2. 端侧 AI 总体架构

整体分为五层:

  1. 接入层:相机、相册、编辑、导出、分享。
  2. 业务 SDK:美颜、人像分割、超分、AI 消除、扩图、风格化。
  3. 推理引擎:模型转换、图优化、算子调度、内存池、异构后端。
  4. 硬件抽象:CPU、GPU、NPU、DSP,以及统一硬件能力查询。
  5. 资源与运营:模型商店、按需下载、版本控制、灰度、监控、云侧协同。

典型流程:

用户触发生成式修图 -> 预处理与意图识别 -> 模型路由 -> 端侧推理或云侧兜底 -> 后处理 -> 缓存与导出。

模型路由伪代码:

val capability = DeviceCapability.query()
val task = EditTask(type = 'ai_erase', resolution = 'preview')
if (capability.npuScore > 80 && engine.hasModel('erase_lite')) {
    engine.run('erase_lite', task)
} else {
    cloud.fallback(task)
}
Enter fullscreen mode Exit fullscreen mode

注意:路由策略要支持动态配置,不能硬编码在客户端。

3. 推理引擎关键设计

3.1 统一 IR 与模型转换

支持 ONNX、TFLite、PyTorch 导出模型,统一转换为内部 IR,再做图优化。好处是业务 SDK 不感知后端差异,模型可以按硬件选择不同实现。

3.2 图优化

  • 常量折叠:提前计算不变子图。
  • 算子融合:Conv+BN+ReLU、MatMul+Add。
  • 布局转换:NCHW 与 NHWC 按后端选择。
  • 死代码消除:去掉推理无关节点。

3.3 异构调度

  • Conv、MatMul、Attention 优先给 NPU。
  • 颜色空间转换、缩放、纹理操作给 GPU。
  • 控制流、后处理、小算子给 CPU。

调度器根据算子类型、数据布局、内存占用和功耗预算,动态选择后端。

3.4 内存优化

  • 内存池:复用输入输出缓冲区,降低分配次数。
  • 零拷贝:Bitmap、GPU 纹理、NPU 张量尽量共享。
  • In-place:原地激活,减少峰值内存。
  • 权重共享:多个 LoRA 共享基础权重。
  • 分块加载:大模型按层或按块加载。

3.5 流水线

预处理、推理、后处理可以组成任务图,通过多线程和双缓冲并行。预览阶段低清快速返回,导出阶段高清完整计算。

4. 从美颜到生成式修图

传统美颜主要是 CNN 小模型加 GPU Shader:人脸关键点、皮肤分割、磨皮、美白、瘦脸、大眼。优化重点是定点化、算子融合和实时性。

生成式修图则引入 Diffusion 和 Transformer。端侧难点是步数多、UNet 大、注意力复杂度高。常用优化:

  • 少步采样:LCM、Turbo、蒸馏,把 20 到 50 步降到 4 到 8 步。
  • 量化:FP16、INT8、INT4,结合 QAT 保持画质。
  • 剪枝与低秩分解:压缩 UNet 和 ControlNet。
  • 分块推理:Tile Diffusion,重叠区域融合,降低单次内存峰值。
  • 缓存:KV Cache、特征缓存、跨帧复用。
  • LoRA 动态加载:风格模型按需下发,基础模型共享。
  • 端云混合:端侧低清预览,云侧高清兜底。

能力与优化对照:

能力 模型形态 端侧优化 典型延迟
美颜 CNN FP16/INT8 10-30ms
分割 MobileNet/Transformer 蒸馏+量化 30-80ms
AI 消除 轻量 Diffusion 少步+分块 500-1200ms
扩图 Diffusion 分块+缓存 1-3s

5. 性能优化实战

5.1 启动与首帧

  • 模型懒加载:进入编辑页再加载对应模型。
  • mmap:减少模型加载拷贝。
  • 预热:在相机预览阶段预热轻量模型。
  • 动态分辨率:预览低清,导出高清。

5.2 内存与功耗

  • Bitmap 复用:避免频繁创建大图。
  • GPU 纹理复用:减少上传下载。
  • 峰值控制:分块、流式、及时释放中间张量。
  • DVFS 协同:根据温度与电量调整线程数和批大小。
  • 帧率控制:非交互阶段降低刷新。

5.3 包体与模型下发

基础包内置轻量美颜和分割模型,生成式模型按需下载。用户完成美图秀秀下载后,可在美图秀秀官网查看模型与版本说明。模型文件走 CDN 分片、断点续传和校验,降低失败率。

5.4 监控与 A/B

端侧埋点包括:FPS、首帧延迟、推理耗时、内存峰值、功耗、崩溃、机型分布。新模型先灰度 1%,再逐步放量。

6. 亿级流量下的稳定性

  • 灰度发布:模型、引擎、配置分离,支持一键回滚。
  • 降级策略:端侧失败转云侧,云侧失败转传统美颜。
  • 限流排队:本地任务队列,控制并发推理数。
  • CDN 与缓存:模型分片、断点续传、MD5 校验。
  • 数据闭环:用户反馈、质量评估、模型迭代。

7. 案例:AI 消除与扩图

用户涂抹区域 -> 生成 mask -> 端侧轻量修复 -> 复杂场景转云侧。优化点:

  • mask 下采样:降低输入分辨率。
  • ROI 推理:只处理感兴趣区域。
  • Tile 融合:重叠裁剪,消除接缝。
  • 缓存复用:相似区域复用特征。

优化后,端侧 AI 消除从 3s 降到 800ms 左右,扩图预览可做到 1s 内返回。

8. 总结

从美颜到生成式修图,美图秀秀在亿级流量下要同时满足体验、成本和稳定性。端侧 AI 架构的核心是:统一推理引擎、异构计算、模型压缩、内存与功耗优化,以及端云协同的运营体系。未来,随着 NPU 算力提升和少步生成模型成熟,端侧实时生成式修图会成为标配。

Top comments (0)