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

相关文章
|
机器学习/深度学习 人工智能 算法
小白教程-阿里云快速搭建Stable-Diffusion WebUI环境+免费试用
Stable-Diffusion 是目前热门的AIGC图像生成方案,通过开源与社区共享模型的方式,成为AI艺术与创意产业的重要工具。本文介绍通过阿里云快速搭建SD WebUI的服务,并有免费试用权益,适合新手入门。通过详细步骤指导,帮助读者轻松上手,享受创作乐趣。
3495 0
|
10月前
|
存储 弹性计算 人工智能
2026年阿里云轻量、ECS 与 GPU云服务器租用收费标准说明
阿里云服务器涵盖轻量应用服务器、云服务器 ECS 及 GPU 服务器三大类,适配从个人开发到企业核心业务的不同需求,价格差异显著。以下结合最新收费信息,用通俗语言梳理各机型配置与价格,包含优惠活动、续费规则及附加资源成本,帮助用户精准把控预算。
2026年阿里云轻量、ECS 与 GPU云服务器租用收费标准说明
|
12月前
|
供应链 安全 数据可视化
2025年MES系统厂商排名揭晓:深度解析头部企业如何破解生产数智化难题
树根科技MES系统以“软件+咨询”模式深度融合精益生产与数智化技术,依托根云平台实现设备互联、数据集成与流程固化。其微服务架构支持灵活配置,覆盖计划、生产、质量、仓储等全场景,助力企业提升交付率、缩短周期、实现全流程追溯,为中大型离散制造企业提供高适配、可扩展的智能工厂解决方案。
468 2
|
Java Spring
Spring Boot使用策略模式指定Service实现类
Spring Boot使用策略模式指定Service实现类
584 0
|
机器学习/深度学习 人工智能 Cloud Native
秒速出图!体验 TensorRT 加速 Stable Diffusion 图像创作
秒速出图!体验 TensorRT 加速 Stable Diffusion 图像创作
141960 142
|
人工智能 算法
图像伪造照妖镜!北大发布多模态LLM图像篡改检测定位框架FakeShield
北京大学研究团队提出了一种名为FakeShield的多模态框架,旨在解决图像伪造检测与定位(IFDL)中的黑箱问题及泛化能力不足。FakeShield不仅能评估图像真实性,生成篡改区域的掩码,还能提供像素级和图像级的篡改线索及详细文本描述,增强检测的可解释性。通过使用GPT-4o增强现有数据集,创建多模态篡改描述数据集(MMTD-Set),并引入领域标签引导的可解释伪造检测模块(DTE-FDM)和多模态伪造定位模块(MFLM),FakeShield在多种篡改技术的检测与定位上表现优异,为图像真实性维护提供了有力工具。
1118 14
|
机器学习/深度学习 并行计算 Linux
Stabble Diffusion 本地部署教程详解
Stabble Diffusion 本地部署教程详解
4571 1
|
自然语言处理 开发者
多模态大模型LLM、MLLM性能评估方法
针对多模态大模型(LLM)和多语言大模型(MLLM)的性能评估,本文介绍了多种关键方法和标准,包括模态融合率(MIR)、多模态大语言模型综合评估基准(MME)、CheckList评估方法、多模态增益(MG)和多模态泄露(ML),以及LLaVA Bench。这些方法为评估模型的多模态和多语言能力提供了全面的框架,有助于研究者和开发者优化和改进模型。
2373 5
|
人工智能 编解码 自然语言处理
硬核解读Stable Diffusion(1)
硬核解读Stable Diffusion
|
安全 测试技术 Linux
【实战演练】只需一行代码,轻松解决Docker 和UFW 防火墙的安全漏洞
为什么Docker 和UFW 防火墙结合使用会产生安全问题呢?我们又该如何解决这个问题呢?
6534 0

热门文章

最新文章