Stable Diffusion模型魔搭最佳实践:训一只你的萌柯基

简介: Stable Diffusion模型魔搭最佳实践:训一只你的萌柯基

环境配置和安装

本文在ModelScope的Notebook的环境(PAI-DSW)配置下运行 (可以单卡运行, 显存要求12G)

服务器连接与环境准备

1、进入ModelScope首页:modelscope.cn,进入我的Notebook

image.png

2、选择GPU环境

image.png

3、进入Terminal,先查看一下GPU的使用情况

image.png

git clone ModelScope,运行示例代码

#获取示例代码
git clone https://github.com/modelscope/modelscope.git
cd modelscope/
sh examples/pytorch/stable_diffusion/lora/run_train_lora.sh

以下介绍代码中的具体细节

模型链接和下载

使用社区开发者分享的stable diffusion系列模型,本文推荐的是stable-diffusion-v1.5:

模型链接:https://www.modelscope.cn/models/AI-ModelScope/stable-diffusion-v1-5/summary

社区支持直接下载模型的repo

# ### Loading Model and Tokenizer
WORK_DIR = 'runs/stable-diffusion-v1.5'
#使用社区lib下载模型
from modelscope.hub.snapshot_download import snapshot_download
model_dir = snapshot_download('AI-ModelScope/stable-diffusion-v1-5', 'v1.0.9')

模型推理

stable-diffusion-v1.5推理代码

from modelscope.utils.constant import Tasks
from modelscope.pipelines import pipeline
import cv2
pipe = pipeline(task=Tasks.text_to_image_synthesis, 
                model='AI-ModelScope/stable-diffusion-v1-5',
                model_revision='v1.0.9')
prompt = '飞流直下三千尺,油画'
output = pipe({'text': prompt})
cv2.imwrite('result.png', output['output_imgs'][0])

数据集链接和下载

本文使用小柯基的数据集作为微调数据集:https://modelscope.cn/datasets/buptwq/lora-stable-diffusion-finetune/summary. 

from modelscope.msdatasets import MsDataset
data = MsDataset.load(
    'buptwq/lora-stable-diffusion-finetune',
    split='train',     # Options: train, test, validation
    use_streaming=True
)
print(next(iter(data)))

模型训练最佳实践

微调过程分为如下几步:

  1. 使用ModelScope提供的微调方法构建最终模型
  2. 使用ModelScope提供的Trainer对模型进行微调

准备配置文件和数据集:

@dataclass(init=False)
class StableDiffusionLoraArguments(TrainingArgs):
    prompt: str = field(
        default='dog', metadata={
            'help': 'The pipeline prompt.',
        })
training_args = StableDiffusionLoraArguments(
    task='text-to-image-synthesis').parse_cli()
config, args = training_args.to_config()
if os.path.exists(args.train_dataset_name):
    # Load local dataset
    train_dataset = MsDataset.load(args.train_dataset_name)
    validation_dataset = MsDataset.load(args.train_dataset_name)
else:
    # Load online dataset
    train_dataset = MsDataset.load(
        args.train_dataset_name,
        split='train',
        download_mode=DownloadMode.FORCE_REDOWNLOAD)
    validation_dataset = MsDataset.load(
        args.train_dataset_name,
        split='validation',
        download_mode=DownloadMode.FORCE_REDOWNLOAD)
def cfg_modify_fn(cfg):
    if args.use_model_config:
        cfg.merge_from_dict(config)
    else:
        cfg = config
    cfg.train.lr_scheduler = {
        'type': 'LambdaLR',
        'lr_lambda': lambda _: 1,
        'last_epoch': -1
    }
    return cfg

开启微调:

kwargs = dict(
    model=training_args.model,
    model_revision=args.model_revision,
    work_dir=training_args.work_dir,
    train_dataset=train_dataset,
    eval_dataset=validation_dataset,
    cfg_modify_fn=cfg_modify_fn)
# build trainer and training
trainer = build_trainer(name=Trainers.lora_diffusion, default_args=kwargs)
trainer.train()

可视化:

Tensorboard 命令: (e.g.)

tensorboard --logdir /home/lora_diffusion/runs/events.out.tfevents.1689651932.dsw-4419-56cf86fcf8-ctp6l.236607.0 --port 6006

image.png

