基于ACK集群部署ComfyUI应用

基于ACK托管集群ProGPU节点,可以快速部署ComfyUI应用,解决本地性能瓶颈和复杂环境配置的问题。

适用范围

  • 集群版本为1.22及以上,GPU节点显存需为16GB及以上的ACK托管集群Pro

  • 设置NVIDIA驱动为535及以上版本,本示例为GPU节点池添加标签ack.aliyun.com/nvidia-driver-version,驱动版本为550.144.03

步骤一:准备模型数据

本文以sdxl-turbo模型(文生图模型,单步即可出图)为例,演示如何下载模型,上传至OSS,并在ACK中创建PVPVC进行持久化存储。

  1. 下载模型文件到本地。

    1. 安装Git、Git LFS(Large File Support)插件。

      macOS

      1. 安装Git。

        官方维护的 macOS Git 安装程序可以在 Git 官方网站下载。
        brew install git
      2. 安装Git LFS(Large File Support)插件拉取大文件内容。

        brew install git-lfs

      Windows

      1. 安装Git。

        可在Git 官方网站下载合适版本并安装。

      2. 安装Git LFS(Large File Support)插件拉取大文件内容。

        目前lfs已经集成在了Git for Windows 中,直接下载和使用最新版本的Windows Git即可。

      Linux

      1. 安装Git。

        RedHat系列的Linux系统为例,其余系统安装,请参见Git 官方网站

        yum install git
      2. 安装Git LFS(Large File Support)插件拉取大文件内容。

        yum install git-lfs
    2. 下载sdxl-turbo模型。

      GIT_LFS_SKIP_SMUDGE=1 git clone https://www.modelscope.cn/AI-ModelScope/sdxl-turbo.git
      cd sdxl-turbo
      git lfs pull
  2. 将下载的sdxl-turbo文件夹上传至OSS。

    1. 安装ossutil,用于管理OSS资源。

    2. 创建Bucket存储空间。

      ossutil mb oss://<Your-Bucket-Name>
    3. OSS创建名为sdxl-turbo的目录。

      ossutil mkdir oss://<Your-Bucket-Name>/sdxl-turbo
    4. 上传模型文件至OSS。

      ossutil cp -r ./sdxl-turbo oss://<Your-Bucket-Name>/sdxl-turbo
  3. 配置存储卷PV。

    1. 登录容器服务管理控制台,进入集群详情页。

    2. 在左侧导航栏,选择存储 > 存储卷

    3. 存储卷页面,单击右上角的创建

    4. 创建存储卷对话框中配置参数。

      • 存储卷类型:OSS

      • 名称:sdxl-turbo-model

      • 总量:20Gi

      • 访问模式:ReadWriteMany

      • 访问证书:选择新建保密字典

      • 可选参数-o umask=022 -o max_stat_cache_size=0 -o allow_other

      • Bucket ID选择Bucket

      • OSS Path:/sdxl-turbo

      • 访问域名:公网域名

      参数配置完成后,单击创建

  4. 配置存储声明PVC。

    1. 在左侧导航栏,选择存储 > 存储声明

    2. 创建存储声明页面中,填写界面参数。

      • 存储声明类型:OSS

      • 名称:sdxl-turbo-model

      • 分配模式:已有存储卷

      • 已有存储卷:选择已有存储卷

      • 总量:20Gi

      创建成功后可以在列表中看到sdxl-turbo-model,并且已绑定(Bound)相应的存储卷。

步骤二:配置Models部署参数

  1. 登录容器服务管理控制,在左侧导航栏选择集群列表

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择应用 > Helm。找到comfyui组件,按页面引导完成创建。image

  3. comfyui参数配置界面中,修改persistence参数的模型配置信息,其余保持默认。

    persistence:
      - mountPath: "/app/ComfyUI/models/checkpoints"       #修改模型来源
        annotations:
          helm.sh/resource-policy: keep
        persistentVolumeClaim:      
          existingClaim: "sdxl-turbo-model"    #修改为以上创建的PVC
          accessModes: ReadWriteMany
          storageClass: oss                    #存储卷类型修改为oss
          size: 20Gi
          subPath: ""
    • 修改模型来源:mountPath:"/app/ComfyUI/models/checkpoints"

    • 修改为已创建PVC:existingClaim:"sdxl-turbo-model"

    • 修改存储卷类型:storageClass:oss

步骤三:访问并测试服务

  1. 使用kubectl命令将ComfyUI服务转发到本地8080端口。

    确保本地8080端口未被占用,且保持终端窗口开启以维持端口转发。更多信息,请参考port-forward
    kubectl port-forward svc/ack-comfyui 8080:8188

    预期输出:

    Forwarding from 127.0.0.1:8080 -> 8188
    Forwarding from [::1]:8080 -> 8188

    在本地通过浏览器访问服务http://localhost:8080

  2. 下载sdxl-turbo示例工作流,并在ComfyUI页面单击Load,将获取的工作流加载到ComfyUI中。

  3. 设置提示词,在CLIP Text Encode(Prompt)文本框输入:

    beautiful landscape scenery glass bottle with a galaxy inside cute fennec fox snow HDR sunset
  4. ComfyUI页面,依次设置Extra Options -> Auto Queue,然后单击Queue Prompt,生成图片如下所示。

    image