当前位置: 首页 > news >正文

上海闵行区 网站建设全球外贸网

上海闵行区 网站建设,全球外贸网,中国光大国际建设工程公司网站,网站开发 运行及维护stable diffusion微调总结 stable diffusion模型类别#xff1a;SDSD2SDXLSDXL LCM#xff08;潜在一致性模型#xff09;SDXL DistilledSDXL Turbo 安装accelerate通过pip安装配置 accelerate config查看配置 安装diffusers数据处理BLIP模型优化 微调方法Dreambooth微调准备… stable diffusion微调总结 stable diffusion模型类别SDSD2SDXLSDXL LCM潜在一致性模型SDXL DistilledSDXL Turbo 安装accelerate通过pip安装配置 accelerate config查看配置 安装diffusers数据处理BLIP模型优化 微调方法Dreambooth微调准备数据模型训练脚本模型推理模型转换脚本 DreamLORA微调模型训练脚本模型推理脚本 Full FineTune数据格式训练脚本推理脚本 LORA微调数据格式训练脚本推理脚本 stable diffusion 模型类别 SD SD是一个基于latent的扩散模型它在UNet中引入text condition来实现基于文本生成图像。SD的核心来源于Latent Diffusion这个工作常规的扩散模型是基于pixel的生成模型而Latent Diffusion是基于latent的生成模型它先采用一个autoencoder将图像压缩到latent空间然后用扩散模型来生成图像的latents最后送入autoencoder的decoder模块就可以得到生成的图像。 SD2 SD 2.0相比SD 1.x版本的主要变动在于模型结构和训练数据两个部分。 首先是模型结构方面SD 1.x版本的text encoder采用的是OpenAI的CLIP ViT-L/14模型其模型参数量为123.65M而SD 2.0采用了更大的text encoder基于OpenCLIP在laion-2b数据集上训练的CLIP ViT-H/14模型其参数量为354.03M相比原来的text encoder模型大了约3倍。 SDXL Stable Diffusion XL (SDXL) 是一种强大的文本到图像生成模型它以三种关键方式迭代以前的 Stable Diffusion 模型 UNet 增大了 3 倍SDXL 将第二个文本编码器 (OpenCLIP ViT-bigG/14) 与原始文本编码器相结合显着增加了参数数量引入大小和裁剪调节以防止训练数据被丢弃并更好地控制生成图像的裁剪方式引入两阶段模型过程基本模型也可以作为独立模型运行生成图像作为细化器模型的输入该**模型添加了额外的高质量细节 SDXL LCM潜在一致性模型 SDXL 潜在一致性模型 LCM 如“潜在一致性模型使用几步推理合成高分辨率图像”中提出的那样通过减少所需的步骤数彻底改变了图像生成过程。它将原始 SDXL 模型提炼成一个需要更少步骤4 到 8 个而不是 25 到 50 个步骤来生成图像的版本。该模型对于需要在不影响质量的情况下快速生成图像的应用特别有利。值得一提的是它比原来的 SDXL 小 50%快 60%。 SDXL Distilled SDXL Distilled 是指为特定目的而“蒸馏”的 SDXL 模型版本。例如Segmind 稳定扩散模型 SSD-1B 是 SDXL 的精炼版本体积缩小了 50%速度提高了 60%同时保持了高质量的文本到图像生成功能。此版本对于速度至关重要但图像质量不能受到影响的场景特别有用。 SDXL Turbo SDXL Turbo 是 SDXL 1.0 的新版本专为“实时合成”而开发。这意味着它可以非常快速地生成图像这一功能由一种称为对抗扩散蒸馏 ADD 的新训练方法提供支持。这种变体是独一无二的因为它具有有损自动编码组件尽管在图像的编码和解码过程中会导致一些信息丢失但可以更快地生成图像。 安装accelerate 通过pip安装 pip install accelerate 配置 accelerate config -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------In which compute environment are you running?在本机服务器上就选择This machine This machine -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Which type of machine are you using?单机多卡选择multi-GPU单卡选第一个选项 multi-GPU How many different machines will you use (use more than 1 for multi-node training)? [1]: 1 几台机器用来训练 Do you wish to optimize your script with torch dynamo?[yes/NO]: Do you want to use DeepSpeed? [yes/NO]: Do you want to use FullyShardedDataParallel? [yes/NO]: Do you want to use Megatron-LM ? [yes/NO]: How many GPU(s) should be used for distributed training? [1]:2 用几张卡 What GPU(s) (by id) should be used for training on this machine as a comma-seperated list? [all]:all 全部都用来训练 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Do you wish to use FP16 or BF16 (mixed precision)? fp16 选择训练精度类型 accelerate configuration saved at /root/.cache/huggingface/accelerate/default_config.yaml 配置文件保存位置可修改 查看配置 accelerate env 安装diffusers 注意必须从源码安装最新的版本不然无法通过版本审核。 git clone https://github.com/huggingface/diffusers cd diffusers pip install -e .数据处理 我们需要筛除分辨率较低质量较差**比如说768*768分辨率的图片 100kb**存在破损以及和任务目标无关的数据接着去除数据里面可能包含的水印干扰文字等最后就可以开始进行数据标注了。 数据标注可以分为自动标注和手动标注。自动标注主要依赖像BLIP和Waifu Diffusion 1.4这样的模型手动标注则依赖标注人员。 BLIP 图像字幕开放式视觉问答多模态/单模态特征提取图文匹配 数据注意事项 当我们训练人物主题时一般需要10-20张高质量数据当我们训练画风主题时需要100-200张高质量数据当我们训练抽象概念时则至少需要200张以上的数据。 不管是人物主题画风主题还是抽象概念一定要保证数据集中数据的多样性比如说猫女姿态角度全身半身的多样性。 每个数据都要符合我们的审美和评判标准 模型注意事项 1. 底模型的选择至关重要SDXL LoRA的很多底层能力与基础概念的学习都来自于底模型的能力。 并且底模型的优秀能力需要与我们训练的主题比如说人物画风或者某个抽象概念相适配。如果我们要训练二次元LoRA则需要选择二次元底模型如果我们要训练三次元LoRA则需要选择三次元底模型以此类推。 模型以savetensor为后缀的是加密的ckpt是开源的。 模型优化 1.剪枝剪枝后的模型pruned泛化性好存储空间小。 2.ema: ema是一种常用的优化神经网络的方法他可以平滑模型的参数更新降低模型训练过程中的波动和震荡增强模型的鲁棒性和泛化能力 微调方法 目前主流训练 Stable Diffusion 模型的方法有 Full FineTune 全量训练数据以图片标注的形式。 Dreambooth DreamBooth是一种训练技术通过对某个主题或风格的几张图像进行训练来更新整个扩散模型。它的工作原理是将提示中的特殊单词与示例图像相关联。 Text Inversion 文本反转是一种训练技术用于通过一些您希望其学习内容的示例图像来个性化图像生成模型。该技术的工作原理是学习和更新文本嵌入新嵌入与您必须在提示中使用的特殊单词相关联以匹配您提供的示例图像。 LoRA LoRA大型语言模型的低秩适应是一种流行的轻量级训练技术可显着减少可训练参数的数量。它的工作原理是向模型中插入较少数量的新权重并且仅对这些权重进行训练。这使得 LoRA 的训练速度更快、内存效率更高并产生更小的模型权重几百 MB更容易存储和共享。LoRA 还可以与 DreamBooth 等其他训练技术相结合以加速训练。 Dreambooth微调 准备数据 https: //huggingface.co/datasets/diffusers/dog-example模型训练脚本 export MODEL_NAMEstable-diffusion-2 export INSTANCE_DIRdog export OUTPUT_DIRpath-to-save-modelaccelerate launch train_dreambooth.py \--pretrained_model_name_or_path$MODEL_NAME \--instance_data_dir$INSTANCE_DIR \--output_dir$OUTPUT_DIR \--instance_prompta photo of sks dog \--resolution768 \--train_batch_size1 \--gradient_accumulation_steps1 \--learning_rate5e-6 \--lr_schedulerconstant \--lr_warmup_steps0 \--max_train_steps400 \train_dreambooth.py: 脚本位置为https://github.com/huggingface/diffusers/blob/main/examples/dreambooth/train_dreambooth.py pretrained_model_name_or_path: 模型的路径 instance_data_dir 训练的图片位置 output_dir 微调模型保存位置 instance_prompt罕见字符使用 Stable Diffusion 模型去生成一个已有相关主题class 的先验知识并在训练中充分考虑原 class 和新 instance 的 prior preservation loss从而避免新 instance 图片特征渗透到其他生成里。 resolution 图片尺寸和训练的模型相对应 train_batch_size 训练批次 gradient_accumulation_steps gradient_accumulation_steps通过累计梯度来解决本地显存不足问题。 假设原来的batch_size6样本总量为24。 那么参数更新次数24/64。 如果我的显存不够6batch想调成3batch那么我的参数更新次数就是24/38次 但是我设置了gradient_accumulation_steps2batch还是6但是内部是按照batch3来算的计算两次batch3后进行累计梯度即batch_size6/23参数更新次数不变24/3/24在梯度反传时每gradient_accumulation_steps次进行一次梯度更新之前照常利用loss.backward()计算梯度。 learning_rate学习率 lr_scheduler 策略 lr_warmup_steps预热的步数 max_train_steps训练步数 模型推理 from diffusers import StableDiffusionPipeline import torchmodel_id stable_finetine/path-to-save-model pipe StableDiffusionPipeline.from_pretrained(model_id, torch_dtypetorch.float16).to(cuda)prompt A photo of dog in a bucket image pipe(prompt, num_inference_steps50, guidance_scale7.5).images[0]image.save(dog-bucket2.png)模型转换脚本 python convert_diffusers_to_original_stable_diffusion.py --model_path path-to-save-model --checkpoint_path dreambooth_dog.safetensors --use_safetensorsconvert_diffusers_to_original_stable_diffusion.py 脚本位置在https://github.com/huggingface/diffusers/blob/main/scripts/convert_diffusers_to_original_stable_diffusion.py model_path经过dreambooth训练出来的模型 checkpoint_path 自定义命名 DreamLORA微调 模型训练脚本 export MODEL_NAMEstable-diffusion-2 export INSTANCE_DIRdog export OUTPUT_DIRpath-to-save-lora-modelaccelerate launch train_dreambooth_lora.py \--pretrained_model_name_or_path$MODEL_NAME \--instance_data_dir$INSTANCE_DIR \--output_dir$OUTPUT_DIR \--instance_prompta photo of sks dog \--resolution768 \--train_batch_size1 \--gradient_accumulation_steps1 \--checkpointing_steps100 \--learning_rate1e-4 \--report_towandb \--lr_schedulerconstant \--lr_warmup_steps0 \--max_train_steps500 \--validation_promptA photo of sks dog in a bucket \--validation_epochs50 \--seed0 \--mixed_precision nomixed_precision: 默认是fp16会报错ValueError: Attempting to unscale FP16gradients 需要改成no则是fp36。 train_dreambooth_lora.py该脚本自带转换模型 模型推理脚本 from diffusers import DiffusionPipeline, DPMSolverMultistepScheduler import torchpipe DiffusionPipeline.from_pretrained(stable-diffusion-2, torch_dtypetorch.float16) pipe.scheduler DPMSolverMultistepScheduler.from_config(pipe.scheduler.config) pipe.to(cuda) # pipe.unet.load_attn_procs(path-to-save-lora-model) pipe.load_lora_weights(path-to-save-lora-model) image pipe(A picture of a sks dog in a bucket, num_inference_steps25).images[0] image.save(dog-bucket-lora.png) 注意点 原文档中是: pipe.unet.load_attn_procs(path-to-save-lora-model)但是加载后的推理并没有明显的效果怀疑根本没有加载到。作者后续更新了新方法测试新方法有效果 pipe.load_lora_weights(path-to-save-lora-model)Full FineTune 数据格式 folder/train/metadata.jsonl folder/train/0001.png folder/train/0002.png folder/train/0003.pngmetadata.jsonl {file_name: 0001.png, additional_feature: This is a first value of a text feature you added to your images} {file_name: 0002.png, additional_feature: This is a second value of a text feature you added to your images} {file_name: 0003.png, additional_feature: This is a third value of a text feature you added to your images}或者用huggingface上现成的数据 pokemon-blip-captions ├── data │ └── train-00000-of-00001-566cc9b19d7203f8.parquet └── dataset_infos.json训练脚本 export MODEL_NAMEstable-diffusion-2 export DATASET_NAMEpokemon-blip-captionsaccelerate launch --mixed_precisionfp16 train_full_finetune.py \--pretrained_model_name_or_path$MODEL_NAME \--dataset_name$DATASET_NAME \--use_ema \--resolution768 --center_crop --random_flip \--train_batch_size1 \--gradient_accumulation_steps4 \--gradient_checkpointing \--max_train_steps15000 \--learning_rate1e-05 \--max_grad_norm1 \--lr_schedulerconstant --lr_warmup_steps0 \--output_dirsd-pokemon-model推理脚本 import torch from diffusers import StableDiffusionPipelinemodel_path sd-pokemon-model pipe StableDiffusionPipeline.from_pretrained(model_path, torch_dtypetorch.float16) pipe.to(cuda)image pipe(prompta drawing of a pokemon stuffed animal,num_inference_steps50).images[0] image.save(yoda-pokemon.png)LORA微调 数据格式 同full Fine Tune 训练脚本 export MODEL_NAMEstable-diffusion-2 export DATASET_NAMEpokemon-blip-captionsaccelerate launch --mixed_precisionno train_lora.py \--pretrained_model_name_or_path$MODEL_NAME \--dataset_name$DATASET_NAME --caption_columntext \--resolution768 --random_flip \--train_batch_size2 \--num_train_epochs100 --checkpointing_steps5000 \--learning_rate1e-04 --lr_schedulerconstant --lr_warmup_steps0 \--seed42 \--output_dirsd-pokemon-model-lora \--validation_promptcute dragon creature推理脚本 from diffusers import StableDiffusionPipeline import torchmodel_path sd-pokemon-model-lora/checkpoint-10000 pipe StableDiffusionPipeline.from_pretrained(stable-diffusion-2, torch_dtypetorch.float16) pipe.load_lora_weights(model_path) pipe.to(cuda)prompt A pokemon with green eyes and red legs. image pipe(prompt, num_inference_steps30, guidance_scale7.5).images[0] image.save(pokemon.png)
http://www.pierceye.com/news/994471/

