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

本文涉及的产品
交互式建模 PAI-DSW,每月250计算时 3个月
模型训练 PAI-DLC,100CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: 讲述基于PAI-DSW部署Stable Diffusion文生图Lora模型以及文生图效果展示

前言

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

资源准备

开启体验服务

再开始实验之前,我们需要先开通交互式建模PAI-DSW 的服务,趁着阿里云推出的免费试用的机会,赶快来体验吧,试用中心地址:阿里云免费试用 找到机器学习平台PAI的类别,点击【立即试用】

image.png

开通交互式建模PAI-DSW服务之后,需要创建默认工作空间,

创建工作空间

创建默认工作空间,官方文档地址:开通并创建默认工作空间,比如选择地域杭州

image.png

点击【开通PAI并创建默认工作空间】,完成授权及勾选操作

image.png

点击【确认开通并创建默认工作空间】完成默认工作空间的创建。

部署服务

回到PAI控制台首页,可以在工作空间列表中看到我们刚才创建的默认工作空间信息,

image.png

在控制台选择菜单【交互式建模(DSW)】

image.png

创建DSW实例

这里会默认选中我们刚才创建的工作空间,点击【进入DSW】

image.png

点击【创建实例】

image.png

输入实例名称,点击tab 【GPU规格】,选择规格【ecs.gn7i-c8g1.2xlarge

image.png

继续选择镜像【stable-diffusion-webui-env:pytorch1.13-gpu-py310-cu117-ubuntu22.04】点击【下一步】

image.png

确认完信息之后点击【创建实例】

image.png

等待实例资源准备后启动成功。

安装Diffusers

下载Diffusers开源库并安装,为后续下载stable-diffusion-webui开源库做准备。

点击【打开】

image.png打开在线编辑工具Notebook,选择【Python3】如图

image.png

输入命令下载Diffusers开源库

! git clone https://github.com/huggingface/diffusers

下载开源库过程中,如果遇到超时的情况可以再次执行下载即可

image.png

验证一下是否安装成功

import diffusers

image.png

配置accelerate,选择Terminal输入配置命令

accelerate config

确认之后,通过键盘上下键选中This machine并确认

image.png

然后在选择multi-GPU

image.png

选中之后确认,后面的一次按截图的内容选择即可

image.png

最后选中fp16 点击确认

image.png

此时可以看到accelerate配置完成了。下面继续回到python3页面安装文生图算法相关依赖库

! cd diffusers/examples/text_to_image && pip install -r requirements.txt

image.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

下载过程中如果遇到这种情况,再次执行以下命令就可以了

image.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

数据集下载完成之后可以看到

image.png

查看一下示例服装,执行命令

from PIL import Image
display(Image.open("cloth_train_example/train/20230407174450.jpg"))

执行结果可以看到

image.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

执行结果如图

image.png

执行命令,设置num_train_epochs为200进行lora模型的训练

! exportMODEL_NAME="chilloutmix-ni" && \
exportDATASET_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

训练完成之后可以看到

image.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

执行结果如图

image.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

执行结果如图

image.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

这个命令执行过程中可能会遇到多种情况的错误,每次遇到错误情况时重新执行命令即可,错误情况比如

image.png

或者是

image.png

最后执行成功的界面如下

image.png

启动成功之后单机链接地址进入模型训练页面

image.png

输入待生成模型文本等待生成结果。

写在最后

整体来说,本次操作的时间会耗时比较久,两个小时左右,在部署过程中可能会遇到各种不成功的情况,不用担心,再次执行命令即可。

另外,对于AIGC文生图的操作,对于生成图像与文字描述是否匹配,这个主要还是取决于你当前使用的文生图模型的训练程度,模型训练的结果直接决定了AIGC文生图的准确度,由此及彼的来看,对于AIGC文生图、图生文、文生视频、文生音频等的操作,随着模型训练的不断丰富话,后续想要生成更加准确的切合文字内容的图片及视频都是很有可能的,目前一直希望可以准确生成《少年闰土》中的一段情节

:深蓝的天空中挂着一轮金黄的圆月,下面是海边的沙地,都种着一望无际的碧绿的西瓜。其间有一个十一二岁的少年,项戴银圈,手捏一柄钢叉,向一匹猹用力地刺去。那猹却将身一扭,反从他的胯下逃走了。多方查找还没找到比较生成图比较接近的,后续会继续尝试基于其他云产品的AIGC服务。

