AIGC初体验:部署Stable Diffusion玩转AI绘画(CPU版)
1. 创建实验资源
开始实验之前,您需要先创建实验相关资源。
- 在实验室页面,单击创建资源。
- (可选)在实验室页面左侧导航栏中,单击云产品资源列表,可查看本次实验资源相关信息(例如IP地址、用户信息等)。
说明:资源创建过程需要1~3分钟。完成实验资源的创建后,您可以在 云产品资源 列表查看已创建的资源信息,例如:子用户名称、子用户密码、AK ID、AK Secret、资源中的项目名称等。
2. 安装 Stable Diffusion WebUI
Stable Diffusion 是一个 Python 命令行程序,我们直接使用需要对它的命令和参数有详尽的了解,有一定学习成本。好在,有一个 Stable Diffusion WebUI 的开源项目,可以直接将 Stable Diffusion 的操作通过网页透出,让我们轻松通过 Web 页面就能使用 Stable Diffusion 生成图片。所以,我们选择安装和使用 Stable Diffusion WebUI 来完成实验。
- 安装基础工具。
Stable Diffusion WebUI的安装与运行需要使用到一些工具软件,我们需要先通过Yum安装它们。
执行如下命令,安装基础工具。
sudo yum install -y git conda mesa-libGL
- 初始化conda环境。
Conda是一个优秀的跨平台、跨语言包管理工具。同时,它的环境隔离功能也能很好的帮助我们屏蔽服务器间基础设施的不同,为我们提供一个干净、统一的程序运行环境。
依次执行如下命令,在Bash中初始化Conda,同时创建并激活名为aigc的虚拟环境。
sudo bash -c "conda init bash" && bash conda create -y -n aigc python=3.10.6 conda activate aigc
💡注意:之后的操作都将基于aigc这个虚拟环境,如果你切换了Terminal或者不小心退出了环境,可以再次执行conda activate aigc命令回到aigc虚拟环境中。
- 拉取Stable Diffusion WebUI代码。
3.1 执行如下命令,从Github上获取最新的Stable Diffusion WebUI代码。
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
💡说明:由于Github访问存在不稳定性,如果从上述地址clone失败,可以使用我们在Gitee上为大家准备的镜像项目,采用如下命令:
git clone https://gitee.com/developer-aliyun-com/stable-diffusion-webui.git
3.2 项目下载完成后,我们将Web Terminal的操作目录设置为项目所在目录。
cd stable-diffusion-webui
- 安装项目依赖。
Stable Diffusion的运行还需要许多依赖包,执行如下命令,把它们都安装到Conda提供的虚拟环境中。
conda install -y pytorch torchvision torchaudio cpuonly -c pytorch pip3 install opencv-python-headless gfpgan open-clip-torch xformers pyngrok clip-anytorch pip3 install -r requirements_versions.txt
- 启动Stable Diffusion WebUI。
当一切准备就绪,执行如下命令,启动Stable Diffusion WebUI。
python launch.py --listen --lowvram --no-half --skip-torch-cuda-test
💡说明:在启动时,Stable Diffusion WebUI会根据需要下载一些必要模型数据,另外,加载模型也需要花费一些时间,所以我们现在要做的就是耐心等待。当Terminal 中显示出Running on local URL: http://0.0.0.0:7860字样,就表示程序已经启动并对外提供服务了。
3. 使用 Stable Diffusion WebUI 生成图片
- 获得Stable Diffusion WebUI访问地址。
当Stable Diffusion WebUI启动后,会对外监听7860端口。我们需要使用http://(ECS公网地址):7860来访问程序。
说明:这里的ECS公网地址需要替换成实验室为大家分配的可以访问ECS的公网IP地址。我们可以在实验室页面左侧导航栏中,单击云产品资源列表查看本次实验资源所分配的ECS公网地址。
💡另外,你还可以使用Web Terminal右上角的+号新建一个Terminal标签页,并在其中执行以下命令直接获得Stable Diffusion WebUI的访问地址:
echo "http://"$(curl -s ifconfig.me)":7860/"
- 访问Stable Diffusion WebUI。
接着,让我们打开浏览器,输出刚刚获得的访问地址,就可以进入Stable Diffusion WebUI的操作界面了。
- 使用文字生成图片。
生成图片的操作方式非常简单,只需要在左侧的Prompt输出框中填入提示词,之后点击右侧的Generate按钮即可。提示词就是生成图片的依据,既可以是描述需要生成内容的词,如:girl, sunset, forest等;也可以是用于是描述图像属性的词,如:best quality, beautiful, masterpiece等。我们甚至可以通过提示词选择图片生成的视角、光线、画风;人物的姿势、着装、表情;背景的内容等。
图片生成的速度根据机器配置的不同有所差异。在图片生成的过程中,我们可以在页面上看到生成过程的中间图片逐渐变得清晰。同时,也可以通过进度条直观的了解图片生成的进度和预估剩余时间。
4. 学习使用 LoRA 模型
除了使用基础模型生成图片外,我们还可以使用 LoRA 模型(Low-Rank Adaptation of Large Language Models)进行图片的生成。LoRA 直译为大语言模型的低阶适应,这是微软的研究人员为了解决大语言模型微调而开发的一项技术。LoRA 能够冻结预训练好的模型权重参数,然后在每个 Transformer 块里注入可训练的层,由于不需要对模型的权重参数重新计算梯度,从而大大减少了需要训练的计算量。从实际效果来说,LoRA 模型可以帮助我们生成指定风格、面孔、动作等要求的图片。
- 使用LoRA模型。
1.1 打开WebUI界面,单击Generate按钮下方的扩展配置图标按钮,之后选择Lora标签,就能看到我们可以使用的LoRA模型了。
在实验场景中,已经准备了数个比较热门的LoRA模型,你可以尝试使用它们生成不同风格的图片。
1.2 当我们单击某个LoRA模型后,Prompt中会加入这些内容。最后的数字代表着LoRA模型的权重,默认为 1。接着,我们输入提示词,再单击 Generate,就可以使用LoRA模型将文字转化为图片了。
- 获得更多的LoRA模型。
如果觉得现有的LoRA模型还不符合自己的审美,我们可以从Civitai https://civitai.com/tag/lora等网站里找到许多其他爱好者预先训练好的LoRA模型,我们只需要将这些模型下载到stable-diffusion-webui/models/Lora目录内(在本实验中,需要放置在/root/models/Lora目录内),接着我们就可以在Stable Diffusion WebUI中使用它们。如果是新下载的模型没有出现在页面上,可以单击Refresh重新载入它们。
实验地址:https://developer.aliyun.com/adc/scenario/13c7c3f7e06042578862c25b6ce12a80