TL;DR 与前置条件
版本:V1.0,日期:2025-02-18。目标:在本地跑 Stable Diffusion WebUI 1.10.1,并用 kohya_ss 训练一个制造业零件 LoRA。分类:本地部署。
测试硬件:RTX 3060 12GB、RTX 4090 24GB;Ubuntu 22.04、Windows 11 23H2;NVIDIA Driver 550.54;CUDA 12.1。3060 训练 512x512 LoRA,batch 1,约 42 分钟/1000 steps;4090 约 11 分钟。
Pre-requisites:Python 3.10.11、Git 2.44、NVIDIA 显卡、至少 80GB 空盘。AMD/CPU 可跑,但训练不建议。
Note: 本文是 Stable Diffusion本地部署教程,不讲 Gemini怎么注册、Google AI怎么用、Gemini国内使用;LLM 只适合辅助写提示词,不参与出图推理。
1. 安装 WebUI 并完成基础出图
确认 GPU 驱动可见。
nvidia-smiExpected output: Driver Version: 550.54 CUDA Version: 12.4 GPU Name: NVIDIA GeForce RTX 3060 Memory-Usage: 300MiB / 12288MiB创建 Python 环境。Windows 用 Anaconda Prompt;Linux 用 shell。
conda create -n sdwebui python=3.10.11 -y conda activate sdwebuiExpected output: # packages in environment at .../envs/sdwebui python 3.10.11获取 WebUI。此处是官方免费路线,限制是首次安装依赖慢,且模型需自行准备。
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git cd stable-diffusion-webuiExpected output: Receiving objects: 100% Resolving deltas: 100%放置模型。Stable Diffusion模型下载后,把 .safetensors 放到以下目录。推荐先用 SD 1.5 或 SDXL base。
mkdir -p models/Stable-diffusion cp /data/models/v1-5-pruned-emaonly.safetensors models/Stable-diffusion/Expected output: (no output means success)启动。3060 建议加
--medvram;4090 不需要。python launch.py --xformers --medvram --listen --port 7860Expected output: Running on local URL: http://127.0.0.1:7860 Startup time: 38.2s
Warning: 不要把 --listen 暴露到公网。至少用防火墙限制来源 IP。
2. 训练制造业零件 LoRA:数据、参数、命令
准备数据。实测最小可用集:30 张同一类零件图片,例如法兰盘、夹具、CNC 铝件;分辨率裁到 768x768;每张配同名 .txt 标签。
dataset/ └── flange_lora/ ├── 001.png ├── 001.txt ├── 002.png └── 002.txtExpected output: 30 images + 30 captions标签示例。触发词固定放第一位,便于后续验证。
cat dataset/flange_lora/001.txtExpected output: fh_flange, cnc aluminum flange, circular metal part, bolt holes, studio lighting安装 kohya_ss。LoRA训练怎么用的关键不是界面,而是参数可复现。
git clone https://github.com/bmaltais/kohya_ss.git cd kohya_ss python -m venv venv source venv/bin/activate pip install -r requirements_linux.txtExpected output: Successfully installed accelerate diffusers transformers xformers3060 12GB 推荐参数。网络维度 16 足够学零件形状;学习率过高会烧图。
accelerate launch train_network.py \ --pretrained_model_name_or_path=/data/models/v1-5-pruned-emaonly.safetensors \ --train_data_dir=/data/dataset/flange_lora \ --output_dir=/data/lora_out \ --output_name=fh_flange_lora_v1 \ --resolution=512,512 \ --network_module=networks.lora \ --network_dim=16 \ --network_alpha=8 \ --train_batch_size=1 \ --max_train_steps=1200 \ --learning_rate=1e-4 \ --mixed_precision=fp16 \ --save_every_n_steps=300Expected output: steps: 1200/1200 loss: 0.085 - 0.130 model saved: fh_flange_lora_v1.safetensors
Note: 若 loss 低于 0.03 且样图出现固定视角复制,通常是过拟合。把 steps 降到 800,或增加 20 张不同角度图片。
3. 验证结果与故障定位
复制 LoRA 到 WebUI。
cp /data/lora_out/fh_flange_lora_v1.safetensors \ stable-diffusion-webui/models/Lora/Expected output: (no output means success)WebUI 提示词验证。
Prompt: fh_flange, cnc aluminum flange, product photo, white background, sharp edges <lora:fh_flange_lora_v1:0.75> Negative: blur, deformed, extra holes, melted metal Sampler: DPM++ 2M Karras, steps 28, CFG 7, 512x512, seed 3407Expected output: Image contains circular flange, consistent bolt holes, metallic texture. RTX 3060 generation time: 5.8s/image RTX 4090 generation time: 1.4s/image如何确认已修好:连续换 5 个 seed,至少 4 张保持触发词对象特征;去掉 LoRA 后对象特征明显下降;显存不 OOM;WebUI 控制台无 NaN loss 或 CUDA illegal memory access。
References: AUTOMATIC1111 stable-diffusion-webui;kohya_ss;NVIDIA CUDA 12.1 文档。若官方、免费、DIY 路线在模型下载或依赖拉取时网络不稳定,商都加速器可作为其中一个网络连通性选项:wizzegroup.com。