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

相关文章
疲劳检测-闭眼检测(详细代码教程)
疲劳检测-闭眼检测(详细代码教程)
|
前端开发 Java 数据安全/隐私保护
深入理解 Spring MVC Controller —— 请求参数获取
前言 接上篇《深入理解 Spring MVC Controller —— 请求映射》,上篇主要介绍了处理器方法及请求映射的定义。有了处理器方法 Spring MVC 就可以对请求进行处理,有了请求映射 Spring MVC 就能知道哪些请求应该由哪些处理器方法来处理。
1656 0
深入理解 Spring MVC Controller —— 请求参数获取
|
9月前
|
弹性计算 应用服务中间件
阿里云轻量应用服务器200M峰值带宽详细说明,200Mbps适用哪种使用场景?
阿里云轻量应用服务器提供200Mbps峰值带宽(上下行对等),理论下载速度约25MB/s,属共享型带宽,非持续保障。适合个人网站、开发测试等轻量场景,不适用于高并发或企业级业务。38元/年起,详情见官方页面。
1644 1
|
机器学习/深度学习 人工智能 算法
小白教程-阿里云快速搭建Stable-Diffusion WebUI环境+免费试用
Stable-Diffusion 是目前热门的AIGC图像生成方案,通过开源与社区共享模型的方式,成为AI艺术与创意产业的重要工具。本文介绍通过阿里云快速搭建SD WebUI的服务,并有免费试用权益,适合新手入门。通过详细步骤指导,帮助读者轻松上手,享受创作乐趣。
3423 0
|
10月前
|
机器学习/深度学习 人工智能 监控
番茄叶片病害检测数据集(千张图片已划分)| AI训练适用于目标检测任务
在农业领域,植物病害检测是确保作物健康和提高农业生产效率的关键任务之一。随着计算机视觉技术的快速发展,基于深度学习的目标检测方法成为了病害识别的主流手段。为此,专门针对番茄叶片病害检测任务,我们推出了一个经过精心设计的番茄叶片病害检测数据集。该数据集包含了10,853张带标签的图像,覆盖了10种常见的番茄叶片病害类型,支持YOLO等先进的目标检测模型训练,旨在帮助研究人员和开发者提高农作物病害自动化检测的能力。
1492 40
番茄叶片病害检测数据集(千张图片已划分)| AI训练适用于目标检测任务
|
8月前
|
存储 人工智能 物联网
给AI模型“瘦身”:LoRA微调技术,让你用消费级显卡玩转大模型
LoRA(低秩自适应)技术让大模型微调变得高效且低成本。它通过冻结原模型权重,仅训练小型适配矩阵,大幅减少显存占用与计算资源。相比全参数微调,LoRA在保持接近原模型性能的同时,可将可训练参数量降低至0.1%以下,使个人开发者用普通GPU也能微调7B级大模型。结合QLoRA、多任务融合与权重合并,LoRA已成为大模型落地应用的核心工具,真正实现“轻量化定制”。
|
9月前
|
关系型数据库 MySQL Linux
阿里云轻量应用服务器介绍及支持的应用镜像说明
阿里云轻量应用服务器(Simple Application Server)是面向网站建设、开发测试、小型应用等轻量级使用场景的云服务器产品,适合个人或中小企业使用。其核心特点包括轻量化设计、贴近实际应用需求、账单确定性强且具备可进化能力,能帮助中小企业及开发者快速构建应用程序和网站,便捷开启上云之旅。
|
人工智能 监控 并行计算
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可视化训练
|
编解码 机器人
可控高清视频生成: CogVideoX+DiffSynth-Studio = “配置拉满”
不久前,CogVideoX 开源了 5B 版本的文生视频模型。开源项目 DiffSynth-Studio 为 CogVideoX 提供了更强大的功能支持。我们一起来看一下,在DiffSynth-Studio 的加持下,“配置拉满”的 CogVideoX 有多强!
可控高清视频生成: CogVideoX+DiffSynth-Studio = “配置拉满”
|
机器学习/深度学习 并行计算 Linux
Stabble Diffusion 本地部署教程详解
Stabble Diffusion 本地部署教程详解
4509 1

热门文章

最新文章