美术质量是游戏成功的关键要素,而传统美术资源的制作往往耗时耗力,占据了游戏研发成本的相当大一部分。随着 Stable Diffusion 和 Flux 等高质量 AI 大模型的涌现,通过文生图、图生图等生成式 AI 技术,并结合模型微调,我们能够显著提升游戏美术的创作效率。本文将深入探讨在亚马逊云科技(Amazon EC2)上,如何利用开源免费的绘图软件 Krita,并结合 ComfyUI 的强大功能,构建一套高效的美术创作工作流。

一、架构解析

本方案旨在提供一套在亚马逊云科技上部署 ComfyUI 服务的完整架构,以支持 Krita 的 AI 绘画插件。整个系统通过一系列 API 接口对外暴露,实现对 Amazon EC2 实例的创建、维护与管理。核心组件协同工作,确保了服务的弹性、可扩展性和成本效益。

Amazon EC2 实例是 ComfyUI 服务的主要部署载体,负责运行 ComfyUI 及其相关的计算任务。为了实现模型和自定义节点的共享与持久化,我们采用了 Amazon EFS(弹性文件系统),它能够为全局、不同部门及不同用户提供统一的存储空间,存放 Custom Nodes 和各类模型文件。用户与服务器的映射信息以及 Custom Nodes 的管理则通过 Amazon DynamoDB 这一高性能的 NoSQL 数据库进行维护,确保数据的高可用性和快速访问。

对外接口层由 Amazon API Gateway 和 Amazon Lambda 构成。API Gateway 作为统一的入口,接收外部调用请求,并触发后端的 Lambda 函数处理业务逻辑。为了实现对 EC2 实例状态的实时监控和自动化管理,我们还利用了 Amazon EventBridge。EventBridge 能够监听 EC2 的状态变化事件,并触发相应的 Lambda 函数来更新 DynamoDB 中 EC2 的状态信息,从而实现实例的按需启动和停止。

另外,整个方案还大量采用了 Serverless 服务,一旦在一段时间内(例如30分钟)没有检测到 GPU 使用,实例便会自动停止,待下一次用户请求时再按需启动,从而避免了不必要的资源浪费。这种弹性伸缩的机制,使得资源利用率最大化,并有效控制了运营成本。

二、环境准备

2.1、安装 Krita

首先进入Krita官网,然后点击下载,直接安装,下载 AI 插件 krita-ai-diffusion,进行安装

安装完成后,下载 AI 插件 krita-ai-diffusion,进行安装

2.2、Amazon EC2 AMI 制作

制作一个包含所有必要软件和配置的 Amazon EC2 AMI 是部署 ComfyUI 环境的关键一步。我们可以选择从头开始使用 Ubuntu 系统制作,或者直接利用亚马逊云科技官方提供的预装环境的 Ubuntu 镜像。本文以第一种方式为例,详细阐述制作流程。

首先,进入亚马逊云科技官网,在亚马逊云科技控制台启动一台 Ubuntu 系统的 EC2 实例。为了确保后续服务的正常运行,该 EC2 实例的安全组需要开放 22 端口(用于 SSH 连接)和 8848 端口(ComfyUI 服务端口)。存储方面,建议选择 gp3 类型的 EBS 卷,容量至少为 200GB,以满足操作系统、ComfyUI 及其模型文件的存储需求。

接下来,我们需要在 Ubuntu 实例上安装 Amazon CLI,使用如下指令进行安装

sudo apt install unzip
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

完成 Amazon CLI 的安装后,为了充分利用 GPU 资源,必须安装 NVIDIA 驱动。在安装 NVIDIA 驱动时,务必遵循亚马逊云科技官方文档的指引,特别是要安装 nvidia-cuda-toolkitubuntu-drivers-common,并执行 ubuntu-drivers autoinstall,以确保驱动在 EC2 重启后能够正常工作。安装完成后,需要重启实例使驱动生效。

