Stable Diffusion AI绘画服务实例部署文档

Stable Diffusion AI绘画服务生成的图片结果(包括prompt等参数及生成的图片)需要进行存储,在Stable Diffusion服务的配置中,支持直接将图片结果存储在阿里云RDS MySQL数据库中,本文介绍如何配置Stable Diffusion服务实例并实现AI绘画。

背景信息

Stable Diffusion Web UI是一个基于Stable Diffusion的基础应用,利用gradio模块搭建出交互程序,可以在低代码GUI中立即访问Stable Diffusion。它支持文字生成图片,图片转图片,使用各种各样的模型来达到你想要的效果,还能训练您自己的专属模型。

前提条件

  • 已开通阿里云账号。

  • 确保账户余额充足。

    说明

    如果开通按量付费实例,则账户中余额需大于100元。

步骤一:创建服务实例

  1. 登录计算巢控制台,在服务目录页的服务目录页签中,找到Stable Diffusion社区版服务。

  2. 单击查看详情进入服务详情页,然后单击正式创建,进入服务实例部署页面。

    您也可以从服务商处获取服务实例部署链接。2024-05-23_16-23-52.png

  3. 在创建服务实例页面,根据界面提示填写参数,然后单击下一步:确认订单

    说明

    此处列举的为创建Stable Diffusion服务的关键参数,其他参数选择默认即可。

    参数

    说明

    取值示例

    选择模板

    Stable Diffusion服务创建时已预设了两个模板,用于不同的应用场景:

    • gpu单机版:单机部署,费用较低,但可用性较低。

    • gpu集群版:支持负载均衡配置,适用于大型服务场景,具有较高的可用性。

    本文仅作为示例,选择gpu单机版即可。

    gpu单机版

    服务实例名称

    Stable Diffusion服务实例名称,可自定义。

    sd-rds-test

    资源组和地域

    指定创建的实例所属资源组及地域。

    • 资源组默认即可,您也可以按需选择自定义的资源组。

    • 地域,不建议选择中国内地的地域,因为部分模型无法下载。

    • 资源组:账号全部资源

    • 地域:新加坡

    付费类型配置

    按量付费或包年包月,按需选择即可。

    按量付费

    ECS实例配置

    • 实例类型:即ECS实例的资源规格,按实际需要选择即可。

    • 实例密码:ECS实例的登录密码,自定义。

    • 实例类型:ecs.gn6i-c4g1.xlarge

    • 实例密码:ECSTestPW123!

    重要

    此处密码仅作为示例,请勿直接在实际业务中使用。

    登录信息

    配置完成后,访问WebUI时需要使用,请妥善保管。

    • 软件登录名:默认admin。

    • 软件登录密码:自定义。

    • 软件登录名:admin

    • 软件登录密码:SDTestPW123!

    重要

    此处密码仅作为示例,请勿直接在实际业务中使用。

    RDS插件配置

    本示例将RDS MySQL作为Stable Diffusion服务的后端存储服务,因此需要配置RDS相关配置。

    • 开启RDS插件:固定配置为开启。

    • 实例规格:即RDS实例的资源规格,按实际需要选择即可。

    • 实例存储:RDS实例的存储空间大小,单位GB,按实际需要选择即可。

    • 数据库账号名称:RDS实例的数据库账号。

    • 实例密码:RDS实例数据库账号的密码。

    • 开启RDS插件:开启

    • 实例规格:mysql.n2.medium.1

    • 实例存储:20

    • 数据库账号名称:rdsuser

    • 实例密码:RDSTestPW123!

    重要

    此处密码仅作为示例,请勿直接在实际业务中使用。

    可用区配置

    交换机可用区:任意选择即可。

    可用区A

  4. 选中我已阅读并同意《计算巢服务协议》,点击立即创建

  5. 在左侧导航栏单击服务实例管理,即可在私有部署服务页签,查看Stable Diffusion服务的部署进度。

  6. 等待状态变更为已部署后,点击操作列的详情,在概览页单击Endpoint2024-05-23_16-59-15.png

  7. 在弹出的界面中,输入创建服务实例时,设置的登录信息,即可正常访问Stable Diffusion服务。登录

步骤二:下载模型

  1. 您可以前往各模型网站,下载需要的模型。

    此处以下载CHECKPOINT模型GhostMix为例,展示下载操作流程。模型链接如下:

    https://civitai.com/api/download/models/76907
  2. 登录计算巢控制台,单击服务实例ID,进入服务实例概览页,单击运维管理页签,然后单击下载模型下载模型

  3. 在弹出的创建自定义任务对话框中,设置如下参数,然后单击下一步

    参数

    说明

    取值

    目标实例

    选择该下载模型任务的目标实例。

    手动选择已创建的实例。

    配置参数

    • 选择模型或预览图:本文以模型为例,因此选择Model。

    • 模型类型:本文使用的模型为CHECKPOINT类型。

    • 下载方式:本文使用HTTPS文件。

    • 文件来源:填写获取的模型下载链接。

    • 选择模型或预览图:Model

    • 模型类型:CHECKPOINT

    • 下载方式:HTTPS文件

    • 文件来源:https://civitai.com/api/download/models/76907

    模型或预览图存储目录

    保持默认即可。

    本示例中默认值为:/home/models/Stable-diffusion/

    自定义模型或预览图名称

    自定义。

    本示例模型命名为:test.safetensors

  4. 确认参数配置无误后,单击创建。您可以在运维管理中查看模型的下载进度。下载模型

  5. 当执行状态为成功时,即可访问WebUI,查看已下载的模型。查看已下载的模型

