Ascend-SACT/R-ESRGAN
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

适配环境信息

NPU硬件:A2/910B

操作系统:ARM

部署方式:单卡

1 背景

核心目标是:将强大的AI图像生成与处理工作流(ComfyUI + R-ESRGAN)从常见的NVIDIA GPU环境,成功迁移到华为昇腾(Ascend)NPU平台上运行。这是在国产化AI算力生态建设中的一个具体实践,旨在验证和展示昇腾NPU支持复杂AI应用的能力。

面临的主要困难与挑战 迁移过程并非简单的“安装即可”,文档中隐含了几个关键的技术挑战:

软硬件生态差异:昇腾NPU使用自研的达芬奇架构和CANN软件栈,与NVIDIA的CUDA生态完全不兼容。这意味着所有依赖CUDA的库(如PyTorch、TorchVision)都必须替换为昇腾定制版本。 复杂的依赖与环境配置:整个过程极为复杂,涉及从底层Python解释器编译、CANN工具包安装、特定版本的PyTorch-NPU适配,到上层应用依赖的精确匹配。任何一步的版本不兼容都可能导致失败。 算子支持度与性能瓶颈:正如启动参数 --cpu-vae 所暗示,某些模型组件(如VAE解码器)可能在NPU上效率不高或缺乏算子支持,不得不回退到CPU执行,这会成为整个流程的性能瓶颈。文档中的警告信息也表明,一些优化功能(如动态编译)在NPU上尚未完全成熟。

1.1 什么是ComfyUI

ComfyUI是一个基于节点式工作流的Stable Diffusion WebUI,它通过可视化的节点连接方式,让用户能够精确控制和定制AI图像生成的每一个步骤。与传统的WebUI(如AUTOMATIC1111)不同,ComfyUI采用了完全模块化的设计理念,将图像生成过程分解为多个可配置的节点,为用户提供了前所未有的灵活性和控制力。

1.2 R-ESRGAN 基于ComfyUI的如何应用

通过加载其 .pth 模型文件到 “Load Upscale Model” 等节点,并将其连接到图像处理流程的末端,即可实现对输入图像的超分辨率放大和增强。

2 解决方案

2.1 R-ESRGAN权重下载

export HF_ENDPOINT="https://hf-mirror.com"
huggingface-cli download --resume-download xinntao/Real-ESRGAN:main --local-dir gte-large-zh

2.2 环境准备

2.2.1 Python3.11安装

#安装所需组件
apt update && sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget libbz2-dev pkg-config uuid-dev tk-dev liblzma-dev libgdbm-compat-dev curl git -y
#下载源码
wget https://www.python.org/ftp/python/3.11.4/Python-3.11.4.tgz
tar -xf Python-3.11.*.tgz
cd Python-3.11.*/
#检查是否满足所需的依赖关系并使用以下命令优化二进制文件
./configure --enable-optimizations
make -j $(nproc)
#安装到系统
make altinstall
#安装pip,后面安装CANN需要(此时没有安装python3.8的pip)
curl -sS https://bootstrap.pypa.io/get-pip.py | python3.11 

2.2.2 CANN安装

#修改pip源和安装依赖
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple/
pip config set install.trusted-host pypi.tuna.tsinghua.edu.cn
pip3.11 install attrs cython numpy==1.26.0 decorator sympy cffi pyyaml pathlib2 psutil protobuf==3.20 scipy requests absl-py
#安装CANN,下载社区版点这里,注意选择Ascend-cann-toolkit和Ascend-cann-kernels-310p开头的。这里选310p是因为npu-smi info里显示的芯片是310p。
chmod +x ./Ascend-cann-toolkit_8.2.RC1.alpha001_linux-x86_64.run
./Ascend-cann-toolkit_8.2.RC1.alpha001_linux-x86_64.run --install --install-for-all
y
 
chmod +x ./Ascend-cann-kernels-310p_8.2.RC1.alpha001_linux-x86_64.run
./Ascend-cann-kernels-310p_8.2.RC1.alpha001_linux-x86_64.run --install --install-for-all
y
source /usr/local/Ascend/ascend-toolkit/set_env.sh
pip3.11 install torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 --index-url https://download.pytorch.org/whl/cpu
 pip3.11 install torch_npu-2.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

2.2.3 验证NPU是否正常使用

python3.11 -c "import torch;import torch_npu; a = torch.randn(3, 4).npu(); print(a + a);"

2.2.4 下载ComfyUI

git clone https://github.com/comfyanonymous/ComfyUI.git

2.2.5 安装依赖工具

先安装torch、torchvision和torchaudio

pip install torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 --index-url https://download.pytorch.org/whl/cpu
pip3.11 install numpy==1.26.0

安装其他依赖工具

pip3.11 install -r requirements.txt

2.2.6 安装Comfy-Manager

cd ./ComfyUI/custom_nodes/
git clone https://github.com/Comfy-Org/ComfyUI-Manager.gi

2.3 启动

python3.11 -u main.py --listen 0.0.0.0 --cpu-vae

3 总结

尽管面临挑战,但成功迁移具有重大价值:

技术验证价值:成功证明了昇腾NPU具备支撑复杂AI图像工作流的能力。ComfyUI的节点式流程代表了模块化、可定制的先进AI应用范式,其成功运行是对NPU计算能力和软件栈成熟度的有力考验。 生态建设价值:为更多AI开发者提供了将现有项目从CUDA迁移到昇腾平台的实践范本。文档中详尽的步骤(如特定版本的Python、NumPy、PyTorch-NPU组合)解决了迁移中最棘手的环境配置问题,降低了技术门槛。