在部署解决方案之前,建议您先查看本指南中有关架构图和区域支持等信息。然后按照下面的说明配置解决方案并将其部署到您的帐户中。 部署时间:约 20 分钟 ## 前提条件 ## 部署概述 在亚马逊云科技上部署本解决方案(ComfyUI部分)主要包括以下过程: - 步骤1:部署本解决方案中间件。 - 步骤2:部署ComfyUI前端。 - 步骤3: 在ComfyUI页面调试并创建一个可用的工作流。 - 步骤4:根据创建的工作流部署新的Amazon SageMaker推理节点。 !!! tip "贴士" 遇到部署问题时可以查看[faq](../faq.md)中ComfyUI相关部分。 ## 部署步骤 ### 步骤1: 部署解决方案中间件 此自动化Amazon CloudFormation模板在亚马逊云科技中部署解决方案。 1. 登录到[AWS管理控制台](https://console.aws.amazon.com/),点击链接[Extension-for-Stable-Diffusion-on-AWS-ComfyUI.template](https://console.aws.amazon.com/cloudformation/home?#/stacks/create/template?stackName=stable-diffusion-aws&templateURL=https://aws-gcr-solutions.s3.amazonaws.com/stable-diffusion-aws-extension-github-mainline/v1.6.0-cc5e0f3/custom-domain/Extension-for-Stable-Diffusion-on-AWS.template.json){:target="_blank"}。 2. 默认情况下,该模版将在您登录控制台后默认的区域启动。若需在指定的Amazon Web Service区域中启动该解决方案,请在控制台导航栏中的区域下拉列表中选择。 3. 在**创建堆栈**页面上,确认Amazon S3 URL文本框中显示正确的模板URL,然后选择**下一步**。 4. 在**制定堆栈详细信息**页面,为您的解决方案堆栈分配一个账户内唯一且符合命名要求的名称。 5. 在**参数**部分,在**Bucket**中填入一个有效的新的S3桶的名字(或之前部署的、用于本解决方案ComfyUI部分的S3桶名字)。在**email**处输入一个正确的电子邮件地址,以便接收将来的通知。在**SdExtensionApiKey**字段中请输入一个包含数字和字母组合的20个字符的字符串;如果未提供,默认为"09876543210987654321"。在**LogLevel**处选择您心仪的Lambda Log日志打印级别,默认ERROR才打印。点击**下一步**。 6. 在**配置堆栈选项**页面,选择**下一步**。 7. 在**审核**页面,查看并确认设置。确保选中确认模板将创建Amazon Identity and Access Management(IAM)资源的复选框。并确保选中AWS CloudFormation需要的其它功能的复选框。选择**提交**以部署堆栈。 8. 您可以在 AWS CloudFormation 控制台的 **状态** 列中查看堆栈的状态。您应该会在大约 15 分钟内收到**CREATE_COMPLETE**状态。 !!! tip "贴士" 请及时检查您预留邮箱的收件箱,并在主题为“AWS Notification - Subscription Confirmation”的邮件中,点击“Confirm subscription”超链接,按提示完成订阅。 ### 步骤2: 部署ComfyUI前端 步骤3将会为客户安装ComfyUI的前端。该前端自动内置了汉化插件、工作流发布云上等按钮,为客户提供更友好的UI交互界面。此自动化Amazon CloudFormation模板在亚马逊云科技中部署解决方案。 1. 点击[链接](https://aws-gcr-solutions.s3.amazonaws.com/extension-for-stable-diffusion-on-aws/comfy.yaml){:target="_blank"}来下载ComfyUI前端部署的yaml文件。或复制此链接,亦或者从步骤一的输出获取到对应部署ComfyUI前端的文件链接。 2. 登录到[AWS管理控制台](https://console.aws.amazon.com/),点击控制台右上角**Create Stack**, **With new resource(standard)**,页面跳转至创建堆栈。 3. 在**创建堆栈**页面上,选择**Choose an existing template**,在**特定模版**区域选择**Upload a template file**,从本地选择选择刚下载的yaml文件上传,或者是**Amazon S3 URL**,填入上述复制的链接,然后选择**下一步**。 4. 在**制定堆栈详细信息**页面,为您的解决方案堆栈分配一个账户内唯一且符合命名要求的名称。在**参数**部分,**InstanceType**为选择部署的ec2的实例类型、**NumberOfInferencePorts**为推理环境数量(建议不超过5个)**StackName**来自于部署步骤第一大部分中成功部署堆栈的名称。**keyPairName**选择现有的一个EC2 Key Pair,点击**Next**。 !!! tip "贴士" 此处的EC2 Key Pair主要用于本地远程连接EC2。如果没有现有的,可以参考[官方手册](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-key-pairs.html){:target="_blank"}来创建。 5. 在**配置堆栈选项**页面,选择**下一步**。 6. 在**审核**页面,查看并确认设置。确保选中确认模板将创建Amazon Identity and Access Management(IAM)资源的复选框。并确保选中AWS CloudFormation需要的其它功能的复选框。选择**提交**以部署堆栈。 7. 您可以在 AWS CloudFormation 控制台的 **状态** 列中查看堆栈的状态。您应该会在大约 3 分钟内收到**CREATE_COMPLETE**状态。 8. 选择部署成功的堆栈,打开**Outputs**,点击**Designer**对应的链接,即可打开解决方案部署的ComfyUI前端,Designer的访问可能需要关闭VPN或者去掉10000端口后访问。**NumberOfInferencePortsStart**代表推理环境地址起始路径端口,按照部署数量端口地址依次增加,例如:当NumberOfInferencePorts填写3时,地址范围时,可访问的推理环境地址依次为:http://EC2地址:10001,http://EC2地址:10002,http://EC2地址:10003 !!! tip "贴士" 刚部署好贴士以后,需要稍作等待。如果打开链接后,看到提示“Comfy is Initializing or Starting”,表示后端在初始化ComfyUI过程中,请稍作等待,再次刷新页面确认。 ### 步骤3: 在ComfyUI页面调试并创建一个可用的工作流。 可以参考[这里](../user-guide/ComfyUI/inference.md)中的“工作流的调试”子章节部分 ### 步骤4: 部署新的Amazon SageMaker推理节点 在步骤1成功完成后,需要通过API方式部署所需的Amazon SageMaker推理节点。后续的新发布的ComfyUI工作流推理都将使用该推理节点的计算资源。 以下API代码中所需的ApiGatewayUrl及ApiGatewayUrlToken,可以在步骤1部署成功的堆栈**Outputs**标签页找到。 请打开任何可以运行代码的窗口,比如本地Macbook电脑的Terminal,运行如下API代码。 ``` curl --location 'api地址/endpoints' \ --header 'x-api-key: 此处填写您的apikey' \ --header 'username: api' \ --header 'Content-Type: application/json' \ --data-raw '{ “workflow_name”:“此处填写您创建的workflow名称“, “endpoint_name”: “当无需关联workflow时需要填写您要创建的推理端点名字", “service_type”: “comfy”, “endpoint_type”: “Async”, “instance_type”: “实例类型.ml.xxx”, “initial_instance_count”: 1, “min_instance_number”: 1, “max_instance_number”: 2, “autoscaling_enabled”: true, “assign_to_roles”: [ “test” ] }' ``` !!! Important "注意" 如果是相对复杂的workflow 注意选择异步推理节点类型,否则受限于service最长等待30s,会出现调用推理超时的情况。 后续如需要删除Amazon SageMaker推理节点,可通过以下API完成。 ``` curl --location --request DELETE 'https://此处填ApiGatewayUrl地址/endpoints' \ --header 'username: api' \ --header 'x-api-key: 此处填ApiGatewayUrlToken' \ --header 'Content-Type: application/json' \ --data-raw '{ "endpoint_name_list": [ "comfy-real-time-test-34"//填要删除的endpoint名字 ] }' ``` !!! Important "注意" 不建议直接进去SageMaker console直接删除endpoint,容易造成数据不一致的隐患。