本文介绍如何使用阿里云倚天云服务器(g8y)搭建Stable Diffusion模型,并基于fastsdcpu框架实现文本生成图片。
背景信息
稳定扩散(Stable Diffusion,简称SD)是一种人工智能模型,其工作原理是通过学习逐步将噪声数据转化为有意义的图像数据。这一过程包括两个主要阶段:首先是噪声化过程,即将真实图像逐步添加噪声直至变成纯噪声;然后是去噪过程,模型学习如何逆转这一过程,从噪声中恢复出清晰的图像。Stable Diffusion在图像生成领域取得了显著的成就,能够根据用户提供的文本描述生成高质量、高分辨率的图像。
倚天CPU实例g8y采用阿里云自研倚天710 ARM架构CPU,支持使用SVE指令加速AI任务,并针对SD模型提供优化的容器版本,充分发挥倚天实例的性能优势,对于不同尺寸的图片生成,性能平均提升约60%。
创建ECS实例
前往实例创建页。
按照界面提示完成参数配置,创建一台ECS实例。
需要注意的参数如下,其他参数的配置,请参见自定义购买实例。
实例:Stable Diffusion模型的推理过程需要耗费大量的计算资源,运行时占用大量内存,为了保证模型运行的稳定,实例规格的内存至少为16 GiB,本文选择ecs.g8y.4xlarge,您也可以根据需要,选择其他实例规格。
镜像:Alibaba Cloud Linux 3.2104 LTS 64位 ARM版。
公网IP:选中分配公网IPv4地址,带宽计费模式选择按使用流量,带宽峰值设置为100 Mbps。以加快模型下载速度。
添加安全组规则。
在ECS实例安全组的入方向添加安全组规则并放行22、443、7860端口(用于访问WebUI服务)。具体操作,请参见添加安全组规则。
创建完成后,在ECS实例页面,获取公网IP地址。
说明公网IP地址用于进行AI对话时访问WebUI服务。
创建Docker运行环境
远程连接该ECS实例。
具体操作,请参见通过密码或密钥认证登录Linux实例。
安装并启动Docker。
具体操作,请参见在Alibaba Cloud Linux 3实例中安装Docker。
获取并运行倚天优化后的容器。
sudo docker pull acr-yu-yitian-tf-20240117-registry.cn-hangzhou.cr.aliyuncs.com/acr_hz_tf/pytorch_ptg_opt:v2.2.0 sudo docker run --name fastsdcpu --network host --privileged=true -d -v /mnt/:/mnt/ -it acr-yu-yitian-tf-20240117-registry.cn-hangzhou.cr.aliyuncs.com/acr_hz_tf/pytorch_ptg_opt:v2.2.0 /bin/bash sudo docker exec -it fastsdcpu /bin/bash
重要后续操作都需要在容器中运行,如果退出了容器,可以通过以下命令启动并再次进入容器的Shell环境。
sudo docker start fastsdcpu sudo docker exec -it fastsdcpu /bin/bash
准备模型数据
在容器中安装依赖软件。
yum install -y g++ git wget tar
创建并进入模型数据目录。
mkdir /root/stable-diffusion/ cd /root/stable-diffusion/
下载dreamshaper-8模型和lcm-lora-sdv1-5模型到/root/stable-diffusion/路径中。
wget https://m-media-oss.oss-cn-hangzhou.aliyuncs.com/models/dreamshaper-8.tar.gz wget https://m-media-oss.oss-cn-hangzhou.aliyuncs.com/models/latent-consistency.tar.gz tar -zxvf dreamshaper-8.tar.gz tar -zxvf latent-consistency.tar.gz
下载v1.0.0-beta.23版本fastsdcpu项目代码。
下载v1.0.0-beta.23版本fastsdcpu,并进入项目目录。
git clone https://github.com/rupeshs/fastsdcpu.git -b v1.0.0-beta.23 cd fastsdcpu
在fastsdcpu目录中,安装依赖包。
python -m venv env pip install transformers==4.36.0 accelerate==0.25.0 peft==0.7.1 pydantic==2.4.2 openvino==2023.2.0 optimum==1.14.0 optimum-intel==1.12.1 onnx==1.15.0 onnxruntime==1.16.1 gradio==3.39.0
将dreamshaper-8模型路径加入fastsdcpu的配置文件
configs/stable-diffusion-models.txt
中。sed -i '1i/root/stable-diffusion/dreamshaper-8' configs/stable-diffusion-models.txt
将lcm-lora-sdv1-5模型路径加入fastsdcpu的配置文件
configs/lcm-lora-models.txt
中。sed -i '1i/root/stable-diffusion/latent-consistency/lcm-lora-sdv1-5' configs/lcm-lora-m
启动并访问WebUI服务
依次执行以下命令,启动WebUI服务。
cd /root/stable-diffusion/fastsdcpu export TRANSFORMERS_OFFLINE=1 # 使用本地模型 export GRADIO_SERVER_NAME=0.0.0.0 # 设置监听IP python src/app.py -w --use_offline_model --share # 启动WebUI
WebUI服务成功启动后,回显信息类似如下所示。
在浏览器地址栏输入
http://<ECS公网IP地址>:7860
,进入Web页面。单击Mode区域中的LCM-LoRA页签,然后单击Models,在LCM LoRA model下拉框中选择配置好的lcm-lora-sdv1-5路径,在LCM LoRA base model下拉框中选择配置好的dreamshaper-8路径。
在Generation Settings页签中设置图片生成参数。
在Text to Image中输入图片描述,点击Generate即可生成图片。
在命令行界面可查看图片生成时间。如下图所示,4步生成512*512的图片,仅需4.99秒。