相关实践学习
使用PAI-EAS一键部署ChatGLM及LangChain应用
本场景中主要介绍如何使用模型在线服务(PAI-EAS)部署ChatGLM的AI-Web应用以及启动WebUI进行模型推理,并通过LangChain集成自己的业务数据。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
1月前
|
人工智能 JSON 算法
Qwen2.5-Coder 系列模型在 PAI-QuickStart 的训练、评测、压缩及部署实践
阿里云的人工智能平台 PAI,作为一站式、 AI Native 的大模型与 AIGC 工程平台,为开发者和企业客户提供了 Qwen2.5-Coder 系列模型的全链路最佳实践。本文以Qwen2.5-Coder-32B为例,详细介绍在 PAI-QuickStart 完成 Qwen2.5-Coder 的训练、评测和快速部署。
Qwen2.5-Coder 系列模型在 PAI-QuickStart 的训练、评测、压缩及部署实践
|
16天前
|
编解码 机器人 测试技术
技术实践 | 使用 PAI+LLaMA Factory 微调 Qwen2-VL 模型快速搭建专业领域知识问答机器人
Qwen2-VL是一款具备高级图像和视频理解能力的多模态模型,支持多种语言,适用于多模态应用开发。通过PAI和LLaMA Factory框架,用户可以轻松微调Qwen2-VL模型,快速构建文旅领域的知识问答机器人。本教程详细介绍了从模型部署、微调到对话测试的全过程,帮助开发者高效实现定制化多模态应用。
|
1月前
|
机器学习/深度学习 PyTorch API
优化注意力层提升 Transformer 模型效率:通过改进注意力机制降低机器学习成本
Transformer架构自2017年被Vaswani等人提出以来,凭借其核心的注意力机制,已成为AI领域的重大突破。该机制允许模型根据任务需求灵活聚焦于输入的不同部分,极大地增强了对复杂语言和结构的理解能力。起初主要应用于自然语言处理,Transformer迅速扩展至语音识别、计算机视觉等多领域,展现出强大的跨学科应用潜力。然而,随着模型规模的增长,注意力层的高计算复杂度成为发展瓶颈。为此,本文探讨了在PyTorch生态系统中优化注意力层的各种技术,
65 6
优化注意力层提升 Transformer 模型效率:通过改进注意力机制降低机器学习成本
|
25天前
|
机器学习/深度学习 人工智能 算法
人工智能浪潮下的编程实践:构建你的第一个机器学习模型
在人工智能的巨浪中,每个人都有机会成为弄潮儿。本文将带你一探究竟,从零基础开始,用最易懂的语言和步骤,教你如何构建属于自己的第一个机器学习模型。不需要复杂的数学公式,也不必担心编程难题,只需跟随我们的步伐,一起探索这个充满魔力的AI世界。
45 12
|
1月前
|
机器学习/深度学习 Python
机器学习中评估模型性能的重要工具——混淆矩阵和ROC曲线。混淆矩阵通过真正例、假正例等指标展示模型预测情况
本文介绍了机器学习中评估模型性能的重要工具——混淆矩阵和ROC曲线。混淆矩阵通过真正例、假正例等指标展示模型预测情况,而ROC曲线则通过假正率和真正率评估二分类模型性能。文章还提供了Python中的具体实现示例,展示了如何计算和使用这两种工具来评估模型。
55 8
|
1月前
|
机器学习/深度学习 Python
机器学习中模型选择和优化的关键技术——交叉验证与网格搜索
本文深入探讨了机器学习中模型选择和优化的关键技术——交叉验证与网格搜索。介绍了K折交叉验证、留一交叉验证等方法,以及网格搜索的原理和步骤,展示了如何结合两者在Python中实现模型参数的优化,并强调了使用时需注意的计算成本、过拟合风险等问题。
55 6
|
1月前
|
机器学习/深度学习 数据采集 算法
从零到一:构建高效机器学习模型的旅程####
在探索技术深度与广度的征途中,我深刻体会到技术创新既在于理论的飞跃,更在于实践的积累。本文将通过一个具体案例,分享我在构建高效机器学习模型过程中的实战经验,包括数据预处理、特征工程、模型选择与优化等关键环节,旨在为读者提供一个从零开始构建并优化机器学习模型的实用指南。 ####
|
1月前
|
人工智能 边缘计算 JSON
DistilQwen2 蒸馏小模型在 PAI-QuickStart 的训练、评测、压缩及部署实践
本文详细介绍在 PAI 平台使用 DistilQwen2 蒸馏小模型的全链路最佳实践。
|
1月前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的线性回归模型
本文深入探讨了机器学习中广泛使用的线性回归模型,从其基本概念和数学原理出发,逐步引导读者理解模型的构建、训练及评估过程。通过实例分析与代码演示,本文旨在为初学者提供一个清晰的学习路径,帮助他们在实践中更好地应用线性回归模型解决实际问题。
|
1月前
|
机器学习/深度学习 自然语言处理 语音技术
探索机器学习中的深度学习模型:原理与应用
探索机器学习中的深度学习模型:原理与应用
43 0

热门文章

最新文章

相关产品

  • 人工智能平台 PAI