AIGC Stable Diffusion文生图Lora模型微调实现虚拟上装

本文涉及的产品
交互式建模 PAI-DSW,5000CU*H 3个月
简介: 在本教程中,您将学习如何在阿里云交互式建模(PAI-DSW)中,基于Diffusers开源库进行AIGC Stable Diffusion模型的微调训练,以及基于Stable-Diffusion-WebUI开源库启动WebUI进行模型推理。

AIGC Stable Diffusion文生图Lora模型微调实现虚拟上装


1. 选择实验资源

本实验支持开通免费试用、个人账户资源两种实验资源方式。

在实验开始前,请您选择其中一种实验资源,单击确认开启实验

  • 如果您选择的是开通免费试用,下方卡片会展示本实验支持的试用规格,可以选择你要试用的云产品资源进行开通。您在实验过程中,可以随时用右下角icon唤起试用卡片。

说明:试用云产品开通在您的个人账号下,并占用您的试用权益如试用超出免费试用额度,可能会产生一定费用。

阿里云支持试用的产品列表、权益及具体规则说明请参考开发者试用中心


2. 创建实验资源

本步骤指导您如何创建PAI-DSW。

如果您已创建PAI-DSW,请您选择个人账户资源,并跳过本小节,直接进行实验操作即可。

本步骤仅作为参考使用,您可以根据需求自行选择配置。

如果您选择的是开通免费试用,参考以下步骤创建PAI-DSW。

说明:PAI-DSW免费资源包只适用于本教程中的PAI-DSW产品。如果您领取了PAI-DSW资源包后,使用了PAI-DSW及PAI的其他产品功能(如PAI-DLC、PAI-EAS等),PAI-DSW产品产生的费用由资源包抵扣,其他产品功能产生的费用无法抵扣,会产生对应的费用账单。

  1. 在本实验页面下方卡片会展示本实验支持的试用规格,选择一个试用规格,单击立即试用

  1. 交互式建模PAI-DSW面板,勾选服务协议后,单击立即试用,进入免费开通页面。

说明:以下几种情况可能产生额外费用。

  • 使用了除免费资源类型外的计费资源类型:

您申请试用的是PAI-DSW免费资源包,但您创建的DSW实例使用的资源类型非阿里云免费试用提供的资源类型。当前可申请免费使用的资源类型有:ecs.gn6v-c8g1.2xlarge、ecs.g6.xlarge、ecs.gn7i-c8g1.2xlarge。

  • 申请试用的免费资源包与使用的产品资源不对应:
  • 您创建了PAI-DSW实例,但您申请试用的是PAI-DLC或PAI-EAS产品的免费资源包。您使用DSW产品产生的费用无法使用免费资源包抵扣,会产生后付费账单。
  • 您申请试用的是PAI-DSW免费资源包,但您使用的产品是PAI-DLC或PAI-EAS。使用PAI-DLC和PAI-EAS产品产生的费用无法使用DSW免费资源包抵扣,会产生后付费账单。
  • 免费额度用尽或超出试用期:

领取免费资源包后,请在免费额度和有效试用期内使用。如果免费额度用尽或试用期结束后,继续使用计算资源,会产生后付费账单。

请前往资源实例管理页面,查看免费额度使用量和过期时间,如下图所示。

  1. 开通机器学习PAI并创建默认工作空间。其中关键参数配置如下,更多详细内容,请参见开通并创建默认工作空间
  • 本教程地域选择:华东1(杭州)。您也可以根据情况选择华北2(北京)、华东2(上海)、华南1(深圳)地域。
  • 单击免费开通并创建默认工作空间:在弹出的开通页面中配置订单详情。配置要点如下。
  • 本教程不需要开通其他产品,您需要在组合开通配置模块,去勾选其他产品的复选框。
  • 服务角色授权模块单击去授权,根据界面提示为PAI完成授权,然后返回开通页面,刷新页面,继续开通操作。

  1. 开通成功后单击进入PAI控制台,在左侧导航栏中单击工作空间列表
  2. 在默认工作空间中创建DSW实例。其中关键参数配置如下,其他参数取默认配置即可。更多详细内容,请参见创建及管理DSW实例

