【飞桨黑客松-AIGC - DreamBooth LoRA】This is my HomeTown

【飞桨黑客松-AIGC - DreamBooth LoRA】This is my HomeTown

🔥🔥🔥 前往官网了解题目详情、报名、冲大奖、玩创意!👉👉👉 https://github.com/PaddlePaddle/Paddle/issues/50631#task105

【PaddlePaddle Hackathon 第四期】No.105 作品提交:基于PaddleNLP PPDiffusers 训练 AIGC 趣味模型

【赛题链接】:https://github.com/PaddlePaddle/Paddle/issues/50631#task105

【PaddlePaddle Hackathon 第四期 任务总览】:https://github.com/PaddlePaddle/Paddle/issues/50629

【队名】:together

【模型简介】:This is my hometown

【模型链接】: https://huggingface.co/peteli/hometown

【AI Studio 项目地址】:https://aistudio.baidu.com/aistudio/projectdetail/5682527

【AI Studio 应用中心】:AIGC-HomeTown

1. 背景介绍

紫金花海

The Purple Flower Sea

紫金苑景区,金昌市民习惯称为“紫金花海”,位于金昌市区的北部,新华路街道天津路与泰安路交叉口北150米,总面积有700多亩。是按照景城一体化理念打造的香草花卉生态休闲旅游景区。

微风袭来
荡漾起的紫色“海浪”映入眼帘
沁人心脾的清香
淡淡地飘过每个角落
小憩在花海旁
倾听着花的物语
骑着单车
穿梭在紫色海洋
掠过小湖
静静享受紫色连波的浪漫
走过小桥
感受着紫色田园的美好

#pic_center

     被花海围绕的湖边
     倒映出一张张欢乐的笑脸
     穿过小小的别墅庄园
     来到充满爱意的婚礼广场
     浪漫而惬意的气氛
     像是走进了童话世界
     蜜蜂在“海浪”中辛勤游荡
     蝴蝶在“海浪”中嬉戏打闹
     小鸟在“海浪”中合奏吟唱
     人儿在“海浪”中忘记烦恼
     一个个穿梭在“海浪”的身影
     仿佛都在诉说着这别致的一切

     迎着初秋的微风
     远离城市的喧嚣
     游荡在这梦幻浪漫的紫色海洋
     把一切的不开心都遗忘
     欢迎大家来紫色小城游玩噢~

2. 准备工作

2.1 环境安装

pip install "paddlenlp>=2.5.2" "ppdiffusers>=0.11.1" safetensors --user
# 请运行这里安装所需要的依赖环境!!
!pip install "paddlenlp==2.5.2" safetensors "ppdiffusers>=0.11.1" --user

2.2 Hugging Face Space 注册和登录

题目要求将模型上传到 Hugging Face,需要先注册、登录。

  • 注册和登录:https://huggingface.co/join

  • 获取登录 Token

  • Aistudio 登录 Huggingface Hub

Tips:为了方便我们之后上传权重,我们需要登录 Huggingface Hub,想要了解更多的信息我们可以查阅 官方文档

