曂沅仴駦 发表于 2024-8-13 13:45:46

小白上手AIGC-基于PAI-DSW部署Stable Diffusion文生图Lora模子

前言

在上一篇博文小白上手AIGC-基于FC部署stable-diffusion 中,说到基于函数计算应用模板部署AIGC文生图应用,部署后实验的参数比较局限,可选参数不多,因此不太能更好的深入体验AIGC,这一篇博文我们部署一款基于PAI-DSW部署Stable Diffusion文生图Lora模子,盼望可以达到我们想要的结果。拭目以待…
资源准备

开启体验服务

再开始实验之前,我们必要先开通交互式建模PAI-DSW 的服务,趁着阿里云推出的免费试用的机会,赶快来体验吧,试用中央地址:阿里云免费试用 找到呆板学习平台PAI的种别,点击【立即试用】
https://img-blog.csdnimg.cn/direct/cb0836828b3348dba566fbaa0f4ab135.png
开通交互式建模PAI-DSW服务之后,必要创建默认工作空间,
创建工作空间

创建默认工作空间,官方文档地址:开通并创建默认工作空间,比如选择地域杭州
https://img-blog.csdnimg.cn/direct/ee0cf3e5a26f4232952f0678edf17f70.png
点击【开通PAI并创建默认工作空间】,完成授权及勾选利用
https://img-blog.csdnimg.cn/direct/c69c4673bf984550b7194b5fa20ac612.png
点击【确认开通并创建默认工作空间】完成默认工作空间的创建。
部署服务

回到PAI控制台首页,可以在工作空间列表中看到我们刚才创建的默认工作空间信息,
https://img-blog.csdnimg.cn/direct/dda115480327479894f096b7dd8672ce.png
在控制台选择菜单【交互式建模(DSW)】
https://img-blog.csdnimg.cn/direct/da6ac43c9d664929a64ba92004ad4c5e.png
创建DSW实例

这里会默认选中我们刚才创建的工作空间,点击【进入DSW】
https://img-blog.csdnimg.cn/direct/ac5be1a0408d4545884347f7b0907235.png
点击【创建实例】
https://img-blog.csdnimg.cn/direct/c86df3596e864e8b91f248bd97edae0c.png
输入实例名称,点击tab 【GPU规格】,选择规格【ecs.gn7i-c8g1.2xlarge】
https://img-blog.csdnimg.cn/direct/b872fe4795ae4b4790551f2e390d3e0d.png
继续选择镜像【stable-diffusion-webui-env:pytorch1.13-gpu-py310-cu117-ubuntu22.04】点击【下一步】
https://img-blog.csdnimg.cn/direct/1ea3da606e3a45a5b3f0e617ec3d5552.png
确认完信息之后点击【创建实例】
https://img-blog.csdnimg.cn/direct/92af2bde357c44b5b443aeafbf14a002.png
安装Diffusers

下载Diffusers开源库并安装,为后续下载stable-diffusion-webui开源库做准备。
点击【打开】
https://img-blog.csdnimg.cn/direct/4836d8dee5bb491698fdd445763aea4f.png
Notebook,选择【Python3】如图
https://img-blog.csdnimg.cn/direct/f2df363576bd45518b9a2b2141c15dae.png
输入命令下载Diffusers开源库
! git clone https://github.com/huggingface/diffusers
下载开源库过程中,假如遇到超时的情况可以再次实行下载即可
https://img-blog.csdnimg.cn/direct/895ad71b879b4a6c9985dc1c2821645d.png
验证一下是否安装成功
import diffusers
https://img-blog.csdnimg.cn/direct/27f34b8d588646e8ba87be846f8e5f6f.png
设置accelerate,选择Terminal输入设置命令
accelerate config
确认之后,通过键盘上下键选中This machine并确认
https://img-blog.csdnimg.cn/direct/6c5972cad6604709888027ca9cd5312f.png
然后在选择multi-GPU
https://img-blog.csdnimg.cn/direct/1a15d7ac949f4dca83c8d55f8401568b.png
选中之后确认,后面的一次按截图的内容选择即可
https://img-blog.csdnimg.cn/direct/401984dafbdc4cad80d57947ea768395.png
最后选中fp16 点击确认
https://img-blog.csdnimg.cn/direct/c15fe736986941a2b28ce19f4f315ff6.png
此时可以看到accelerate设置完成了。下面继续回到python3页面安装文生图算法相干依赖库
! cd diffusers/examples/text_to_image && pip install -r requirements.txt
https://img-blog.csdnimg.cn/direct/a4ce3bf011574ae088795f962004ca15.png
下面开始下载stable-diffusion-webui开源库,实行命令
! git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git && \

cd stable-diffusion-webui && \

git checkout a9fed7c364061ae6efb37f797b6b522cb3cf7aa2

! cd stable-diffusion-webui && mkdir -p repositories && cd repositories && \

