文档首页/ AI开发平台ModelArts/ 最佳实践/ 图像生成模型训练推理/ Diffusers、ComfyUI套件基于ModelArts Lite Server适配PyTorch NPU的推理指导(6.5.906)
更新时间:2025-08-27 GMT+08:00
分享

Diffusers、ComfyUI套件基于ModelArts Lite Server适配PyTorch NPU的推理指导(6.5.906)

本文档主要介绍如何在ModelArts Lite Server环境中部署文生图模型Stable Diffusion系列、HUNYUAN模型,对应Diffusers、ComfyUI框架,使用NPU卡进行推理。

方案概览

本方案介绍了在Server上使用昇腾计算资源部署Diffusers、ComfyUI框架用于推理的详细过程。完成本方案的部署,需要先联系您所在企业的华为方技术支持购买Server资源。

本方案目前仅适用于企业客户。

资源规格要求

推理部署推荐使用“西南-贵阳一”Region上的Server资源、Ascend Snt9B和Snt9B23。

获取软件和镜像

表1 获取软件和镜像

分类

名称

获取路径

插件代码包

AscendCloud-AIGC-6.5.906-xxx.zip

文件名中的xxx表示具体的时间戳,以包名发布的实际时间为准。

获取路径:Support-E,在此路径中查找下载ModelArts 6.5.906 版本。

说明:

如果上述软件获取路径打开后未显示相应的软件信息,说明您没有下载权限,请联系您所在企业的华为方技术支持下载获取。

基础镜像

Snt9B:西南-贵阳一:

swr.cn-southwest-2.myhuaweicloud.com/atelier/pytorch_ascend:pytorch_2.5.1-cann_8.2.rc1-py_3.11-hce_2.0.2503-aarch64-snt9b-20250729103313-3a25129

Snt9B23:西南-贵阳一:

swr.cn-southwest-2.myhuaweicloud.com/atelier/pytorch_ascend:pytorch_2.5.1-cann_8.2.rc1-py_3.11-hce_2.0.2503-aarch64-snt9b23-20250729103313-3a25129

从SWR拉取。

支持特性

表2 支持特性

套件类型

模型名称

Diffusers

SD1.5

SDXL

SD3.5

HUNYUAN

ComfyUI

SD1.5

SDXL

SD3.5

步骤一:准备环境

  1. 请参考Lite Server资源开通,购买Server资源,并确保机器已开通,密码已获取,能通过SSH登录,不同机器之间网络互通。

    购买Server资源时如果无可选资源规格,需要联系华为云技术支持申请开通。

    当容器需要提供服务给多个用户,或者多个用户共享使用该容器时,应限制容器访问Openstack的管理地址(169.254.169.254),以防止容器获取宿主机的元数据。具体操作请参见禁止容器获取宿主机元数据

  2. 检查环境。
    1. SSH登录机器后,检查NPU设备状态。运行如下命令,返回NPU设备信息。
      npu-smi info

      如出现错误,可能是机器上的NPU设备没有正常安装,或者NPU镜像被其他容器挂载。请先正常安装固件和驱动,或释放被挂载的NPU。

    2. 检查docker是否安装。
      docker -v   #检查docker是否安装

      如尚未安装,运行以下命令安装docker。

      yum install -y docker-engine.aarch64 docker-engine-selinux.noarch docker-runc.aarch64
    3. 配置IP转发,用于容器内的网络访问。执行以下命令查看net.ipv4.ip_forward配置项的值,如果为1,可跳过此步骤。
      sysctl -p | grep net.ipv4.ip_forward
      如果net.ipv4.ip_forward配置项的值不为1,执行以下命令配置IP转发。
      sed -i 's/net\.ipv4\.ip_forward=0/net\.ipv4\.ip_forward=1/g' /etc/sysctl.conf 
      sysctl -p | grep net.ipv4.ip_forward
  3. 获取基础镜像。建议使用官方提供的镜像部署推理服务。镜像地址{image_url}参见表1
    docker pull {image_url}

步骤二:启动容器镜(Snt9b)

启动Snt9b容器镜像。启动前请先按照参数说明修改${}中的参数。可以根据实际需要增加修改参数。
docker run -itd \
--name ${container_name} \
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
-p 8183:8183 \
-v /etc/localtime:/etc/localtime \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
--shm-size 60g \
--device=/dev/davinci_manager \
--device=/dev/hisi_hdc \
--device=/dev/devmm_svm \
--device=/dev/davinci3 \
--network=host \
${image_name} bash

参数说明:

  • --name ${container_name} 容器名称,进入容器时会用到,此处可以自己定义一个容器名称,例如comfyui。
  • --device=/dev/davinci3:挂载主机的/dev/davinci3到容器的/dev/davinci3。可以使用npu-smi info查看空闲卡号,修改davinci后数字可以更改挂载卡。
  • 若需要启动多卡推理服务,则需要挂载多卡,例如再添加一个--device=/dev/davinci2
  • ${image_name} 代表镜像名称。填写的是表1 获取软件和镜像中的基础镜像名称。
  • -p 8183:8183 开启一个端口,可以通过 http://宿主机IP:8183 访问容器服务(如冲突,可自行更换其他端口)。
