stable-diffusion服务快速启动文档(GPU版)
概述
Stable Diffusion Web UI 是一个基于 Stable Diffusion 的基础应用,利用 gradio 模块搭建出交互程序,可以在低代码 GUI 中立即访问 Stable Diffusion。它支持文字生成图片,图片转图片,使用各种各样的模型来达到你想要的效果,还能训练自己的专属模型。本文向您介绍如何在阿里云上快速的启动stable-diffusion服务进行AI绘画。
启动流程
步骤
1.登录阿里云控制台,进入Stable Confusuion服务创建界面,根据界面提示,填写相关参数(软件登录名及登录密码很重要,后面访问WebUI需要用到),填写完成点击确认订单(确保账号有余额,推荐选择按量付费方式,使用完将实例释放掉或到ECS控制台选择节省停机模式进行关机以节省成本)。
(可选项)若想要将生成图片的结果(包括参数及生成的图片)存储到RDS,可以开启RDS插件功能。
参数说明
您在创建服务实例的过程中,需要配置服务实例信息。下文介绍stable-diffusion服务实例输入参数的详细信息。
参数组 | 参数项 | 示例 | 说明 |
---|---|---|---|
服务实例名称 | test | 实例的名称 | |
地域 | 华东1(杭州) | 选中服务实例的地域,建议就近选中,以获取更好的网络延时。 | |
可用区配置 | 部署区域 | 可用区I | 地域下的不同可用区域 |
付费类型配置 | 付费类型 | 按量付费 或 包年包月 | |
ECS实例配置 | 实例类型 | ecs.gn6i-c4g1.xlarge | 实例规格,可以根据实际需求选择 |
ECS实例配置 | 实例密码 | 设置实例密码。长度8~30个字符,必须包含三项(大写字母、小写字母、数字、()`~!@#$%^&*-+={}[]:;'<>,.?/ 中的特殊符号) | |
登录信息 | 软件登录名 | admin | 设置软件登录名,默认为admin |
登录信息 | 软件登录名密码 | 设置软件登录密码 | |
网络配置 | 专有网络IPv4网段 | 192.168.0.0/16 | VPC的ip地址段范围 |
网络配置 | 交换机子网网段 | 192.168.0.0/24 | 交换机子网网段 |
2.勾选我已阅读并同意《计算巢服务协议》,点击"立即创建"按钮。
3.查看部署进度。
点击去列表页查看,可以看到刚刚创建的服务实例以及服务部署进度。
4.访问stable-diffusion
等待状态变为"已部署"后,点击详情,进入到对应的服务实例后,可以在页面上获取到Endpoint以访问服务。
点击Endpoint后面的链接,输入第1步设置的软件登录名及密码
完成验证后即可访问:
下载模型
- 以某模型网站提供的模型为例,首先登录此网站,找到自己想要下载的模型(预览图左上角显示模型的类型)
- 点击一个模型预览图进入详情页,找到Download按钮点击右键,复制链接地址:
- 在计算巢控制台点击运维管理,点击“下载模型”,输入相关参数(选择模型或预览图、模型类型、下载方式、文件类型,输入模型名称):
CHECKPOINT模型示例:
Lora模型示例:
注意:CHECKPOINT、LORA、VAE三种方式不需要输入存储目录,其他模型可在模型类型选择“OTHER”, 自行修改文件存储目录:
参数输入完成后,点击下一步
4.点击创建,开始下载
等待下载完成(等待过程中也可以继续下载其他模型),当执行状态变为成功,表示已经下载完成
5.此时可以登录到WebUI加载下载的模型
CHECKPOINT模型示例:
点击上面的刷新按钮,就可以看到我们刚刚下载的CHECKPOINT模型了
Lora模型:
点击右面Lora按钮,然后点击Refresh,此时就可以看到我们刚刚下载的Lora模型了
在这里我们可以看到,直接下载模型的没有预览图的,此时可以通过上述下载方式自行上传一张图片到模型文件中,这里以上传本地文件的Lora模型预览图为例。
点击确定、创建,等待执行状态变为成功。再次点击Refresh,可以看到,预览图也已经加载出来啦!
高级功能
API访问
通过计算巢创建的Stable Diffusion默认开启了API访问,您可以通过API调用来更好地集成我们的服务。
通过上述步骤4中获取的Endpoint+/docs# 可以看到所有可访问的API列表,如访问 http://48.xxx.xx.163:8080/docs# 可以看到
以下是一个通过Python调用Stable Diffusion API的示例:
import requests
import io
import base64
from PIL import Image, PngImagePlugin
if __name__ == '__main__':
url = "http://48.xxx.xx.163:8080"
payload = {
"prompt": "puppy dog",
"steps": 5
}
token = "admin:password"
encoded_token = base64.b64encode(token.encode("utf-8")).decode("utf-8")
headers = {
"Content-Type": "application/json",
"Authorization": f'Basic {encoded_token}'
}
response = requests.post(url=f'{url}/sdapi/v1/txt2img', json=payload, headers=headers)
r = response.json()
for i in r['images']:
image = Image.open(io.BytesIO(base64.b64decode(i.split(",", 1)[0])))
png_payload = {
"image": "data:image/png;base64," + i
}
response2 = requests.post(url=f'{url}/sdapi/v1/png-info', json=png_payload)
pnginfo = PngImagePlugin.PngInfo()
pnginfo.add_text("parameters", response2.json().get("info"))
image.save('output.png', pnginfo=pnginfo)
更多API访问信息可查看API访问向导了解
通过RDS保存生成结果
前提:需要保证快速启动步骤1中开启了RDS插件
- 在webui界面勾选 Save to DB(勾选即代表需要将生成结果存储到RDS中)
- 指定数据库名 Database Name(默认值 stable_diffusion),指定表名 Table Name(默认 generated_images)
- 点击 Generate,图片生成完毕后,结果自动存储至 RDS
好了,现在可以开启你的AI绘画之旅了,祝大家绘图愉快!
其他
请访问stable-diffusion使用文档了解如何使用。