git clone https://github.com/sczhou/CodeFormer.git
下载过程中假如遇到这种情况,再次实行以下命令就可以了
https://img-blog.csdnimg.cn/direct/d7adfbaa5b724c1e92d315cf93e56f6d.png
最后下载完成。继续下载示例数据集,后续会使用该数据集举行模子训练。实行如下命令
! wget http://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/EasyCV/datasets/try_on/cloth_train_example.tar.gz && tar -xvf cloth_train_example.tar.gz
! wget http://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/EasyCV/datasets/try_on/train_text_to_image_lora.py
数据集下载完成之后可以看到
https://img-blog.csdnimg.cn/direct/37f395007af542488f6bf6664328f323.png
查察一下示例服装,实行命令
from PIL import Image
display(Image.open("cloth_train_example/train/20230407174450.jpg"))
实行结果可以看到
https://img-blog.csdnimg.cn/direct/bae845241ce04785b8aa8259e6552fa6.png
继续下载预训练模子并转化成diffusers格式,实行命令
! cd stable-diffusion-webui/models/Stable-diffusion && wget -c https://huggingface.co/naonovn/chilloutmix_NiPrunedFp32Fix/resolve/main/chilloutmix_NiPrunedFp32Fix.safetensors -O chilloutmix_NiPrunedFp32Fix.safetensors
! python diffusers/scripts/convert_original_stable_diffusion_to_diffusers.py \
--checkpoint_path=stable-diffusion-webui/models/Stable-diffusion/chilloutmix_NiPrunedFp32Fix.safetensors \
--dump_path=chilloutmix-ni --from_safetensors
实行结果如图
https://img-blog.csdnimg.cn/direct/d797da9587924cd8b9f473c2ab07aff1.png
实行命令,设置num_train_epochs为200,举行lora模子的训练
! export MODEL_NAME="chilloutmix-ni" && \

export DATASET_NAME="cloth_train_example" && \

accelerate launch --mixed_precision="fp16" train_text_to_image_lora.py \

--pretrained_model_name_or_path=$MODEL_NAME \

--dataset_name=$DATASET_NAME --caption_column="text" \

--width=640 --height=768 --random_flip \

--train_batch_size=1 \

--num_train_epochs=200 --checkpointing_steps=5000 \

--learning_rate=1e-04 --lr_scheduler="constant" --lr_warmup_steps=0 \

--seed=42 \

--output_dir="cloth-model-lora" \

--validation_prompt="cloth1" --validation_epochs=100
训练完成之后可以看到
https://img-blog.csdnimg.cn/direct/dbd56b3370b64fd399ddebb5acf687ba.png
然后将lora模子转化成WebUI支持格式并拷贝到WebUI所在目录
! wget -c http://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/EasyCV/datasets/convert-to-safetensors.py
! python convert-to-safetensors.py --file='cloth-model-lora/pytorch_lora_weights.bin'
! mkdir stable-diffusion-webui/models/Lora
! cp cloth-model-lora/pytorch_lora_weights_converted.safetensors stable-diffusion-webui/models/Lora/cloth_lora_weights.safetensors
实行结果如图
https://img-blog.csdnimg.cn/direct/0e746b0fb0f041c2a7724bc375d4190a.png
准备其他模子文件
! mkdir stable-diffusion-webui/models/Codeformer
! cd stable-diffusion-webui/repositories/CodeFormer/weights/facelib/ && \
wget -c http://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/EasyCV/datasets/try_on/detection_Resnet50_Final.pth && \
wget -c http://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/EasyCV/datasets/try_on/parsing_parsenet.pth
! cd stable-diffusion-webui/models/Codeformer && wget -c http://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/EasyCV/datasets/try_on/codeformer-v0.1.0.pth
! cd stable-diffusion-webui/embeddings && wget -c http://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/EasyCV/datasets/try_on/ng_deepnegative_v1_75t.pt
! cd stable-diffusion-webui/models/Lora && wget -c https://huggingface.co/Kanbara/doll-likeness-series/resolve/main/koreanDollLikeness_v10.safetensors
实行结果如图
https://img-blog.csdnimg.cn/direct/0cda8f3c49f146faa37b618fd67e0fec.png
启动WebUI

在Notebook中,实行如下命令,启动WebUI
! cd stable-diffusion-webui && python -m venv --system-site-packages --symlinks venv
! cd stable-diffusion-webui && \
sed -i 's/can_run_as_root=0/can_run_as_root=1/g' webui.sh && \
./webui.sh --no-download-sd-model --xformers
这个命令实行过程中大概会遇到多种情况的错误,每次遇到错误情况时重新实行命令即可,错误情况比如
https://img-blog.csdnimg.cn/direct/525388f5454144a3a56c7476dadfd520.png
或者是
https://img-blog.csdnimg.cn/direct/2e64b3a3b1df4b2a9f298e68f8bf4dfb.png
最后实行成功的界面如下
https://img-blog.csdnimg.cn/direct/4722dbfb7cc345098274dcccdbf7ec5d.png
启动成功之后单机链接地址进入模子训练页面
https://img-blog.csdnimg.cn/direct/9146e33978e54b48b98cc931e7a3cded.png
输入待生成模子文本等待生成结果。
写在最后

整体来说,本次利用的时间会耗时比较久,两个小时左右,在部署过程中大概会遇到各种不成功的情况,不用担心,再次实行命令即可。
别的,对于AIGC文生图的利用,对于生成图像与文字描述是否匹配,这个主要还是取决于你当前使用的文生图模子的训练程度,模子训练的结果直接决定了AIGC文生图的准确度,由此及彼的来看,对于AIGC文生图、图生文、文生视频、文生音频等的利用,随着模子训练的不断丰富话,后续想要生成更加准确的切合文字内容的图片及视频都是很有大概的,目前不停盼望可以准确生成《少年闰土》中的一段情节
:深蓝的天空中挂着一轮金黄的圆月,下面是海边的沙地,都种着一望无际的碧绿的西瓜。其间有一个十一二岁的少年,项戴银圈,手捏一柄钢叉,向一匹猹用力地刺去。那猹却将身一扭,反从他的胯下逃走了。多方查找还没找到比较生成图比较接近的,后续会继续实验基于其他云产品的AIGC服务。
活动推广:https://developer.aliyun.com/huodong/dashiblogger?userCode=fkssw94w

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 小白上手AIGC-基于PAI-DSW部署Stable Diffusion文生图Lora模子