说明:创建DSW实例需要一定时间,与当前的资源数有关,通常大约需要15分钟。如果您使用地域资源不足,可更换其他支持免费试用的地域申请开通试用并创建DSW实例。

参数

描述

地域及可用区

本教程选择:华东1(杭州)

实例名称

您可以自定义实例名称,本教程示例为:AIGC_test。

资源类型

本教程需选择:GPU规格,规格名称为ecs.gn7i-c8g1.2xlarge

【说明】:阿里云免费试用提供的资源类型包括以下几种类型:

  • ecs.gn7i-c8g1.2xlarge(仅此规格可运行本教程内容)
  • ecs.g6.xlarge
  • ecs.gn6v-c8g1.2xlarge

选择镜像

选择官方镜像中的stable-diffusion-webui-env:pytorch1.13-gpu-py310-cu117-ubuntu22.04

如果您选择的是个人账户资源,参考以下步骤创建PAI-DSW。

  1. 前往PAI控制台
  2. 开通机器学习PAI并创建默认工作空间。其中关键参数配置如下,更多详细内容,请参见开通并创建默认工作空间。、
  • 本教程地域选择:华东1(杭州)。您也可以根据情况选择华北2(北京)、华东2(上海)、华南1(深圳)地域。
  • 单击免费开通并创建默认工作空间:在弹出的开通页面中配置订单详情。配置要点如下。
  • 本教程不需要开通其他产品,您需要在组合开通配置模块,去勾选其他产品的复选框。
  • 服务角色授权模块单击去授权,根据界面提示为PAI完成授权,然后返回开通页面,刷新页面,继续开通操作。

  1. 开通成功后单击进入PAI控制台,在左侧导航栏中单击工作空间列表
  2. 在默认工作空间中创建DSW实例。其中关键参数配置如下,其他参数取默认配置即可。更多详细内容,请参见创建及管理DSW实例

说明:创建DSW实例需要一定时间,与当前的资源数有关,通常大约需要15分钟。如果您使用地域资源不足,可更换其他地域创建DSW实例。

参数

描述

地域及可用区

本教程选择:华东1(杭州)

实例名称

您可以自定义实例名称,本教程示例为:AIGC_test。

资源类型

本教程需选择:GPU规格,规格名称为ecs.gn7i-c8g1.2xlarge

选择镜像

选择官方镜像中的stable-diffusion-webui-env:pytorch1.13-gpu-py310-cu117-ubuntu22.04


3. 安装Diffusers

  1. 进入PAI-DSW开发环境。
  1. 登录PAI控制台
  2. 在页面左上方,选择DSW实例所在的地域。

  1. 在左侧导航栏单击工作空间列表,在工作空间列表页面中单击默认工作空间名称,进入对应工作空间内。

  1. 在左侧导航栏,选择模型开发与训练>交互式建模(DSW)

  1. 交互式建模(DSW)页面,单击需要打开的实例操作列下的打开,进入PAI-DSW实例开发环境。

  1. JupyterLab页签的Launcher页面,单击快速开始区域Notebook下的Python 3(ipykernel)

  1. 在JupyterLab的Notebook中,执行如下命令,从GitHub下载Diffusers开源库,并安装相关依赖。

说明:本教程使用的阿里云官方镜像已为您预置了核心Diffusers开源库,后续的模型微调需依赖其他开源插件,因此您需执行以下命令进行下载,下载过程大约需要持续5分钟。由于Github访问存在不稳定性,如果运行后未出现正常返回结果且提示网络相关原因,例如:Network is unreachable、unable to access 'https://github.com/......',您可以重新运行命令。

! git clone https://github.com/huggingface/diffusers
! cd diffusers && git checkout e126a82cc5d9afbeb9b476455de24dd3e7dd358a
! cd diffusers && pip install .

  1. 执行如下命令,验证是否安装成功。
import diffusers

系统返回如下结果,表示安装成功。

  1. 配置accelerate。

在JupyterLab的Notebook中,执行如下命令,下载默认配置文件。

说明:若需要自定义配置则在Terminal中执行命令:accelerate config,并根据DSW实例详情,选择对应配置。

! mkdir -p /root/.cache/huggingface/accelerate/
! wget -c http://pai-vision-data-sh.oss-cn-shanghai.aliyuncs.com/aigc-data/accelerate/default_config.yaml -O /root/.cache/huggingface/accelerate/default_config.yaml

  1. 在JupyterLab的Notebook中,执行如下命令,安装文生图算法相关依赖库。
! cd diffusers/examples/text_to_image && pip install -r requirements.txt

  1. 在JupyterLab的Notebook中,执行如下命令,下载stable-diffusion-webui开源库。

说明:为了提升下载速度,本示例使用了gitcode开源库镜像,并在OSS上缓存了submodule的代码包,直接执行如下命令即可完成下载,若需更新最新版本,用户可前往开源链接进行下载。

import os
! apt update
! apt install -y aria2
def aria2(url, filename, d):
    !aria2c --console-log-level=error -c -x 16 -s 16 {url} -o {filename} -d {d}
url_prefix = {
    "cn-shanghai": "http://pai-vision-data-sh.oss-cn-shanghai-internal.aliyuncs.com",
    "cn-hangzhou": "http://pai-vision-data-hz2.oss-cn-hangzhou-internal.aliyuncs.com",
    "cn-shenzhen": "http://pai-vision-data-sz.oss-cn-shenzhen-internal.aliyuncs.com",
    "cn-beijing": "http://pai-vision-data-bj.oss-cn-beijing-internal.aliyuncs.com", 
}
dsw_region = os.environ.get("dsw_region")
prefix = url_prefix[dsw_region] if dsw_region in url_prefix else "http://pai-vision-data-sh.oss-cn-shanghai.aliyuncs.com"
! git clone https://gitcode.net/mirrors/AUTOMATIC1111/stable-diffusion-webui.git
%cd stable-diffusion-webui
! git checkout a9fed7c364061ae6efb37f797b6b522cb3cf7aa2
repositories_url = f"{prefix}/aigc-data/code/repositories.tar.gz"
aria2(repositories_url, repositories_url.split("/")[-1], "./")
! tar -xf repositories.tar.gz
%cd extensions
! git clone https://gitcode.net/mirrors/DominikDoom/a1111-sd-webui-tagcomplete.git
! git clone https://gitcode.net/ranting8323/stable-diffusion-webui-localization-zh_CN
%cd .. 
! wget -c http://pai-vision-data-sh.oss-cn-shanghai.aliyuncs.com/aigc-data/webui_config/config_tryon.json -O config.json
%cd ..

返回如下结果表明下载完成。


4. Stable Diffusion+LORA模型fintune

  1. 准备数据集及训练代码。

我们提供了训练代码及一个小的示例数据,可以参照该格式准备自定义数据。

在JupyterLab的Notebook中,执行如下命令,下载示例数据集。后续会使用该数据集进行模型训练。

! 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

系统输出如图结果,表示代码执行成功。

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

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

  1. 执行如下命令,下载预训练模型并转化成diffusers格式。

说明:为了加速下载我们在oss做了缓存,用户可以运行如下命令直接下载,用户也可前往hugging face官网下载。

safety_checker_url = f"{prefix}/aigc-data/hug_model/models--CompVis--stable-diffusion-safety-checker.tar.gz"
aria2(safety_checker_url, safety_checker_url.split("/")[-1], "./")
! tar -xf models--CompVis--stable-diffusion-safety-checker.tar.gz -C /root/.cache/huggingface/hub/
clip_url = f"{prefix}/aigc-data/hug_model/models--openai--clip-vit-large-patch14.tar.gz"
aria2(clip_url, clip_url.split("/")[-1], "./")
! tar -xf models--openai--clip-vit-large-patch14.tar.gz -C /root/.cache/huggingface/hub/
model_url = f"{prefix}/aigc-data/sd_models/chilloutmix_NiPrunedFp32Fix.safetensors"
aria2(model_url, model_url.split("/")[-1], "stable-diffusion-webui/models/Stable-diffusion/")
! 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

  1. 模型训练。执行如下命令,设置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

  1. 准备WebUI所需模型文件。
  1. 将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

  1. 准备额外模型文件。

为了加速下载我们在oss做了缓存,用户可以运行如下命令直接下载。

detection_url = f"{prefix}/aigc-data/codeformer/detection_Resnet50_Final.pth"
aria2(detection_url, detection_url.split("/")[-1], "stable-diffusion-webui/repositories/CodeFormer/weights/facelib/")
parse_url = f"{prefix}/aigc-data/codeformer/parsing_parsenet.pth"
aria2(parse_url, parse_url.split("/")[-1], "stable-diffusion-webui/repositories/CodeFormer/weights/facelib/")
codeformer_url = f"{prefix}/aigc-data/codeformer/codeformer-v0.1.0.pth"
aria2(codeformer_url, codeformer_url.split("/")[-1], "stable-diffusion-webui/models/Codeformer/")
embedding_url = f"{prefix}/aigc-data/embedding/ng_deepnegative_v1_75t.pt"
aria2(embedding_url, embedding_url.split("/")[-1], "stable-diffusion-webui/embeddings/")
model_lora_url = f"{prefix}/aigc-data/lora/koreanDollLikeness_v10.safetensors"
aria2(model_lora_url, model_lora_url.split("/")[-1], "stable-diffusion-webui/models/Lora/")


5. 在DSW中启动WebUI

  1. 在JupyterLab的Notebook中,执行如下命令,启动WebUI。

说明:由于Github访问存在不稳定性,如果运行后未出现正常返回结果且提示网络相关原因,例如:Network is unreachable、unable to access 'https://github.com/......',您可以重新运行命令。

! 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 --gradio-queue
  1. 在返回结果中,单击URL链接(http://127.0.0.1:7860),进入WebUI页面。后续您可以在该页面,进行模型推理。


6. 测试

完成以上操作后,您已经成功完成了AIGC文生图模型微调训练及WebUI部署。您可以在WebUI页面,进行模型推理验证。

  1. 文生图页签通过下方设置可从示例衣服生成如下图片。
  • 正向prompt:cloth1,, (extremely detailed CG unity 8k wallpaper),(RAW photo, best quality), (realistic, photo-realistic:1.2), a close up portrait photo, 1girl, shopping mall rooftop cafe, outdoor, smile, (high detailed skin:1.4), puffy eyes, gorgeous hair, air bangs, brown black hair, soft lighting, high quality,
  • 负向prompt:ng_deepnegative_v1_75t,paintings, sketches, (worst quality:2), (low quality:2), (normal quality:2), lowres, ((monochrome)), (grayscale:1.2), skin spots, acnes, skin blemishes, age spot, glans,extra fingers,fewer fingers,(watermark:1.2),(letters:1.2),(nsfw:1.2),teeth
  • 采样方法:Euler a
  • 采样步数:50
  • 宽高: 640,768
  • 随机种子:1400244389
  • CFG Scale:7
  • 使用面部修复
  1. 单击Generate,输出如图推理结果。


7. 释放资源

清理

  • 如果无需继续使用DSW实例,您可以按照以下操作步骤停止DSW实例
  1. 登录PAI控制台
  2. 在页面左上方,选择DSW实例的地域。
  3. 在左侧导航栏单击工作空间列表,在工作空间列表页面中单击默认工作空间名称,进入对应工作空间内。
  4. 在工作空间页面的左侧导航栏选择模型开发与训练>交互式建模(DSW),进入交互式建模(DSW)页面。
  5. 单击目标实例操作列下的停止,成功停止后即停止资源消耗。
  • 领取免费资源包后,请在免费额度和有效试用期内使用。如果免费额度用尽或试用期结束后,继续使用计算资源,会产生后付费账单。

请前往资源实例管理页面,查看免费额度使用量和过期时间,如下图所示

  • 如果需要继续使用DSW实例,请务必至少在试用到期1小时前为您的阿里云账号充值,到期未续费的DSW实例会因欠费而被自动停止。

后续

在试用有效期期间,您还可以继续使用DSW实例进行模型训练和推理验证。


实验地址:https://developer.aliyun.com/adc/scenario/45863d6684d04656b1553478d9147b61

相关实践学习
使用PAI-EAS一键部署ChatGLM及LangChain应用
本场景中主要介绍如何使用模型在线服务(PAI-EAS)部署ChatGLM的AI-Web应用以及启动WebUI进行模型推理,并通过LangChain集成自己的业务数据。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
4天前
|
机器学习/深度学习 人工智能 数据管理
文生图的基石CLIP模型的发展综述
CLIP(Contrastive Language-Image Pre-training)是OpenAI在2021年发布的多模态模型,用于学习文本-图像对的匹配。模型由文本和图像编码器组成,通过对比学习使匹配的输入对在向量空间中靠近,非匹配对远离。预训练后,CLIP被广泛应用于各种任务,如零样本分类和语义搜索。后续研究包括ALIGN、K-LITE、OpenCLIP、MetaCLIP和DFN,它们分别在数据规模、知识增强、性能缩放和数据过滤等方面进行了改进和扩展,促进了多模态AI的发展。
113 0
|
4天前
|
人工智能 算法
52个AIGC视频生成算法模型介绍(中)
52个AIGC视频生成算法模型介绍(中)
99 4
|
2天前
Stable Diffusion文生图-图生图-ControINet插件-线稿上色-生产全套表情包-3D Openpose-局部重绘-换衣服,换姿势人设三视图一键生成教程大全(二)
Stable Diffusion文生图-图生图-ControINet插件-线稿上色-生产全套表情包-3D Openpose-局部重绘-换衣服,换姿势人设三视图一键生成教程大全(二)
|
2天前
|
编解码 人工智能 自然语言处理
Stable Diffusion文生图-图生图-ControINet插件-线稿上色-生产全套表情包-3D Openpose-局部重绘-换衣服,换姿势人设三视图一键生成教程大全(一)
Stable Diffusion文生图-图生图-ControINet插件-线稿上色-生产全套表情包-3D Openpose-局部重绘-换衣服,换姿势人设三视图一键生成教程大全(一)
|
4天前
|
人工智能 安全 物联网
【网安AIGC专题】46篇前沿代码大模型论文、24篇论文阅读笔记汇总
【网安AIGC专题】46篇前沿代码大模型论文、24篇论文阅读笔记汇总
32 1
|
4天前
|
机器学习/深度学习 数据采集 人工智能
人类生产力的解放?揭晓从大模型到AIGC的新魔法
本文从介绍大模型的概念延伸到大模型的革命意义。作者讲述了通过大模型的加持,让AIGC有了更多的可能性。
126814 6
|
4天前
|
机器学习/深度学习 人工智能 达摩院
52个AIGC视频生成算法模型介绍(上)
52个AIGC视频生成算法模型介绍(上)
357 3
|
4天前
|
机器学习/深度学习 人工智能 算法
52个AIGC视频生成算法模型介绍(下)
52个AIGC视频生成算法模型介绍(下)
71 3
|
4天前
|
机器学习/深度学习 人工智能 API
薅羊毛!阿里云免费GPU云主机畅玩AI绘画,免费领取阿里云v100显卡搭建AI绘画利器Stable Diffusion
薅羊毛!阿里云免费GPU云主机畅玩AI绘画,免费领取阿里云v100显卡搭建AI绘画利器Stable Diffusion
124 4
薅羊毛!阿里云免费GPU云主机畅玩AI绘画,免费领取阿里云v100显卡搭建AI绘画利器Stable Diffusion
|
4天前
|
人工智能 自然语言处理 搜索推荐
阿里推出 AtomoVideo 高保真图生视频框架,兼容多种文生图模型
【2月更文挑战第17天】阿里推出 AtomoVideo 高保真图生视频框架,兼容多种文生图模型
242 5
阿里推出 AtomoVideo 高保真图生视频框架,兼容多种文生图模型

热门文章

最新文章