# diffusion_lora_training **Repository Path**: snob10/diffusion_lora_training ## Basic Information - **Project Name**: diffusion_lora_training - **Description**: 扩散模型LoRA训练全记录 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-07 - **Last Updated**: 2025-08-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 扩散模型 LoRA 训练全记录 ## LoRA 简介 **LoRA**(Low-Rank Adaptation,低秩适应)是一种高效的 大模型微调(Fine-Tuning) 方法,通过向原始模型注入少量可训练的低秩矩阵,仅调整部分参数,而非全量微调,从而大幅减少计算和存储成本。 低秩分解:假设原模型权重矩阵 W∈Rd×k,LoRA 不直接调整 W,而是学习两个低秩矩阵rA∈Rd×r 和B∈Rr×k(r≪d,k),使更新量 ΔW=AB,训练时仅优化 A 和 B,冻结原模型权重 W,推理时,合并 W+AB进行计算。 ## 本地训练环境 [ai-toolkit](https://github.com/ostris/ai-toolkit) 开源微调 UI
要求环境: - python >3.10 - Nvidia GPU with enough ram to do what you need - python venv - git [DiffSynth-Studio](https://github.com/modelscope/DiffSynth-Studio) 魔塔社区的开源架构 ## 训练参数 ```json { // 基础任务配置 "type": "ui_trainer", // 训练类型:UI训练器 "training_folder": "/home/llama/ai-toolkit/output", // 训练输出目录 "sqlite_db_path": "/home/llama/ai-toolkit/aitk_db.db", // SQLite数据库路径 "device": "cuda", // 使用CUDA(GPU加速) "trigger_word": " fantasy game item", // 风格触发词 "performance_log_every": 10, // 每10步记录性能日志 // LoRA网络配置 "network": { "type": "lora", // 微调方法:LoRA "linear": 32, // 线性层秩=32 "linear_alpha": 32, // 线性层缩放因子=32 "conv": 16, // 卷积层秩=16 "conv_alpha": 16, // 卷积层缩放因子=16 "lokr_full_rank": true, // 启用全秩分解 "lokr_factor": -1, // 自动计算分解因子 "network_kwargs": { "ignore_if_contains": [] // 无忽略层 } }, // 模型保存配置 "save": { "dtype": "bf16", // 保存精度:bfloat16 "save_every": 250, // 每250步保存一次 "max_step_saves_to_keep": 4, // 保留最近4个检查点 "save_format": "diffusers", // 保存格式:diffusers "push_to_hub": false // 不上传至Hugging Face }, // 训练数据集配置(完整参数) "datasets": [ { "folder_path": "/home/llama/ai-toolkit/datasets/traget", "control_path": "/home/llama/ai-toolkit/datasets/original", "mask_path": null, // 无遮罩路径 "mask_min_value": 0.1, // 遮罩最小阈值 "default_caption": "", // 默认空描述 "caption_ext": "txt", // 描述文件扩展名 "caption_dropout_rate": 0.05, // 描述随机丢弃率5% "cache_latents_to_disk": false, // 不缓存潜变量 "is_reg": false, // 非正则化数据 "network_weight": 1, // 数据集权重=1 "resolution": [512, 768, 1024], // 支持分辨率列表 "controls": [], // 无额外控制 "shrink_video_to_frames": true, // 视频拆解为帧 "num_frames": 1, // 每段取1帧 "do_i2v": true // 启用图像→视频 } ], // 训练参数(关键参数) "train": { "batch_size": 1, // 批次大小=1 "bypass_guidance_embedding": false, "steps": 4000, // 总训练步数 "gradient_accumulation": 1, // 梯度累积次数=1 "train_unet": true, // 训练UNet "train_text_encoder": false, // 不训练文本编码器 "gradient_checkpointing": true, // 启用梯度检查点 "noise_scheduler": "flowmatch", // 噪声调度器类型 "optimizer": "adamw8bit", // 8位AdamW优化器 "lr": 0.0001, // 学习率0.0001 "ema_config": { "use_ema": false, // 不启用指数移动平均 "ema_decay": 0.99 //EMA衰减率(未启用时无效) }, "skip_first_sample": false, // 不跳过首轮采样 "disable_sampling": false, // 不禁用采样 "dtype": "bf16", // 训练精度为bfloat16 "diff_output_preservation": false, // 不启用输出保留 "diff_output_preservation_multiplier": 1, // 输出保留乘数(未启用) "diff_output_preservation_class": "person" // 保留类别为"person"(未启用) }, }, // 基础模型配置 "model": { "name_or_path": "black-forest-labs/FLUX.1-Kontext-dev", "quantize": true, // 启用量化 "qtype": "qfloat8", // 8位浮点量化 "arch": "flux_kontext" // 模型架构 }, // 采样配置(示例) "sample": { "sampler": "flowmatch", "sample_every": 250, // 每250步采样一次 "prompt": "transform the image to a fantasy game item", "guidance_scale": 4 // 提示词权重=4 } ```