为了实现对 GPU 使用率的监控,进而实现实例的自动化启停,我们需要安装 CloudWatch Agent。通过配置 agent.json 文件,我们可以指定 Agent 收集 NVIDIA GPU 的各项指标,如利用率、内存使用情况等,并将其发送到 Amazon CloudWatch。安装完成后,使用 amazon-cloudwatch-agent-ctl 命令启动 Agent 并加载配置。Agent.json 文件参考下面内容,文件目录为:/home/ubuntu/cloudwatch-agent/agent.json

{
  "metrics": {
    "append_dimensions": {
      "InstanceId": "${aws:InstanceId}"
    },
    "metrics_collected": {
      "nvidia_gpu": {
        "measurement": [
          "utilization_gpu",
          "utilization_memory",
          "memory_total",
          "memory_used",
          "memory_free"
        ],
        "metrics_collection_interval": 30
      }
    }
  }
}
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/home/ubuntu/cloudwatch-agent/agent.json -s

由于本方案中使用了 Amazon EFS 进行文件共享,因此需要在 EC2 实例上安装 EFS Driver。这通常涉及安装一些依赖库,然后从 GitHub 仓库克隆 efs-utils 项目,编译并安装其生成的 Debian 包。这一步骤确保了 EC2 实例能够正确挂载和访问 EFS 文件系统。

随后是 ComfyUI 服务的安装。在 Ubuntu 根目录下,首先创建并激活一个 Python 虚拟环境,然后通过 pip install comfy-cli 安装 ComfyUI 的命令行工具,并执行 comfy install 完成 ComfyUI 及其依赖的安装。这里不需要将 ComfyUI 配置为系统服务,因为后续的自动化部署会处理这一部分。安装完成后,可以尝试手动启动 ComfyUI 服务,监听 0.0.0.0 地址的 8848 端口,以验证其基本功能,完整的代码如下:

# ubuntu根目录下执行以下命令, 根据本地python3版本调整
sudo apt install python3.12-venv
python3 -m venv venv
. venv/bin/activate
pip install comfy-cli
comfy install # 一路“Y”下去
#启动服务
/home/ubuntu/venv/bin/python3 /home/ubuntu/comfy/ComfyUI/main.py --listen 0.0.0.0 --port 8848

为了使 Krita AI 插件能够与 ComfyUI 协同工作,还需要安装 Krita 插件所需的特定 Custom Nodes,例如 ComfyUI Nodes for External Tooling、ComfyUI’s ControlNet Auxiliary Preprocessors、ComfyUI_IPAdapter_plus 和 Inpaint Nodes。

这些节点可以通过 Krita 里面 Comfy Manager 的 Custom Nodes Management 功能进行下载和安装。最后,下载一些测试模型,例如 krita_ai_diffusion 相关的模型,并将其放置在 ComfyUI 的模型目录下,以供测试使用。完成所有安装后,通过 Krita AI 插件测试连接 ComfyUI,确保显示“Connected”即为正常。

至此,Amazon EC2 环境已基本完备。此时,停止该 EC2 实例,并基于此实例制作一个 AMI。务必记录下生成的 AMI ID,这将在后续的自动化部署中用到。

2.3、CDK 部署环境配置

为了自动化部署上述架构,我们使用 Amazon CDK(Cloud Development Kit)。首先,需要准备一个用于部署的 EC2 实例,推荐使用 t3.large 类型,并赋予其必要的 IAM Role 权限,涵盖 VPC、EC2、EFS、API Gateway、Lambda、DynamoDB 和 EventBridge 的创建权限。该实例通常作为短期部署使用。

在该部署实例上,需要安装 Node.js 和 npm,然后通过 npm 全局安装 Amazon CDK。安装完成后,从亚马逊云科技提供的 GitHub 仓库克隆部署代码,例如 using-EC2-build-Krita-with-ComfyUI-practice.git。进入项目目录后,需要修改 gen_env.sh 配置文件,替换为之前制作的 AMI ID、EC2 Key Pair 名称、EC2 实例类型(默认为 g6.2xlarge)、DynamoDB 表名称、VPC CIDR 以及服务器闲置时间等参数。配置完成后,执行 sh gen_env.shnpm installcdk bootstrapcdk deploy 命令,等待约十多分钟,即可完成整个 ComfyUI 服务的自动化部署。

