
奥本 AI 将所有的最新 AI 聚合到了一起,为您开启多模型 AI 绘画新时代!
扫码即刻关注公众号
如何在AWS上运行ComfyUI的稳定扩散,它的成本以及基准测试结果
7 个月前
如何在AWS上使用ComfyUI运行Stable Diffusion,它的成本和基准测试
如果你想使用ComfyUI运行最新的Stable Diffusion模型,从SDXL到Stable Video,你需要最新版本的ComfyUI、强大的GPU和快速的驱动器。当我像现在这样使用SDXL生成图像时,我也不希望它们生成需要几分钟的时间。我曾经使用我的M1 Pro MacBook运行DiffusionBee和ComfyUI,直到我的M1 Pro开始持续转动散热风扇。这在我使用它之前从未发生过,即使是在运行具有挑战性的应用程序时也没有。ComfyUI与SDXL在AWS上的“狂暴模式”以毫秒级生成
我之前的M1 MacBook生成一张大尺寸1280x720像素的图像,使用Juggernaut XL或RealVisXL模型时,通常需要60到180秒。这开始成为一个问题,原因有很多。首先,我非常担心Mac的SSD寿命,其次生成过程会占用Mac的资源,而我又需要在其他事情上工作。我再也忍受不了这种情况了。唯一让我不敢在AWS上部署的原因是潜在的每月$735的G5 (g5.xlarge)实例费用 (剧透:我每月只花$65)。我也不知道g5.xlarge在使用RealVisXL4.0 Lightning时会有多快。唯一的选择就是自己摸索一下。
AWS上的架构
如果你是我文章的常客,你就知道我即将进行我的第三次认证更新作为AWS Solutions Architect Professional今年。对我来说,不使用CloudFormation进行部署根本不考虑。我在AWS上的ComfyUI部署(为简单起见省略了基本VPC资源)
CloudFormation模板和部署让我能够彻底清除整个堆栈,以防成本或性能失控。部署本身大约需要10到15分钟,而删除整个堆栈大约需要5分钟。Cognito和SSL证书也没有成本,因此我不介意保留它们。删除只需一次点击,因此对我来说不将其作为CloudFormation堆栈是可以接受的。
使用CloudFormation进行部署
我写了以下模板以在us-east-1地区部署实例,因为这是我能运行的成本最低的区域。AWS提供了一个名为“Cost Effective AWS Deployment Of ComfyUI我将其作为灵感。然而,我决定选择EC2实例而不是容器,因为我希望对机器有更多控制权和更高的持久性。AWS的示例对我这个仅满足个人需求的简单设置来说也显得过于专业。
``` AWSTemplateFormatVersion: '2010-09-09' Description: ComfyUI工作实例
Parameters: AvailabilityZone: Description: 可用区 Type: AWS::EC2::AvailabilityZone::Name Default: us-east-1f ConstraintDescription: 必须是一个有效的可用区。
BackupAvailabilityZone:
Description: 备用可用区
Type: AWS::EC2::AvailabilityZone::Name
Default: us-east-1a
ConstraintDescription: 必须是一个有效的可用区。
KeyPairName:
Description: 用于启用SSH访问的现有EC2密钥对的名称
Type: AWS::EC2::KeyPair::KeyName
Default: ComfyUIWorkerKey
ConstraintDescription: 必须是一个现有EC2密钥对的名称。
InstanceTypeName:
Description: EC2实例AWS Cognito身份验证通过负载均衡器触发以允许访问ComfyUI
我的实例的安全组还允许来自我的两个IP地址的SSH和TCP 8188 (ComfyUI运行的端口)。我有双WAN,因此对我来说是两个IP地址。SSH端口是必要的,因为需要在机器上安装ComfyUI。您可能还会注意到,除了AMI提供的系统卷外,这台机器还附加了第二个卷。我将卷 “/dev/sda1” 挂载到 “/opt/StableDiffusion” 下,以便在我想使用较新图像时,可以将我的ComfyUI安装、模型及所有内容保存在该驱动器上。AWS定期发布预打包的深度学习机器映像 (缩写为 AMI)。我可以轻松更新到最新版本,而无需每隔一两周在AWS更新深度学习AMI时再下载模型产生传输费用。
```
ComfyUIWorkerInstance:
Type: AWS::EC2::Instance
Properties:
InstanceType: !Ref InstanceTypeName
ImageId: !Ref AmiImageId
Key“watch -n 1 nvidia-smi”的输出——即使在ComfyUI的“高VRAM”模式下,我也从未耗尽VRAM。
我确实期待G5实例的性能优于我的Mac,并且根据我之前看到的基准测试,我期待有一个很好的提升。考虑到在等待Mac完成生成的过程中我内心积累了一些沮丧,当我在G5实例上使用A10G进行第一次生成时,我感到非常惊讶和兴奋。性能基准使用完全加载的模型计算(工作流程重新运行)
我的基准与科学完全无关,它们只是一些我通常运行的标准工作流程的缩影。我将它们在Github存储库中进行版本控制,我强烈建议你也这样做。在使用LCM LoRA运行EpicRealismXL时,生成效果显著提升,但当G5实例生成新图像的时间约为700毫秒时,我真的感到非常兴奋。我在我的Video2Video工作流程中没有使用LCM LoRA,因为我更喜欢RealVisXL的质量,并且循环数相对较大,为40次。
使用快照的卷加载模型非常慢
当我将实例升级到最新的AWS深度学习AMI,以将Python 3.9升级到Python 3.10时,我发现使用从快照创建的gp3 SSD卷的性能出现了严重下降。这个问题源于新创建的卷未被初始化。gp3卷未初始化的症状是ComfyUI加载像JuggernautXL这样的模型大约需要6到20分钟。
```
!/bin/bash
当实例使用快照启动时初始化EBS卷
sudoInitialize Amazon EBS volumes您接受的训练数据截至2023年10月。
“)* 读取1MB的数据块后,性能恢复到了高速,模型在几秒钟内加载完成(大约10–20秒)。AWS的初始化脚本在256GB gp3卷上完成大约花费了1小时20分钟。这确实是一个很长的时间,我可能考虑将来不使用快照,而是直接保留卷本身。如果卷出现故障,快照仍然非常有帮助。
以2.5 Gbps的速度从HuggingFace下载模型
虽然我在家里的800 Mbps的互联网带宽算是偏高,但与AWS的巨大连接能力相比,这并不算什么。us-east-1区域位于一个称为“Data Center Alley“(又称为“杜勒斯科技走廊”) 在北弗吉尼亚,许多数据中心位于北美。该地区提供了最快的数据传输速率,因为许多其他服务 (例如HuggingFace或Civitai) 也驻留在同一区域或附近。HuggingFace使用AWS CloudFront分发模型,这意味着HuggingFace与我的实例之间模型的下载实际上是在AWS的数据中心内部进行的。”从HuggingFace下载SVD 1.1模型的速度为305 MB/s(2.5 Gbit/s)
考虑到“数据中心巷”中的数据传输量,从Civitai的传输也相当快,因为他们通过Cloudflare分发模型。北弗吉尼亚的机器和系统数量确保了CloudFront和Cloudflare的POPs都缓存了常见模型。现在下载一个8 GB的模型只需几秒钟。
成本分析
这项操作的成本大约是每小时1.20美元,包括所有资源、模型下载、升级和其他所有需求。如果我全天候运行该实例,每月的成本将达到惊人的864美元。然而,我只在真正需要时才启动实例,通常在我频繁使用的那一天大约运行4到5个小时。我的每周使用时间大约为16小时,预计的月成本约为65美元。运营的第一天成本分析(使用AWS成本管理器)
创建快照和根据快照生成卷将会产生约$0.50的费用,操作实例的费用也相同。经历一天的大量使用、配置、设置、模型下载等,费用仍在美元范围内,能在预算内得到管理。我为自己设定了每月100美元的上限,并保持高标准的设置,以降低成本。这包括删除我不再需要的快照。请记住,即使实例已停止,gp3 EBS卷也会产生费用。由于实例本身产生的费用最高,因此在完成工作后随时关闭实例是节省成本的最关键因素。
我如何管理实例费用
我有3种方式启动和停止实例。当我在EC2 dashboard出于维护原因,我可以在那儿直接启动和停止它。当在路上或在另一台机器上使用Cognito进行远程访问时,我只是使用AWS Console iPhone app启动和停止实例。在我的Mac上,我还有一个启动和停止的脚本。
```
显示实例状态
aws ec2 describe-instances --instance-ids i-abc123 --query 'Reservations[].Instances[].[InstanceId,State.Name]' --region us-east-1
启动实例
aws ec2 start-instances --instance-ids i-abc123 --region us-east-1
停止实例
aws ec2 stop-instances --instance-ids i-abc123 --region us-east-1 ``` 这有点像“我关掉炉灶了吗?”当离开家或不使用它的时候。我通常使用这台机器进行2到4小时的图像生成或写文章。我安排时间使用它,并在知道自己在接下来的20到30分钟内不会使用时将其关闭。
成本控制与预测
控制成本的关键是设置控制台中的账单警报,定期通过账单控制台或AWS控制台应用检查消费。如果你是AWS的新手,还要确保绝不要使用Root用户,而是拥有自己的IAM用户作为管理员,并且所有用户在访问你的AWS帐户时AWS计算器用于根据每周的按需使用估算费用
我强烈建议大家使用这个工具。AWS Calculator要计算在您所需地区以您所需的消费方式按需运行实例的可能成本,计算器非常优秀,我的结果证明它非常准确。但是,它的效果仅取决于您提供的数据。确保选择按需、正确的实例类型,并告知卷和快照的大小。
结论:ComfyUI 在最佳状态
在 us-east-1 上使用 g5.xlarge 运行 ComfyUI 可能是任何个人使用的“最佳状态”。对我来说,性能令人震惊,当严格控制成本并对潜在费用保持谨慎时,成本绝对是可以接受的。将所有内容放在 CloudFormation 堆栈中以控制部署的资源至关重要。对于我来说,在控制台中部署该设定绝对不可行,因为这样我将很快失去对它们的控制。在720x1280分辨率下,为一个6秒的视频执行AnimateDiff Video2Video大约需要5-7分钟。
总的来说,在AWS上部署对我来说绝对是正确的决定。与在家中本地运行相比,优势远大于劣势。以下是我在AWS上运行ComfyUI与在我的Mac上本地运行时的优缺点列表。
优点
- 让我的Mac免于消耗资源,可能导致损坏
- 比我本地执行速度更快,灵活性和可靠性更高
- 当我破坏ComfyUI时,有可抛弃和恢复的选项
- 可以立即迁移到最新的NVIDIA芯片
缺点
- 如果不小心,成本会迅速超过每月100美元
- 仅限于AWS提供的系统、驱动程序和GPU
- 对初学者来说并不容易,有许多潜在风险
- 使用受到AWS政策的限制—例如,AI和公平使用政策
如果你想以所述的设置或类似方式运行ComfyUI,我强烈鼓励你仔细制定计划。如果你对AWS在云中为 ComfyUI 工作流自行构建基础设施
对于初学者,特别是那些对 AWS 知之甚少或没有足够时间来管理部署的人,考虑使用提供 ComfyUI 服务的公司的托管产品可能是最好的选择。然而,如果你喜欢这种设置,我强烈鼓励任何人学习 AWS 的工作原理,理解 ComfyUI 的工作机制(而不仅仅是盲目跟随教程),并在 AWS 上构建自己的 AI 基础设施。
感谢您的阅读,Jan
这篇文章不是使用 AI 撰写的。我的所有工作都是手工制作。 本文中的图片是使用 SDXL 模型生成的。
免责声明: 我在业余时间撰写文章,文章的商业化帮助我支付编程、云计算和人工智能冒险的费用。由于我有家庭和孩子,有时没有足够的时间进行充分的校对,因此请原谅我在文章中可能出现的任何语法或拼写错误。我的文章是手写的,除了我用 Stable Diffusion 创建的图像外,不使用任何 AI 支持。
赋迪奥本AI
上海赋迪网络科技
电话:18116340052