使用mindspore_hub将Hugging Face模型转换后,生成图像出现色偏的分析和解决

1 系统环境

  • 硬件环境(Ascend/GPU/CPU): Ascend
  • MindSpore版本: mindspore=2.6.0
  • 执行模式(PyNative/ Graph): 不限
  • Python版本: Python=3.9
  • 操作系统平台: Linux

2 报错信息

2.1 问题描述

在边缘设备部署文生图服务。使用mindspore_hub将`Hugging Face的 runwayml/stable-diffusion-v1-5 转换后,输入 prompt “a red apple on white table” 生成图像中苹果呈绿色或青灰色。

3 根因分析

MindSpore的VAE解码器在昇腾设备上默认启用fused layernorm算子,该算子在低精度下对颜色通道(R/G/B)的归一化存在偏差,尤其在sigmoid输出阶段放大误差,因此会出现推理偏差。

4 解决方案

可以通过设置,将fused layernorm算子的计算关闭掉,就能避免计算误差。

from mindspore import context

context.set_context(enable_fused_norm=False)