Stable Diffusion是一种AI模型,它经过训练可以逐步对随机高斯噪声进行去噪以生成所需要的图像,目前可以在国内云服务器商阿里云提供的GPU云服务器上进行部署。本文着重为大家介绍使用阿里云GPU云服务器搭建Stable Diffusion模型,并基于ControlNet框架,快速生成特定物体图片。
本文涉及到的阿里云云服务:GPU云服务器
阿里云GPU云服务器是提供GPU算力的弹性计算服务,具有超强的计算能力,服务于深度学习、科学计算、图形可视化、视频处理多种应用场景。
阿里云GPU云服务器购买方案推荐
《点击进入官网选购》
一、创建阿里云GPU云服务器
之前已经为大家介绍了通过控制创建的方法(适用于Windows系统),本文为大家介绍FastGPU方式(适用于Linux系统或macOS系统)。
FastGPU是一套阿里云推出的人工智能计算极速部署工具,用户可以通过其提供的便捷的接口和自动工具,实现人工智能训练和推理任务在阿里云IaaS资源上的快速部署。
1、登录客户端,用户的ECS实例、本地机器、阿里云Cloud Shell工具等均可以作为客户端安装FastGPU来构建人工智能计算任务。
2、执行以下命令,安装FastGPU软件包。
pip3 install --force-reinstall https://ali-perseus-release.oss-cn-huhehaote.aliyuncs.com/fastgpu/fastgpu-1.1.5-py3-none-any.whl
3、执行以下命令,配置环境变量。
export ALIYUN_ACCESS_KEY_ID=**** # 填入您的AccessKey ID
export ALIYUN_ACCESS_KEY_SECRET=**** # 填入您的AccessKey Secret
export ALIYUN_DEFAULT_REGION=cn-beijing # 填入您希望使用的地域(Region)
4、执行以下命令,创建ECS实例。
本示例以创建1台实例规格为ecs.gn7i-c32g1.32xlarge的ECS实例为例,镜像类型为aiacc_train_solution。
fastgpu create --name aiacc_solution -i ecs.gn7i-c32g1.32xlarge --machines 1 --image_type aiacc_train_solution
5、执行以下命令,将本机公网IP的22端口添加到默认安全组中。
fastgpu addip -a
6、执行以下命令,开放7860端口。
fastgpu addip {aiacc_solution} 0.0.0.0/0 7860
以下命令示例表示向所有网段开放7860端口,开放后所有公网IP均可访问您的WebUI。您可以根据需要将0.0.0.0/0改为特定网段,仅允许部分IP地址访问WebUI。
fastgpu addip {aiacc_solution} 0.0.0.0/0 7860
7、执行以下命令,通过SSH连接创建的ECS实例。
fastgpu ssh task0.aiacc_solution
通过task{N}.aiacc_solution命令可以连接到创建的ECS实例,task{N}的N表示实例序号,0表示第1台实例,以此类推。您可以通过task{N}的N表示实例序号,0表示第1台实例,以此类推。fastgpu ls命令获取实例序号。
相关推荐:《如何购买阿里云服务器实例》
二、配置模型
1、访问ECS控制台>实例。
2、在页面左侧顶部,选择目标资源所在的资源组和地域。地域
3、单击目标实例ID进入实例详情页,单击远程连接。
4、在弹出的远程连接对话框中,单击通过Workbench远程连接对应的立即登录。
5、下载1.0.13版本sd_dreambooth_extension项目代码到/root/stable-diffusion-webui/extensions目录。
a.执行以下命令,切换到/root/stable-diffusion-webui/extensions目录。
cd /root/stable-diffusion-webui/extensions
b.访问sd_dreambooth_extension。
c.切换到1.0.13版本。
d.下载1.0.13版本sd_dreambooth_extension项目代码。
6、依次执行以下命令,下载文件。
wget https://aiacc-training.oss-cn-hangzhou.aliyuncs.com/sd_utils/train_dreambooth.py -O /root/stable-diffusion-webui/extensions/sd_dreambooth_extension/dreambooth/train_dreambooth.py
wget https://aiacc-training.oss-cn-hangzhou.aliyuncs.com/sd_utils/utils.py -O /root/stable-diffusion-webui/extensions/sd_dreambooth_extension/dreambooth/utils/utils.py
wget https://aiacc-training.oss-cn-hangzhou.aliyuncs.com/sd_utils/image_utils.py -O /root/stable-diffusion-webui/extensions/sd_dreambooth_extension/dreambooth/utils/image_utils.py
wget https://aiacc-training.oss-cn-hangzhou.aliyuncs.com/sd_utils/log_parser.py -O /root/stable-diffusion-webui/extensions/sd_dreambooth_extension/helpers/log_parser.py
7、依次执行以下命令,启动WebUI服务。
cd /root/stable-diffusion-webui
export HF_ENDPOINT=https://hf-mirror.com
source /root/stable-diffusion-webui/venv/bin/activate
python ./launch.py --listen --port 7860 --enable-insecure-extension-access --disable-safe-unpickle --xformers
WebUI服务成功启动后,回显信息类似如下所示。
8、在ECS实例页面,获取ECS实例的公网IP地址。
9、在浏览器中输入http://<ECS实例公网IP地址>:7860,访问WebUI。
三、利用阿里云GPU云服务器快速生成特定物体图片
仅使用预训练的权重的模型,只能生成与预训练数据集相似的图片。若您希望生成自定义的图片,可以通过Finetune自定义物体图片,使得模型生成所对应物体的图片。
1、创建模型权重。
a.单击DreamBooth页签,在Model区域,单击Create。
b.输入待生成的模型权重名称,例如:aliyun_example,并选择创建模型权重的来源v1-5-pruned-emaonly.safetensors[6ce0161689])。
c.单击Create Model,创建模型权重。
等待模型权重创建完成后,在Output区域会显示Checkpoint successfully extracted to/root/stable-diffusion-webui/models/dreambooth/aliyun_example/working。
2、设置训练参数。
a.单击Select,选择生成的模型权重aliyun_example。
b.选择Input区域,在Settings页签下,选中Use LORA,并调整训练参数。
- Training Steps Per Image(Epochs):指训练的迭代次数。默认为100,可根据实际需要调整。
- Batch Size:训练数据的大小。默认为1,一般设置为1或2。
c.滚动鼠标将页面下拉,取消选中Gradient Checkpointing。
d.在Optimizer中选择Torch AdamW,Mixed Precision选择fp16或者no,Memory Attention选择xformers或者no,当Mixed Precision选择fp16时,才能选择xformers。
3、选择训练数据集。
a.在Input区域的Concepts页签下,在Dataset Directory中填入云服务器ECS中的数据集路径。
您可以将10张以内同一物体的图片上传到指定路径。
本示例中上传图片的路径为/root/stable-diffusion-webui/test_imgs。
b.在Training Prompts和Sample Prompts区域,配置以下参数。
- Instance Prompt:输入对数据集物体的描述,格式例如:a <物体名称> <物体类别>。本示例输入
a yunxiaobao doll
。 - Class Prompt:输入数据集物体的类别,格式例如:a <物体类别>,本示例输入
a doll
。 - Sample Image Prompt:输入和Instance Prompt参数一致的内容。本示例输入a yunxiaobao doll。
4、单击Train,在弹出的对话框中单击确定。
训练大约需要3分钟,请您耐心等待。训练完成后,在Output区域显示类似如下图片。
Finetune完成后,用户可以开始生成特定图片了。
5、单击txt2img,在Prompt框中输入a yunxiaobao doll wearing a red hat。
6、单击右侧的Generate,即可生成类似下图的图片。
以上就是本文为大家介绍的使用阿里云GPU云服务器搭建Stable Diffusion模型,并基于ControlNet框架,快速生成特定物体图片的完整流程,有需要的朋友可以了解一下。