进入snt9b容器。需要将${container_name}替换为实际的容器名称,例如:comfyui。
docker exec -it ${container_name} bash

步骤二:启动容器镜(Snt9b23)

启动Snt9b23容器镜像。启动前请先按照参数说明修改${}中的参数。可以根据实际需要增加修改参数。
docker run -itd \
--privileged \
--name ${container_name} \
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
-p 8183:8183 \
-v /etc/localtime:/etc/localtime \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
--shm-size 60g \
--device=/dev/davinci_manager \
--device=/dev/hisi_hdc \
--device=/dev/devmm_svm \
--device=/dev/davinci3 \
--network=host \
${image_name} bash

参数说明:

  • --name ${container_name} 容器名称,进入容器时会用到,此处可以自己定义一个容器名称,例如comfyui。
  • --device=/dev/davinci3:挂载主机的/dev/davinci3到容器的/dev/davinci3。可以使用npu-smi info查看空闲卡号,修改davinci后数字可以更改挂载卡。
  • 若需要启动多卡推理服务,则需要挂载多卡,例如再添加一个--device=/dev/davinci2
  • ${image_name} 代表镜像名称。填写的是表1 获取软件和镜像中的基础镜像名称。
  • -p 8183:8183 开启一个端口,可以通过 http://宿主机IP:8183 访问容器服务(如冲突,可自行更换其他端口)。
进入Snt9b23容器。需要将${container_name}替换为实际的容器名称,例如:comfyui。
docker exec -itu root ${container_name} bash

步骤三:Diffusers部署

安装依赖和模型包

  1. 使用如下命令登录huggingface,并输入个人账号的token,用于自动下载模型权重。

    登录成功后,直接启动Diffusers推理脚本即可实现自动下载。

    huggingface-cli login

    也可以手动下载模型权重,上传到容器的/home/ma-user目录下,官网下载地址(需登录)。

  2. 安装插件代码包。
    1. 将获取到的插件代码包AscendCloud-AIGC-xxx.zip文件上传到容器的/home/ma-user/temp目录下,并解压。插件代码包获取地址参见表1
      cd /home/ma-user/temp
      unzip AscendCloud-AIGC-*.zip #解压
    2. 将AIGC包解压后,进入到获取的/home/ma-user/temp/aigc_inference/torch_npu/utils/ascend_diffusers目录下,安装ascend_diffusers包。
      cd /home/ma-user/temp/aigc_inference/torch_npu/utils/ascend_diffusers
      pip install -e .
    3. 将AIGC包解压后,进入到获取的/home/ma-user/temp/aigc_inference/torch_npu/utils/AscendX-MM目录下,安装AscendX-MM包。
      cd /home/ma-user/temp/aigc_inference/torch_npu/utils/AscendX-MM
      pip install -e .
启动服务
export MODEL_PATH='下载好的huggingface模型路径',例如/home/ma-user/stable-diffusion-3.5-medium。如果未手动下载,想要自动下载则不加model_id参数即可。
cd /home/ma-user/temp/aigc_inference/torch_npu/diffusers/0.31.0/examples

单卡模型推理启动服务命令如下,详细参数请参考/home/ma-user/temp/aigc_inference/torch_npu/diffusers目录下的Readme文件。

  • SD1.5模型推理启动命令:
    pip install diffusers==0.30.2
    python sd_inference_example.py --model_name sd15 --model_id ${MODEL_PATH} --prompt 'a dog' --num_inference_steps 20 --width 512 768 1024 --height 512 768 1024
  • SDXL模型推理启动命令:
    pip install diffusers==0.30.2
    python sd_inference_example.py --model_name sdxl --model_id ${MODEL_PATH} --prompt 'a dog' --num_inference_steps 20 --width 768 1024 --height 768 1024
  • SD3.5模型推理启动命令:
    pip install diffusers==0.31.0
    python sd_inference_example.py --model_name sd35 --model_id ${MODEL_PATH} --prompt 'a dog' --num_inference_steps 28 --width 512 768 1024 --height 512 768 1024
  • HUNYUAN模型推理启动命令:
    pip install diffusers==0.30.2
    export INF_NAN_MODE_FORCE_DISABLE=1
    python sd_inference_example.py --model_name hunyuan --model_id ${MODEL_PATH} --prompt 'a dog' --num_inference_steps 20 --width 512 768 1024 --height 512 768 1024

步骤四:ComfyUI部署