步骤三:AI绘画并存储到RDS MySQL数据库中

  1. 在WebUI窗口中,选中Save to DataBase。选中该选项后,即表示将生成数据持久化存储到RDS MySQL数据库中。存储到RDS MySQL数据库中

  2. 单击Generate,由AI自动根据模型生成图片,结果将自动保存在RDS MySQL中。生成图片

  3. 您可以单击Images页签,查看已生成的图片,并点击Download进行下载。

    说明

    下载图片的文件后缀名为.png格式。

    查看图片

步骤四:在RDS MySQL数据库查询

  1. 登录计算巢控制台,单击服务实例ID,进入服务实例概览页,在资源页签,筛选RDS实例后,单击RDS MySQL实例ID。筛选实例

  2. 在RDS MySQL实例基本信息页,单击右上角的登录数据库

  3. 输入创建服务步骤设置的RDS插件配置中数据库账号名称和实例密码,进入数据库。

    说明

    如果提示账号密码不正确,可以前往RDS管理控制台重置密码。更多信息,请参见重置密码

  4. AI绘画生成的图片及相关配置参数信息已经被存储在默认数据库stable_diffusiongenerated_images中。数据库

  5. 您可以使用如下命令,查询详细信息。

    说明
    • RDS MySQL数据库中不仅存储了图片Base64编码后的文本数据,还存储了prompt的所有配置信息,在复用等场景下使用非常便捷。

    • 您还可以基于存储在RDS MySQL数据库中的数据,进行统计分析,实现更多业务价值。

    SELECT * FROM generated_images;

    结果示例:结果示例示例中各字段含义如下:

    字段

    含义

    prompt

    提示文本或图像,该参数用于指定提示文本或图像,它对生成图像的主题或内容起着指导作用。通过提供一个具体的提示,模型可以根据该提示生成与提示相关的图像。

    该参数的作用是为模型提供一个引导,帮助模型理解您的意图并生成相应的图像。通过精心设计的提示,可以获得更符合期望的图像生成结果。

    您可以使用Prompt Engineering技术在生成模型中使用有针对性的提示以控制最终的生成内容。

    negative_prompt

    提示文本或图像,用于指导生成图像时避免的主题或内容。可以用于约束生成的图像,避免某些特定特征。

    steps

    扩散步数,指定生成图像的迭代次数或扩散步数。每一步都会逐渐模糊图像,使其逐渐变得难以识别。通常情况下,步数越多,生成的图像越模糊。

    seed

    随机种子,用于控制生成图像的随机性。通过设置相同的种子,可以重复生成相同的图像。

    sampler

    采样器,用于选择生成图像时使用的采样策略。常见的采样器包括ancestral(祖先采样)和ddim(逐维度重要性采样)。

    cfg_scale

    配置规模,用于调整模型的大小和生成图像的质量。较大的规模通常会产生更高质量的图像,但也需要更多的计算资源。

    size

    生成图片的分辨率大小。

    model_hash

    模型哈希,用于指定所使用的预训练模型的唯一标识符。

    model

    模型,指定所使用的预训练模型的名称或路径。

    image_base64

    生成图片的Base64编码格式。

步骤五:从数据库下载并解码图片

图片文件在RDS MySQL数据库中是以Base64编码的形式,存储为txt文本格式,如果需要转换为图片格式,则需要对文本进行解码,以还原为二进制数据。本文以Python开发语言为例,解码方式如下:

  1. 获取存储在数据库中的图片文本内容。

    说明

    您可以通过DMS连接数据库后,使用SELECT * FROM generated_images;命令查询表信息,在image_base64列,单击下载按钮,下载txt文件。关于如何通过DMS连接数据库并查询的操作,请参见RDS数据库查询

  2. 在Python开发环境中,创建项目并运行如下示例代码。

    import base64
    
    def decode_image(txt_path, output_image_path):
        with open(txt_path, 'r') as txt_file:
            encoded_image = txt_file.read()
        decoded_image = base64.b64decode(encoded_image)
        with open(output_image_path, 'wb') as image_file:
            image_file.write(decoded_image)
    
    # txt文本的路径
    txt_path = 'D:\\test.txt'
    # 生成图片的路径
    output_image_path = 'D:\\test.jpg'
    
    # 从txt文件中读取文本并解码为图片
    decode_image(txt_path, output_image_path)