Stable Diffusion是文本到图像的潜在扩散模型,它可以根据文本提示词生成对应的图像。Stable Diffusion模型是扩散模型的变种,可以通过逐步对随机高斯噪声进行去噪以获得感兴趣的样本。与传统生成模型相比,Stable Diffusion可以在不需要复杂训练过程或大量数据集的情况下生成真实感强、细节丰富的图像。目前该项目已经应用于多种场景,包括计算机视觉、数字艺术、视频游戏等领域。
创建ECS实例
前往实例创建页。
按照界面提示完成参数配置,创建一台ECS实例。
需要注意的参数如下,其他参数的配置,请参见自定义购买实例。
实例:Stable Diffusion模型的推理过程需要耗费大量的计算资源,运行时占用大量内存,为了保证模型运行的稳定,实例规格至少需要选择ecs.g8a.16xlarge(256 GiB内存)。
镜像:Alibaba Cloud Linux 3.2104 LTS 64位。
公网IP:选中分配公网IPv4地址,带宽计费模式选择按使用流量,带宽峰值设置为100 Mbps。以加快模型下载速度。
系统盘:Stable Diffusion的运行需要下载多个模型文件,会占用大量存储空间,为了保证模型顺利运行,建议系统盘设置为100 GiB。
添加安全组规则。
在ECS实例安全组的入方向添加安全组规则并放行22、443、7860端口(用于访问WebUI服务)。具体操作,请参见添加安全组规则。
创建完成后,在ECS实例页面,获取公网IP地址。
说明
公网IP地址用于进行AI对话时访问WebUI服务。
创建Docker运行环境
远程连接该ECS实例。
具体操作,请参见通过密码或密钥认证登录Linux实例。
安装Docker。
具体操作,请参见在Alibaba Cloud Linux 3实例中安装Docker。
创建并运行PyTorch AI容器。
龙蜥社区提供了丰富的基于Anolis OS的容器镜像,包括针对AMD优化过的PyTorch镜像,可以直接使用该镜像直接创建一个PyTorch运行环境。
以下命令首先拉取容器镜像,随后使用该镜像创建一个以分离模式运行的、名为pytorch-amd
的容器,并将用户的家目录映射到容器中,以保留开发内容。
sudo docker pull registry.openanolis.cn/openanolis/pytorch-amd:1.13.1-23-zendnn4.1
sudo docker run -d -it --name pytorch-amd --net host -v $HOME:/root registry.openanolis.cn/openanolis/pytorch-amd:1.13.1-23-zendnn4.1
部署Stable Diffusion
步骤一:安装配置模型所需软件
进入容器环境。
sudo docker exec -it -w /root pytorch-amd /bin/bash
重要
后续命令需在容器环境中执行,如意外退出,请使用以上命令重新进入容器环境。如需查看当前环境是否为容器,可以执行cat /proc/1/cgroup | grep docker
查询(有回显信息则为容器环境)。
安装部署Stable Diffusion所需的软件。
yum install -y git git-lfs wget tmux mesa-libGL gperftools-libs
启用Git LFS。
下载预训练模型需要Git LFS的支持。
git lfs install
步骤二:下载源码与模型
创建一个tmux session。
tmux
说明
下载预训练模型耗时较长,且成功率受网络情况影响较大,建议在tmux session中下载,以免ECS断开连接导致下载模型中断。
下载Stable Diffusion WebUI项目源码。
git clone -b v1.5.2 https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
下载Stable Diffusion WebUI项目源码所需依赖模型。
mkdir stable-diffusion-webui/repositories && cd $_
git clone https://github.com/Stability-AI/stablediffusion.git stable-diffusion-stability-ai
git clone https://github.com/Stability-AI/generative-models.git generative-models
git clone https://github.com/crowsonkb/k-diffusion.git k-diffusion
git clone https://github.com/sczhou/CodeFormer.git CodeFormer
git clone https://github.com/salesforce/BLIP.git BLIP
将Stable Diffusion所需的依赖模型切换到指定分支,以保证生成结果的稳定。
git -C stable-diffusion-stability-ai checkout cf1d67a6fd5ea1aa600c4df58e5b47da45f6bdbf
git -C generative-models checkout 5c10deee76adad0032b412294130090932317a87
git -C k-diffusion checkout c9fe758757e022f05ca5a53fa8fac28889e4f1cf
git -C CodeFormer checkout c5b4593074ba6214284d6acd5f1719b6c5d739af
git -C BLIP checkout 48211a1594f1321b00f14c9f7a5b4813144b2fb9
下载Stable Diffusion预训练模型。
cd ~ && mkdir -p stable-diffusion-webui/models/Stable-diffusion
wget "https://www.modelscope.cn/api/v1/models/AI-ModelScope/stable-diffusion-v1-5/repo?Revision=master&FilePath=v1-5-pruned-emaonly.safetensors" -O stable-diffusion-webui/models/Stable-diffusion/v1-5-pruned-emaonly.safetensors
mkdir -p ~/stable-diffusion-webui/models/clip
git clone --depth=1 https://gitee.com/modelee/clip-vit-large-patch14.git ~/stable-diffusion-webui/models/clip/clip-vit-large-patch14
修改脚本文件,使Stable Diffusion运行时从本地调用ViT多模态模型。
sed -i "s?openai/clip-vit-large-patch14?${HOME}/stable-diffusion-webui/models/clip/clip-vit-large-patch14?g" ~/stable-diffusion-webui/repositories/stable-diffusion-stability-ai/ldm/modules/encoders/modules.py
步骤三:部署运行环境
更换pip下载源。
在安装依赖包之前,建议您更换pip下载源以加速安装。
创建pip文件夹。
mkdir -p ~/.config/pip
配置pip安装镜像源。
cat > ~/.config/pip/pip.conf <<EOF
[global]
index-url=http://mirrors.cloud.aliyuncs.com/pypi/simple/
[install]
trusted-host=mirrors.cloud.aliyuncs.com
EOF
安装Python运行依赖。
pip install cython gfpgan open-clip-torch==2.8.0 httpx==0.24.1
pip install git+https://github.com/openai/CLIP.git@d50d76daa670286dd6cacf3bcd80b5e4823fc8e1
设置环境变量OMP_NUM_THREADS
和GOMP_CPU_AFFINITY
。
ZenDNN运行库需要针对硬件平台显式设置环境变量OMP_NUM_THREADS
和GOMP_CPU_AFFINITY
。
cat > /etc/profile.d/env.sh <<EOF
export OMP_NUM_THREADS=\$(nproc --all)
export GOMP_CPU_AFFINITY=0-\$(( \$(nproc --all) - 1 ))
EOF
source /etc/profile
运行脚本,自动化部署Stable Diffusion的运行环境。
cd ~/stable-diffusion-webui
venv_dir="-" ./webui.sh -f --skip-torch-cuda-test --exit
步骤四:进行AI对话
执行如下命令,开启WebUI服务。
export LD_PRELOAD=/usr/lib64/libtcmalloc.so.4
export venv_dir="-"
python3 launch.py -f --skip-torch-cuda-test --skip-version-check --no-half --precision full --use-cpu all --listen
当出现如下信息时,表示WebUI服务启动成功。
在浏览器地址栏输入http://<ECS公网IP地址>:7860
,进入Web页面。
在prompt对话框中,输入对话内容(仅支持英文Prompt,例如:Urban portrait of a skateboarder in mid-jump, graffiti walls background, high shutter speed
),单击Generate,即可开始AI对话。
说明
您也可以输入其他Prompt,来挖掘Stable Diffusion更多能力。
总结
### Stable Diffusion模型与应用部署指南#### 一、Stable Diffusion模型概述
Stable Diffusion是基于文本到图像的潜在扩散模型,具有高度的生成真实性及细节丰富的图像能力。相比传统生成模型,Stable Diffusion在不依赖大量数据集或复杂训练过程的情况下,仍能生成令人印象深刻的图像作品。目前,已广泛应用于计算机视觉、数字艺术及视频游戏等领域。
#### 二、部署流程
##### 1. 创建ECS实例
- **实例规格**:因Stable Diffusion推理过程需大量计算资源,内存至少需256 GiB,推荐选择ecs.g8a.16xlarge规格。
- **镜像选择**:Alibaba Cloud Linux 3.2104 LTS 64位。
- **公网IP**:为加快模型下载,选择按使用流量计费,带宽峰值设为100 Mbps。
- **系统盘**:考虑将要下载了多个模型文件,建议设置系统盘为100 GiB。
- **添加安全组规则**:放行22、443、7860端口以便访问WebUI服务。
##### 2. 创建Docker运行环境
- **远程连接ECS实例**:通过密钥或密码认证登录Linux实例。
- **安装Docker**:依据Alibaba Cloud Linux 3实例的安装方法进行安装。
- **创建PyTorch AI容器**:使用提供的PyTorch镜像创建名为`pytorch-amd`的Docker容器,并映射家目录到容器中以便保留开发内容。
##### 3. 部署Stable Diffusion
###### 步骤一:安装配置所需软件
- 进入Docker容器内部环境。
- 安装必要软件包(如git、wget等)。
- 启用Git LFS以便于下载预训练模型。
###### 步骤二:下载源码与模型
- 使用tmux避免网络断开导致下载中断,下载Stable Diffusion WebUI项目源码及其所需依赖模型与预训练模型。
###### 步骤三:部署运行环境
- 更换pip的下载源以加速依赖包的安装。
- 配置并启动ZenDNN运行库所需的环境变量。
- 使用脚本自动化部署Stable Diffusion运行环境。
###### 步骤四:进行AI对话
- 执行命令开启WebUI服务。
- 通过浏览器访问`http://
#### 总结
从创建ECS实例到部署Stable Diffusion,整个流程涉及一系列的配置与操作。但完成部署后,便可通过简单的文本输入,让Stable Diffusion生成充满创造力和想象力的图像作品。无论是对于专业人士还是爱好者来说,这都是一个探索和创作的新途径。