StableDiffusion-04 (炼丹篇) 15分钟 部署服务并进行LoRA微调全过程详细记录 不到20张百变小樱Sakura微调 3090(24GB) 学不会你打我!

背景描述

接上一节的内容:
StableDiffusion-04 炼丹篇

请你确保:

  • 已按照前几节完成了配置
  • 已按照前几节正常运行
  • 已按照前几节正常出图
  • 上一节结尾:已经完成了对图片的打标签操作,接下来我们就要进行炼丹了!

上节说到:
从小就非常喜欢小樱!从小樱的动画到动漫书我都看了个遍,包括C妈几年前更新了(哇这么久了都)Clear Card。
直到最近C妈终于更新完了 Clear Card 的漫画,听说好像新的视频在筹备了,我好期待!!!

在这里插入图片描述

在这里插入图片描述

炼丹配置

按照我们上节的情况,我们打开:http://server:6006页面,请图文对比着一起配置。
由于我们是学习,所以按照图中可以跑起来是第一要义,不用调整太多了。

选择如下标签并配置
● Model-Pretrained model name or path: 基础模型的位置,如果没有将下载
● Model-Trained Model output name: 输出的模型名称
● Model-Image folder: 图片的上一级目录,(不要写到30_sakura这一级)
● Folders-Output directory for trained model: 训练完保存的目录
● Folders-Logging directory:日志的文件夹

详情如下图:
在这里插入图片描述

  • Paramters-基本配置默认即可(暂时先跑通)
    在这里插入图片描述
    ● Paramters-Text Encoder learning rate: 网上推荐 5e-5
    ● Paramters-No half VAE
    ● Paramters-Network Rank: 64
    ● Paramters-Network Alpha: 64
    在这里插入图片描述

开始训练

完成上述的配置之后,我们点击按钮开始训练
在这里插入图片描述

页面上是不会有什么变化的,我们可以看后台的日志。过程中如果你是第一次运行,那你需要下载一部分模型。
可以看到下图,正在进行一些别的模型下载。
在这里插入图片描述
如果你加载模型顺利的话,你会看到如下的训练过程:
模型已经正常加载,一共19张图片epoch=1(默认配置的),一共570步训练,会显示着实时进度和预估完成的时间。
在这里插入图片描述

此时我们可以观察显卡的状态如下:
大约 13GB 的显存占用,所以底显卡跑的话,可能会遇到 OOM 的问题。
在这里插入图片描述

训练完毕

在经过漫长的等待之后··· 如果出现了如下图片的内容,那么恭喜你!已经成功练出了自己的第一炉丹!
在这里插入图片描述
上一节我们配置的保存目录是:

/root/autodl-tmp/kohya_ss/wzk_test

我的目录如下,你可以参考:
在这里插入图片描述
这个叫: wzk_lora_model.safetensors 便是我们的LoRA了,名字取决于你在配置中的名称。只要是.safetensors结尾即可。

测试效果

(这里随便选了一个基础模型)

无LoRA

其他图我就不放了
在这里插入图片描述

使用LoRA

为了更好更多的展示,这里直接把COUNT调到4,直接给大家展示4个一张的
提示词我也不放了!大家按照自己的喜欢使用即可!
多个LoRA搭配使用一下效果更佳!可以看这节内容,里边有详细的使用流程
StableDiffusion-02 LoRA上手使用实测
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 36
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!对于ChatGPT-LM模型的微调,我可以为您提供一些基本的指导。以下是一个示例代码,用于微调ChatGPT-LM模型(如chatglm2-6b)来执行Lora任务: ```python import torch from transformers import GPT2LMHeadModel, GPT2Tokenizer, GPT2Config, Trainer, TrainingArguments from torch.utils.data import Dataset, DataLoader # 加载预训练的模型和tokenizer model_name = "microsoft/DialoGPT-large" model = GPT2LMHeadModel.from_pretrained(model_name) tokenizer = GPT2Tokenizer.from_pretrained(model_name) # 构建自定义的Lora数据集 class LoraDataset(Dataset): def __init__(self, conversations): self.conversations = conversations def __len__(self): return len(self.conversations) def __getitem__(self, idx): return self.conversations[idx] # 定义微调所需的函数 def prepare_inputs(examples): # 利用tokenizer对输入进行编码 inputs = tokenizer(examples["input_text"], padding="max_length", truncation=True, max_length=512) inputs["labels"] = inputs.input_ids.clone() return inputs def compute_metrics(pred): # 计算模型在验证集上的指标,这里示例中仅计算损失(负对数似然) loss = pred.loss metrics = {"loss": loss} return metrics # 加载并处理Lora数据集 conversations = [...] # 您的Lora数据集,每个对话是一个字符串列表 dataset = LoraDataset(conversations) train_dataset = dataset[:int(0.9 * len(dataset))] val_dataset = dataset[int(0.9 * len(dataset)):] # 定义微调参数 training_args = TrainingArguments( output_dir="./lora_model", num_train_epochs=3, per_device_train_batch_size=2, per_device_eval_batch_size=2, logging_steps=1000, save_steps=5000, evaluation_strategy="steps", eval_steps=2000, save_total_limit=1, ) # 创建Trainer并进行微调 trainer = Trainer( model=model, args=training_args, train_dataset=train_dataset, eval_dataset=val_dataset, data_collator=prepare_inputs, compute_metrics=compute_metrics, ) trainer.train() ``` 请注意,上述代码仅提供了一个简单的示例。在微调ChatGPT-LM模型时,您需要根据您的数据集和任务对代码进行适当的调整。还可以根据需要调整微调参数。 希望这可以帮到您!如果您有任何其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值