安装依赖和模型包

  1. 下载ComfyUI软件包。
    下载ComfyUI源码并切换分支。
    git clone https://github.com/comfyanonymous/ComfyUI.git
    cd ComfyUI
    git checkout v0.3.7
    如果上述方法无法下载ComfyUI源码,可参考如下操作,手动下载到本地再上传到容器中,如图1所示。
    1. 登录https://github.com/comfyanonymous/ComfyUI页面,切换Tag为v0.3.7,单击Code按钮,通过Download ZIP下载ComfyUI源码到本地。
      图1 下载ComfyUI源码

      访问Github下载开源软件需要连通外网,请用户自行配置网络代理。

    2. 将下载好的ComfyUI-0.3.7.zip文件上传到容器的/home/ma-user/目录下,并解压。
      cd /home/ma-user/
      unzip ComfyUI-0.3.7.zip
      cd ComfyUI-0.3.7
  2. 安装依赖,将requirements.txt中的torch修改为torch==2.5.1。
    pip install -r requirements.txt
  3. 下载模型权重。

    sd1.5:将v1-5-pruned-emaonly.safetensors复制到ComfyUI/models/checkpoints目录下。

    https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors

    sdxl:将sd_xl_base_1.0.safetensors复制到ComfyUI/models/checkpoints目录下。

    https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0.safetensors

    sd3.5:将sd3.5_medium.safetensors复制到ComfyUI/models/checkpoints目录下。

    https://www.modelscope.cn/models/cutemodel/comfyui-sd3.5-medium/resolve/master/sd3.5_medium.safetensors

    此外需要额外下载三个text_encoder相关模型:复制到ComfyUI/models/clip目录下。

    https://huggingface.co/Comfy-Org/stable-diffusion-3.5-fp8/blob/main/text_encoders/clip_l.safetensors

    https://huggingface.co/Comfy-Org/stable-diffusion-3.5-fp8/blob/main/text_encoders/clip_g.safetensors

    https://huggingface.co/Comfy-Org/stable-diffusion-3.5-fp8/blob/main/text_encoders/t5xxl_fp16.safetensors

    ComfyUI框架还需要下载推理所需的workflow:

    https://www.modelscope.cn/models/stabilityai/stable-diffusion-3.5-medium/file/view/master/SD3.5M_example_workflow.json?status=1

  4. 安装插件代码包。
    1. 将获取到的插件代码包AscendCloud-AIGC-xxx.zip和AscendCloud-OPP-6.5.906-torch-xxx.zip文件上传到容器的/home/ma-user/目录下,并解压。插件代码包获取请参见表1
      cd /home/ma-user/
      unzip AscendCloud-AIGC-*.zip 
      unzip AscendCloud-OPP-*-torch-*.zip
    2. 进入ComfyUI/custom_nodes目录下,将解压AIGC包后获取的aigc_inference/torch_npu/comfyui/0.3.7/comfyui_ascend_node文件夹复制到该目录下。
      cd ComfyUI/custom_nodes
      cp -r /home/ma-user/aigc_inference/torch_npu/comfyui/0.3.7/comfyui_ascend_node /home/ma-user/ComfyUI/custom_nodes
    3. 进入到获取的aigc_inference/torch_npu/utils/ascend_diffusers目录下,安装ascend_diffusers包。
      cd /home/ma-user/aigc_inference/torch_npu/utils/ascend_diffusers
      pip install -e .
    4. 进入到获取的aigc_inference/torch_npu/utils/AscendX-MM目录下,安装AscendX-MM包。
      cd /home/ma-user/aigc_inference/torch_npu/utils/AscendX-MM
      pip install -e .
    5. 进入到/home/ma-user/目录下安装ascend_cloud_ops(Snt9b23机型不需要安装)
      cd /home/ma-user/
      pip install ascend_cloud_ops_custom-*.whl
      bash ascend_cloud_ops_custom_opp-*.run --install-path=/home/ma-user/
      source /home/ma-user/vendors/customize/bin/set_env.bash

开启高性能模式

SD模型开启高性能模式,按启动服务执行。
export CACHE_MODE=1

启动服务

  1. 用ifconfig命令获取容器IP(若无效可使用ip addr,或者自行寻找其他方式获取到容器IP)。
    图2 snt9b获取容器IP
    图3 snt9b23获取容器IP
  2. 进入目录。
    cd /home/ma-user/ComfyUI
  3. 启动服务命令如下。
    python main.py --port 8183 --listen 172.17.0.7 --force-fp16
  4. 使用http://{宿主机ip}:8183可以访问前端页面。
    1. 如下运行文生图。
      图4 1访问前端页面

      根据上面checkpoint的箭头,对新的npu的checkpoint进行规划,如下图。

      图5 规划checkpoint

      在ckpt_name中选择要使用的权重文件,单击Queue Prompt加入推理队列进行推理,如下图。

      图6 进入推理队列

      成功之后结果如下图。

      图7 推理成功

相关文档