跳转至

手动部署

根据以下步骤部署本解决方案:

安装必要组件

请在部署前安装以下运行时:

编辑配置文件

本解决方案的配置存储在config.yaml文件中,我们提供了配置文件模板,您可以根据您的实际需求对解决方案进行自定义。

设置模型存储桶(必需)

modelBucketArn 中的 <bucket name> 修改为放置模型的S3存储桶名称。

modelBucketArn: arn:aws:s3:::<bucket name>

中国区域

如您使用亚马逊云科技中国区域, 请确保ARN中的partition为aws-cn.

modelBucketArn: arn:aws-cn:s3:::<bucket name>

设置Stable Diffusion运行时(必需)

您需要指定运行时的参数。运行时定义在 modelsRuntime 中,配置如下:

modelsRuntime:
- name: "sdruntime" # 必要参数,运行时的名称,不能和其他运行时重名
  namespace: "default" # 必要参数,运行时所在的Kubernetes命名空间,不建议和其他运行时放置在相同的命名空间。
  type: "sdwebui" # 必要参数,该运行时的类型,目前仅支持"sdwebui"和"comfyui"
  modelFilename: "v1-5-pruned-emaonly.safetensors" # (SD Web UI)该运行时使用的模型名称,不能和其他运行时重复。
  dynamicModel: false # (SD Web UI)该运行时是否允许动态加载模型。

您可以在 modelsRuntime 段配置多个运行时。

设置自定义镜像(可选)

如您自行构建了镜像和/或Helm Chart,则需要在对应的运行时中指定镜像,配置如下:

modelsRuntime:
- name: "sdruntime"
  namespace: "default"
  type: "sdwebui"
  modelFilename: "v1-5-pruned-emaonly.safetensors"
  dynamicModel: false
  chartRepository: "" # 可选参数,如您构建了Helm Chart,则需要填入Chart所在的地址。需要包含协议前缀 (oci:// 或 https:// )
  chartVersion: "" # 可选参数,如您构建了Helm Chart,则需要填入Chart的版本
  extraValues: # 添加以下内容
    runtime:
      inferenceApi:
        image:
          repository: <account_id>.dkr.ecr.<region>.amazonaws.com/sd-on-eks/sdwebui # Stable Diffusion 运行时镜像的地址.
          tag: latest # 镜像的Tag
      queueAgent:
        image:
          repository: <account_id>.dkr.ecr.<region>.amazonaws.com/sd-on-eks/queue-agent # Queue agent镜像的地址.
          tag: latest # 镜像的Tag

设置基于 EBS 快照的镜像缓存(可选)

如您构建了基于EBS快照的镜像缓存,则需要在对应的运行时中指定快照ID,配置如下:

modelsRuntime:
- name: "sdruntime"
  namespace: "default"
  type: "sdwebui"
  modelFilename: "v1-5-pruned-emaonly.safetensors"
  extraValues:
    karpenter: # 添加以下内容
      nodeTemplate:
        amiFamily: Bottlerocket
        dataVolume:
          volumeSize: 80Gi # 请勿修改至小于80Gi的值
          volumeType: gp3 # 请勿修改
          deleteOnTermination: true # 请勿修改
          iops: 4000 # 请勿修改
          throughput: 1000 # 请勿修改
          snapshotID: snap-0123456789 # 修改为EBS快照ID

其他详细设置(可选)

如您需要对运行时进行详细配置,请参考配置项

开始部署

完成配置后,运行以下命令进行部署:

npm install
cdk deploy  --no-rollback --require-approval never

部署一般需要 15-20 分钟。由于部署通过CloudFormation在AWS侧进行,当CDK CLI被意外关闭时,您无需重新进行部署。

下一步

在部署完成后,您会看到如下输出:

Outputs:
sdoneksStack.GetAPIKeyCommand = aws apigateway get-api-keys --query 'items[?id==`abcdefghij`].value' --include-values --output text
sdoneksStack.FrontApiEndpoint = https://abcdefghij.execute-api.us-east-1.amazonaws.com/prod/
sdoneksStack.ConfigCommand = aws eks update-kubeconfig --name sdoneksStack --region us-east-1 --role-arn arn:aws:iam::123456789012:role/sdoneksStack-sdoneksStackAccessRole
...

现在, 您可以: