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

本文涉及的产品
交互式建模 PAI-DSW,5000CU*H 3个月
模型训练 PAI-DLC,5000CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: 在本教程中,您将学习如何在阿里云交互式建模(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)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
3月前
|
数据采集 机器学习/深度学习 人工智能
Datawhale AI夏令营第四期魔搭-AIGC文生图方向Task1笔记
这段内容介绍了一个使用Stable Diffusion与LoRA技术创建定制化二次元图像生成模型的全流程。首先,通过安装必要的软件包如Data-Juicer和DiffSynth-Studio准备开发环境。接着,下载并处理二次元图像数据集,利用Data-Juicer进行数据清洗和筛选,确保图像质量和尺寸的一致性。随后,训练一个针对二次元风格优化的LoRA模型,并调整参数以控制模型复杂度。完成训练后,加载模型并通过精心设计的提示词(prompt)生成一系列高质量的二次元图像,展示模型对细节和艺术风格的理解与再现能力。整个过程展示了从数据准备到模型训练及结果生成的完整步骤,为定制化图像提供了方向。
|
2月前
|
人工智能 自然语言处理 计算机视觉
比Stable Diffusion便宜118倍!1890美元训出11.6亿参数高质量文生图模型
【9月更文挑战第6天】最近,一篇论文在AI领域引起广泛关注,展示了如何以极低成本训练高质量文本生成图像(T2I)模型。研究者通过随机遮蔽图像中75%的patch并采用延迟遮蔽策略,大幅降低计算成本,同时结合Mixture-of-Experts(MoE)层提升性能。最终,他们仅用1890美元就训练出了一个拥有11.6亿参数的模型,在COCO数据集上取得12.7的FID分数。这一成果比Stable Diffusion成本低118倍,为资源有限的研究人员提供了新途径。尽管如此,该方法在其他数据集上的表现及进一步降低成本的可行性仍需验证。
49 1
|
3月前
|
数据采集 机器学习/深度学习 人工智能
Datawhale AI夏令营第四期魔搭-AIGC文生图方向Task1笔记
这段内容介绍了一个使用LoRA技术定制Stable Diffusion模型的工作流程。首先定义了提示词的结构,接着概述了LoRA作为轻量级微调方法的角色。ComfyUI作为一个图形化工具,简化了AI模型的配置与操作。示例脚本展示了如何通过Data-Juicer和DiffSynth-Studio进行数据准备、模型训练,并最终生成特定风格的二次元图像。通过不同的种子和提示词,生成了一系列具有一致风格但内容各异的高质量二次元角色图像。
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
AIGC-Transformer 模型
8月更文挑战第6天
|
4月前
|
自然语言处理
AIGC使用问题之GPT-1如何优化目标函数,如何做模型微调
AIGC使用问题之GPT-1如何优化目标函数,如何做模型微调
|
3月前
|
算法 物联网 Serverless
一键打造你的定制化AIGC文生图工具
【8月更文挑战第2天】一键打造你的定制化AIGC文生图工具
129 0
|
4月前
|
机器学习/深度学习 人工智能 大数据
AIGC使用问题之多模态大模型如何升级AIGC的内容创作能力
AIGC使用问题之多模态大模型如何升级AIGC的内容创作能力
|
4月前
|
人工智能
AIGC使用问题之视觉大模型如何提高AIGC的感知能力
AIGC使用问题之视觉大模型如何提高AIGC的感知能力
|
4月前
|
存储 自然语言处理 API
通义万相AIGC技术Web服务体验评测
随着人工智能技术的不断进步,图像生成技术已成为创意产业的一大助力。通义万相AIGC技术,作为阿里云推出的一项先进技术,旨在通过文本到图像、涂鸦转换、人像风格重塑及人物写真创建等功能,加速艺术家和设计师的创作流程。本文将详细评测这一技术的实际应用体验。
174 4
|
13天前
|
人工智能 自然语言处理 数据挖掘
Claude 3.5:一场AI技术的惊艳飞跃 | AIGC
在这个科技日新月异的时代,人工智能(AI)的进步令人惊叹。博主体验了Claude 3.5 Sonnet的最新功能,对其卓越的性能、强大的内容创作与理解能力、创新的Artifacts功能、视觉理解与文本转录能力、革命性的“computeruse”功能、广泛的应用场景与兼容性以及成本效益和易用性深感震撼。这篇介绍将带你一窥其技术前沿的魅力。【10月更文挑战第12天】
47 1

热门文章

最新文章