文档

基于阿里云RDS MySQL数据库实现Stable Diffusion AI绘画

更新时间:

阿里云RDS MySQL数据库支持作为Stable Diffusion服务的底层存储数据库,帮助您快速部署Stable Diffusion服务,您无需再手动配置数据库,只需简单配置,即可完成服务搭建。

背景

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

说明

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

前提条件

  • 已开通阿里云账号。

  • 确保账户余额充足。

    说明

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

步骤一:创建Stable Diffusion服务

  1. 访问计算巢管理控制台,进入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!

      说明

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

    可用区配置

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

    交换机可用区

    说明

    上述为创建Stable Diffusion服务的关键参数,其他参数选择默认即可。

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

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

    image..png
  4. 等待状态变更为已部署后,点击操作列的详情,在概览页单击Endpoint

    image..png
  5. 输入创建服务步骤设置的登录信息,Stable Diffusion服务即可正常访问。

    image..png

步骤二:下载模型

  1. 您可以前往各模型网站,下载需要的模型,本文以CHECKPOINT模型GhostMix为例,获取模型的下载链接如下:

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

    image..png
  3. 创建自定义任务页面,设置如下参数后,单击下一步。

    参数

    说明

    取值

    目标实例

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

    手动选择已创建的实例。

    配置参数

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

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

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

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

    • 选择模型或预览图:Model

    • 模型类型:CHECKPOINT

    • 下载方式:HTTPS文件

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

    模型或预览图存储目录

    保持默认即可。

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

    自定义模型或预览图名称

    自定义。

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

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

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

    image..png

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

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

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

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

    说明

    下载图片的文件后缀为.png

    image..png

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

  1. 前往计算巢控制台,单击实例ID,进去实例概览页,在资源页签,筛选RDS实例后,单击RDS MySQL实例ID。

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

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

    说明

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

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

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

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

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

    SELECT * FROM generated_images;

    结果示例:

    image..png

    各字段含义如下:

    字段

    含义

    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)

相关参考

您还可以使用RDS MySQL更多高级功能来运维AIGC相关数据。了解RDS的更多信息,请参见RDS MySQL产品简介

  • 本页导读 (1)