核心目标是:将强大的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上尚未完全成熟。
ComfyUI是一个基于节点式工作流的Stable Diffusion WebUI,它通过可视化的节点连接方式,让用户能够精确控制和定制AI图像生成的每一个步骤。与传统的WebUI(如AUTOMATIC1111)不同,ComfyUI采用了完全模块化的设计理念,将图像生成过程分解为多个可配置的节点,为用户提供了前所未有的灵活性和控制力。
通过加载其 .pth 模型文件到 “Load Upscale Model” 等节点,并将其连接到图像处理流程的末端,即可实现对输入图像的超分辨率放大和增强。
export HF_ENDPOINT="https://hf-mirror.com"
huggingface-cli download --resume-download xinntao/Real-ESRGAN:main --local-dir gte-large-zh#安装所需组件
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 #修改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.whlpython3.11 -c "import torch;import torch_npu; a = torch.randn(3, 4).npu(); print(a + a);"git clone https://github.com/comfyanonymous/ComfyUI.git先安装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.txtcd ./ComfyUI/custom_nodes/
git clone https://github.com/Comfy-Org/ComfyUI-Manager.gipython3.11 -u main.py --listen 0.0.0.0 --cpu-vae
尽管面临挑战,但成功迁移具有重大价值:
技术验证价值:成功证明了昇腾NPU具备支撑复杂AI图像工作流的能力。ComfyUI的节点式流程代表了模块化、可定制的先进AI应用范式,其成功运行是对NPU计算能力和软件栈成熟度的有力考验。 生态建设价值:为更多AI开发者提供了将现有项目从CUDA迁移到昇腾平台的实践范本。文档中详尽的步骤(如特定版本的Python、NumPy、PyTorch-NPU组合)解决了迁移中最棘手的环境配置问题,降低了技术门槛。