文档首页/ AI开发平台ModelArts/ 最佳实践/ 图像生成模型训练推理/ Qwen-Image、Qwen-Image-Edit基于Lite Server适配NPU推理指导(6.5.908)
更新时间:2025-10-16 GMT+08:00
分享

Qwen-Image、Qwen-Image-Edit基于Lite Server适配NPU推理指导(6.5.908)

本文档主要介绍如何在ModelArts Lite Server环境中部署模型Qwen-Image、Qwen-Image-Edit对应Diffusers、ComfyUI框架,使用NPU卡进行推理。

方案概览

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

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

资源规格要求

推推荐使用ModelArts Lite Server的Ascend Snt9B资源。

获取软件和镜像

表1 获取软件和镜像

分类

获取路径

插件代码包

AscendCloud-AIGC-6.5.908-xxx.zip

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

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

说明:

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

基础镜像

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

Snt9b:中国-香港:

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

从SWR拉取。

支持特性

表2 支持特性

套件类型

模型名称

Diffusers

Qwen-Image

Qwen-Image-Edit

Qwen-Image-Lightning

ComfyUI

Qwen-Image

Qwen-Image-Edit

步骤一:准备环境

  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容器镜像。启动前请先按照参数说明修改${}中的参数。可以根据实际需要增加修改参数。
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} 代表镜像名称。
  • -p 8183:8183 开启一个端口,可以通过 http://宿主机IP:8183 访问容器服务(如冲突,可自行更换其他端口)。
  1. 进入snt9b容器。需要将${container_name}替换为实际的容器名称,例如:comfyui。
    docker exec -it ${container_name} bash

步骤三:Diffusers部署

安装依赖和模型包

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

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

    huggingface-cli login

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

  2. 安装python依赖包。
    pip install diffusers 
    pip install peft==0.17.0
    pip install transformers==4.54.1
    pip install urllib3==1.26.7

启动服务

  • Qwen-Image执行python脚本
    1. 新建一个python文件qwen-image.py,将Qwen-Image链接中的代码内容复制到文件中
    2. 修改qwen-image.py文件,model_name请修改为自己的权重路径
      import torch_npu 
      from torch_npu.contrib import transfer_to_npu 
      model_name = "/home/ma-user/Qwen-Image"
      torch.npu.config.allow_internal_format = False

      如下图:

      将pipe.vae.enable_tiling()插入到pipe = pipe.to(device)之后,如下图:

    3. 执行python qwen-image.py进行推理,生成图片是当前目录下的example.png
  • Qwen-Image-Edit执行python脚本
    1. 新建一个python文件qwen-image-edit.py,将Qwen-Image-Edit链接中的代码复制到文件中
    2. 修改qwen-image-edit.py文件,model_name请修改为自己的权重路径
      将如下代码添加或替换掉对应内容
      import torch_npu 
      from torch_npu.contrib import transfer_to_npu 
      torch.npu.config.allow_internal_format = False
      from diffusers import QwenImageEditPipeline  
      model_name = "/home/ma-user/Qwen-Image-Edit"
      pipeline = QwenImageEditPipeline.from_pretrained(model_name)
      pipeline.vae.enable_tiling()

      如下图:

    3. 执行python qwen-image-edit.py进行推理。
  • Qwen-Image-Lightning执行python脚本
    1. 新建一个python文件qwen-image-lightning.py,将Qwen-Image-Lightning链接中的代码复制到文件中
    2. 修改Qwen-Image-Lightning.py文件
      将如下代码添加或替换掉对应内容, image_name, lightning_name请修改为自己的权重路径
      import torch_npu 
      from torch_npu.contrib import transfer_to_npu 
      torch.npu.config.allow_internal_format = False
      image_name = "./Qwen-Image"
      lightning_name = "./Qwen-Image-Lightning"
      weight_name = "Qwen-Image-Lightning-4steps-V2.0-bf16.safetensors"
      pipe = DiffusionPipeline.from_pretrained(image_name, scheduler=scheduler, torch_dtype=torch.bfloat16 ).to("cuda")
      pipe.load_lora_weights(lightning_name, weight_name=weight_name)
      pipe.vae.enable_tiling()

      如下图:

    3. 执行python qwen-image-lightning.py进行推理。

步骤四:ComfyUI部署

安装依赖和模型包

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

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

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

      diffusion_models

      - qwen_image_bf16.safetensors

      - qwen_image_edit_bf16.safetensors

      loras

      - Qwen-Image-Lightning-4steps-V2.0.safetensors

      text_encoders

      - qwen_2.5_vl_7b.safetensors

      vae

      - qwen_image_vae.safetensors

开启高性能模式

模型开启高性能模式,按启动服务执行。
export TASK_QUEUE_ENABLE=2

启动服务

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

      选择qwen-image工作流,如下图。

      图4 浏览模板
      图5 选择工作流

      选择对应权重文件并点击运行,如下图所示。

      图6 选择对应权重文件并点击运行

      成功之后结果如下图。

      图7 推理成功
    2. 如下运行图生图。
      图8 访问前端页面

      选择qwen-image-edit工作流,如下图。

      图9 浏览模板

      点击图像生成后选择工作流,如下图

      图10 选择工作流

      选择对应权重文件和输入图像,并点击运行,如下图所示。

      图11 选择对应权重文件和输入图像并运行

      成功之后保存图像节点会输出对应图像。

相关文档