相关文章:

  • 网站的功能板块古镇中小企业网站建设
  • cms网站访问人数wordpress 修改网址
  • 万州网站推广1688拿货网
  • 西部数码做网站企业建设官方网站的目的
  • 做什么网站小程序网站开发怎么样
  • 西安建设网站电话号码上海公司查询官网
  • 空间除了可以做网站还能干什么北京王府井在哪个区
  • 网站的下载二维码怎么做网站地图 模板
  • 网站建设必要性阳江房产网0662
  • 南阳网站推广优化公司哪家好企业网站免费
  • jsp与asp做的网站网页微信登录不了
  • 网站开发登录要做哪些验证wordpress如何修改电子邮箱
  • 网站空间租用合同wordpress更改主题名称
  • 宁波网站推广找哪家wordpress 搜索标签
  • 购物网站建设特色沈阳公司网站制作
  • seo网站编辑是做什么的微博seo排名优化
  • 南通网站建设方案托管关键词优化排名首页
  • 哈尔滨全员核酸检测福建整站优化
  • 电子商务网站建设汉狮辽宁移动网站
  • 厂西建设厅网站网站流量依赖率
  • 手机能看的网站企业网站开发市场
  • 企业建设网站的过程世界各大网站搜索引擎提交入口
  • 网站建设云南做静态网站成本
  • 超低价的锦州网站建设网站开发有哪些软件有哪些
  • 中英文网站后台photoshop做网站
  • 优秀网站开发公司软件开发工具与环境实践报告
  • 茂名网站开发网站关键词优化步骤
  • 介绍家乡的网站怎么做天眼查企业查询公司
  • 公司网站建设代理一般做多久苏州关键词优化企业
  • 北京网站网站建设vps做网站怎么加速