资源消耗

stable-diffusion-v1.5用lora的方式训练的显存占用如下,大约在12G.

image.png

推理训练后的模型,并验证结果

# pipeline after training and save result
pipe = pipeline(
    task=Tasks.text_to_image_synthesis,
    model=training_args.model,
    lora_dir=training_args.work_dir + '/output',
    model_revision=args.model_revision)
output = pipe({'text': args.prompt})
# visualize the result on ipynb and save it
output
cv2.imwrite('./lora_result.png', output['output_imgs'][0])

训练集:

image.png

生成结果:

开源代码链接:

https://github.com/modelscope/modelscope/tree/master/examples/pytorch/stable_diffusion/lora

相关文章
|
人工智能 搜索推荐
AIGC工具——Stable Diffusion
【1月更文挑战第11天】AIGC工具——Stable Diffusion
699 2
AIGC工具——Stable Diffusion
|
机器学习/深度学习 自然语言处理
文生图模型-Stable Diffusion | AIGC
所谓的生成式模型就是通过文本或者随机采样的方式来得到一张图或者一段话的模型,比如文生图,顾名思义通过文本描述来生成图像的过程。当前流行的文生图模型,如DALE-2, midjourney以及今天要介绍的Stable Diffusion,这3种都是基于Diffusion扩散模型【1月更文挑战第6天】
2497 0
|
机器学习/深度学习 人工智能 算法
小白教程-阿里云快速搭建Stable-Diffusion WebUI环境+免费试用
Stable-Diffusion 是目前热门的AIGC图像生成方案,通过开源与社区共享模型的方式,成为AI艺术与创意产业的重要工具。本文介绍通过阿里云快速搭建SD WebUI的服务,并有免费试用权益,适合新手入门。通过详细步骤指导,帮助读者轻松上手,享受创作乐趣。
3072 0
|
编解码 人工智能 自然语言处理
AIGC基础模型——扩散模型(Diffusion Model)
【1月更文挑战第23天】AIGC基础模型——扩散模型(Diffusion Model)
1146 1
AIGC基础模型——扩散模型(Diffusion Model)
|
存储 自然语言处理 物联网
StableDiffusion-02 LoRA上手使用实测 尝试生成图片 使用多个LoRA 调整LoRA效果 10分钟上手 多图
StableDiffusion-02 LoRA上手使用实测 尝试生成图片 使用多个LoRA 调整LoRA效果 10分钟上手 多图
718 1
|
安全 API
通义千问API获取方法
访问阿里云DashScope官网以获取API-KEY。首先需开通DashScope服务:登录控制台,点击“去开通”,阅读协议后点击“立即开通”。接着获取API-KEY:进入API-KEY管理页面,点击“创建新的API-KEY”,复制并安全保存生成的API-KEY。完成这些步骤后,即可使用API-KEY调用DashScope API。更多详情见[官方文档](https://help.aliyun.com/zh/dashscope/developer-reference/acquisition-and-configuration-of-api-key)。
|
人工智能 监控 并行计算
Stable Diffusion火影数据集训练:SwanLab可视化训练
**使用Stable Diffusion 1.5模型训练火影忍者风格的文生图模型。在22GB显存的GPU上,通过Huggingface的`lambdalabs/naruto-blip-captions`数据集进行训练,利用SwanLab进行监控。所需库包括`swanlab`, `diffusers`, `datasets`, `accelerate`, `torchvision`, `transformers`。代码、日志和更多资源可在GitHub和SwanLab找到。训练涉及数据下载、模型配置、训练过程可视化及结果评估。**
Stable Diffusion火影数据集训练:SwanLab可视化训练
|
JavaScript 计算机视觉
FLUX.1 Tools 全家桶开源!文末附一键ComfyUI启动链接
Black Forest Labs 发布了 FLUX.1 Tools,一套增强 FLUX.1 文本转图像模型的工具集,包括 FLUX.1 Fill、FLUX.1 Depth、FLUX.1 Canny 和 FLUX.1 Redux,分别用于图像修复、深度引导、边缘检测和图像重组。提供详细的安装指南和模型下载链接,支持用户快速上手并优化图像处理流程。
5399 4
FLUX.1 Tools 全家桶开源!文末附一键ComfyUI启动链接

热门文章

最新文章