部署完成后,可以通过检查 Amazon CloudFormation 来确认所有资源是否成功创建。同时,需要根据 APIKeyARN 获取 APIKeyID,并进一步获取 APIKey 的值,以及记录下 InvokeUrl 和 FileBrowserInstanceIP。这些信息将用于后续的接口测试和模型管理。

三、实践流程

3.1、接口测试与服务管理

部署完成后,我们可以使用 Postman 等 API 测试工具对系统提供的接口进行验证。首先,下载并导入测试用的 JSON 文件到 Postman,并配置环境变量,将之前获取的 APIKey 赋值给 api-key,InvokeUrl 赋值给 url

系统提供了 /ComfyUI-Servers 路径下的三个核心接口,用于 ComfyUI 服务器的生命周期管理。Post 接口允许用户根据 userid 创建或启动 ComfyUI 服务器。如果用户已有 EC2 实例,系统会尝试启动它;若无,则会为其创建新的实例。Get 接口则用于根据 username 查询 ComfyUI 服务器的状态,包括对外暴露的 IP 地址和端口,这些信息可以直接配置到 Krita 中使用。Stop 接口则允许根据 usernamegroup_name 停止 ComfyUI 服务器。

此外,/ComfyUI-Servers/custom_nodes 路径下还提供了四个接口,用于 Custom Nodes 的查询、创建、更新和删除,调用成功则说明我们搭建的框架已完成!

3.2、模型管理与共享

模型是生成式 AI 应用的核心,本方案通过 Amazon EFS 实现了模型的共享与管理,分为 globalgroup 模型,以及用户私有模型。

通过之前获取的 FileBrowserInstanceIP 地址,我们可以访问一个文件管理界面,默认账号密码为 admin/admin,默认工作目录为 /home/ec2-user/EFS/

在文件浏览器中,models 目录结构清晰,通常包含 global{groups}/{group_name}{users}/{username} 三个层级,分别对应全局共享模型、特定组共享模型和用户私有模型。output 目录结构则为 {output_dir}/{group_name}/{username},用于存放不同用户和组的生成结果。用户可以通过设置界面修改 admin 登录密码和默认工作目录,以增强安全性。

模型上传有多种方式。除了通过 ComfyUI Manager 下载模型到指定文件夹外,还可以直接使用文件浏览器上传模型文件到 /home/ec2-user/EFS/models/checkpoints/global/ 等指定路径。

在页面下半部分的 terminal 执行各种文件管理命令,可以用于下载和管理模型文件,下载后就可以使用了。

这里温馨提示一下,实验结束后要记得清理资源,如果决定不再使用服务的话,记得要在控制台关闭服务,以防超过免费额度产生扣费

四、总结

本文详细探讨了如何在亚马逊云科技 Amazon EC2 上构建 ComfyUI 结合 Krita 的集成环境,以实现高效的实时绘画工作流。亚马逊云科技现提供免费套餐服务,登录亚马逊云科技官网,即可获得 亚马逊云科技产品和服务的免费实践体验,注册即可获得 100 美元的服务抵扣金。

通过采用 Serverless 架构,并结合 Amazon API Gateway、Lambda、DynamoDB 和 EventBridge 等服务,我们实现了对 ComfyUI 服务的弹性管理和自动化监控,确保用户能够便捷地创建、管理和使用自己的 AI 绘画环境。这一方案不仅提升了美术创作的效率,也为游戏及其他创意产业的生成式 AI 应用提供了可行的技术路径。

以上就是本文的全部内容啦。最后提醒一下各位工友,如果后续不再使用相关服务,别忘了在控制台关闭,避免超出免费额度产生费用~

Logo

为武汉地区的开发者提供学习、交流和合作的平台。社区聚集了众多技术爱好者和专业人士,涵盖了多个领域,包括人工智能、大数据、云计算、区块链等。社区定期举办技术分享、培训和活动,为开发者提供更多的学习和交流机会。

更多推荐