# 登录 Huggingface Hub
!git config --global credential.helper store
from huggingface_hub import login
login()
VBox(children=(HTML(value='<center> <img\nsrc=https://huggingface.co/front/assets/huggingface_logo-noborder.sv…
  • tips:如何检测是否登录成功?

打开日志控制控制台,查看日志。

登录成功时,日志如下:

3. 如何训练模型,并上传到HF

3.1 上传图片

  • 首先,我们需要将所需训练的图片上传到aistudio上的文件夹, 我们可以通过👉拖拽上传 的方式,将我们所需的图片上传至指定的文件夹。
  • 在这里,我们已经在👉hometown文件夹准备好了如下所示的5张图片。




3.2 训练参数调整

在训练过程中,我们可以尝试修改训练的默认参数,下面将从三个方面介绍部分参数。

👉主要修改的参数:

  • pretrained_model_name_or_path :想要训练的模型名称或者本地路径的模型,例如:"runwayml/stable-diffusion-v1-5",更多模型可参考 PaddleNLP 文档
  • instance_data_dir:训练图片所在的文件夹目录,我们可以将图片上传至aistudio项目。
  • instance_prompt:训练所使用的 Prompt 文本。
  • resolution:训练时图像的分辨率,建议为 512
  • output_dir:训练过程中,模型保存的目录。
  • checkpointing_steps:每隔多少步保存模型,默认为100步。
  • learning_rate:训练使用的学习率,当我使用 LoRA 训练模型的时候,我们需要使用更大的学习率,因此我们这里使用 1e-4 而不是 2e-6
  • max_train_steps:最大训练的步数,默认为500步。

👉可选修改的参数:

  • train_batch_size:训练时候使用的 batch_size,当我们的GPU显存比较大的时候可以加大这个值,默认值为4
  • gradient_accumulation_steps:梯度累积的步数,当我们GPU显存比较小的时候还想模拟大的训练批次,我们可以适当增加梯度累积的步数,默认值为1
  • seed:随机种子,设置后可以复现训练结果。
  • lora_rankLoRA 层的 rank 值,默认值为4,最终我们会得到 3.5MB 的模型,我们可以适当修改这个值,如:32、64、128、256 等。
  • lr_scheduler:学习率衰减策略,可以是"linear", "constant", "cosine"等。
  • lr_warmup_steps:学习率衰减前,warmup 到最大学习率所需要的步数。

👉训练过程中评估使用的参数:

  • num_validation_images:训练的过程中,我们希望返回多少张图片,默认值为4张图片。
  • validation_prompt:训练的过程中我们会评估训练的怎么样,因此我们需要设置评估使用的 prompt 文本。
  • validation_steps:每隔多少个 steps 评估模型,我们可以查看训练的进度条,知道当前到了第几个 steps

🔥Tips:
训练过程中会每隔 validation_steps 将生成的图片保存到 {你指定的输出路径}/validation_images/{步数}.jpg

👉权重上传的参数:

  • push_to_hub: 是否将模型上传到 huggingface hub,默认值为 False
  • hub_token: 上传到 huggingface hub 所需要使用的 token,如果我们已经登录了,那么我们就无需填写。
  • hub_model_id: 上传到 huggingface hub 的模型库名称, 如果为 None 的话表示我们将使用 output_dir 的名称作为模型库名称。

在下面的例子中,由于我们前面已经登录了,因此我们可以开启 push_to_hub 按钮,将最终训练好的模型同步上传到 huggingface.co

当我们开启push_to_hub后,等待程序运行完毕后会自动将权重上传到这个路径 https://huggingface.co/{你的用户名}/{你指定的输出路径} ,例如: https://huggingface.co/peteli/hometown

!python train_dreambooth_lora.py \
  --pretrained_model_name_or_path="runwayml/stable-diffusion-v1-5"  \
  --instance_data_dir="./hometown" \
  --output_dir="lora_outputs" \
  --instance_prompt="a sea of purple and gold flowers" \
  --resolution=512 \
  --train_batch_size=1 \
  --gradient_accumulation_steps=1 \
  --checkpointing_steps=100 \
  --learning_rate=1e-4 \
  --lr_scheduler="constant" \
  --lr_warmup_steps=0 \
  --max_train_steps=1000 \
  --seed=0 \
  --lora_rank=4 \
  --push_to_hub=False \
  --validation_prompt="a sea of lavender and gold flowers in the world of fairy tales is my hometown" \
  --validation_steps=100 \
  --num_validation_images=4

3.3 可视化训练过程

VisualDL使用参考:官方教程

我们可以参照如图所示的步骤,开启visualdl,然后查看训练过程中的指标变化。

3.4 挑选满意的权重上传至Huggingface

参数解释:

  • upload_dir:我们需要上传的文件夹目录。
  • repo_name:我们需要上传的repo名称,最终我们会上传到 https://huggingface.co/{你的用户名}/{你指定的repo名称}, 例如: https://huggingface.co/peteli/hometown.
  • pretrained_model_name_or_path:训练该模型所使用的基础模型。
  • prompt:搭配该权重需要使用的Prompt文本。
from utils import upload_lora_folder
upload_dir                    = "lora_outputs"                   # 我们需要上传的文件夹目录
repo_name                     = "hometown"                  # 我们需要上传的repo名称
pretrained_model_name_or_path = "runwayml/stable-diffusion-v1-5" # 训练该模型所使用的基础模型
prompt                        = "a sea of lavender and gold flowers in the world of fairy tales is my hometown" # 搭配该权重需要使用的Prompt文本

upload_lora_folder(
    upload_dir=upload_dir,
    repo_name=repo_name,
    pretrained_model_name_or_path=pretrained_model_name_or_path,
    prompt=prompt, 
)

4. 效果展示

图1:

图2:

图3:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值