总体思路与数据闭环
将 Stable Diffusion 的整个生命周期沉淀为可度量的数据闭环:从日志与指标采集、质量评估、性能与资源监控到可视化与告警,用数据驱动参数调优、模型选择与故障定位。核心要素包括:统一的结构化日志、可复现的评估集与指标、实时的资源与延迟监控、以及面向不同场景的指标权重配置。
数据采集与指标体系
- 日志字段标准化(每次生成一条 JSON,示例):
- 基础:timestamp、request_id、prompt、model_version、seed、steps、guidance_scale、sampler、width、height、batch_size
- 结果:success、error_message、inference_time、images[paths]
- 资源:gpu_utilization(%)、vram_used(GB)、cpu_mem_used(GB)
- 质量:clip_score、fid(离线)
- 关键指标与建议口径
- 成功率 = 成功任务数 ÷ 总任务数;失败率 = 1 − 成功率
- 单次生成时间(端到端)、首图时间(TTF)、吞吐量(img/s 或 req/s)
- 资源:GPU 利用率、显存占用、CPU/内存占用
- 质量:CLIP 相似度、FID(需参考集)、人审/美学评分(可选)
- 采集方式
- WebUI 侧:扩展进度与错误模块,拦截任务生命周期事件与异常;为每次生成生成task_id并写入日志
- 推理服务侧:在推理入口/出口埋点,记录计时与资源快照;批量任务按批聚合统计
- 训练侧:记录loss、lr、grad_norm等,配合验证集定期评估质量指标(如 FID)
质量评估方法
- 分布级相似度:使用 FID 对比生成图像与参考真实图像分布(Inception-V3 特征),数值越低越好;可作为模型/参数对比的主指标之一
- 图文一致性:使用 CLIP 计算图像与提示的余弦相似度,反映语义对齐;可与人工偏好做加权
- 任务特化指标:如人脸场景引入关键点误差、对称性、眼睛一致性等,量化结构/细节质量
- 多样性与覆盖度:对生成集合做特征聚类与网格覆盖,衡量覆盖率分数,避免模式坍塌
- 评估流程建议
- 固定随机种子与参数网格,构建小规模但可复现的评测集(含不同主题/难度)
- 离线计算 FID/CLIP;在线监控 CLIP 与人工评分;定期回归测试防止质量漂移
性能与资源监控
- 目标与阈值示例(按场景调整)
- 单次生成时间:尽量 < 10 秒(取决于分辨率/步数/模型)
- 吞吐量:批量服务建议 > 2 img/s
- GPU 利用率:70–90% 较为健康;>90% 可能带来排队与抖动
- 显存占用:建议 < 80%,为峰值波动留余量
- 监控与告警
- 实时采集 GPU/显存/CPU/内存(如 gpustat、psutil),记录P95/P99 延迟与失败率
- 使用 Prometheus + Grafana 暴露指标与面板:请求速率、延迟分位、资源利用率、错误率
- 设置告警:如失败率 > 5%、P95 延迟 > 5s、GPU 利用率 > 90%持续 5 分钟等
可视化看板与实验对比
- 看板模块
- 运营:每日生成次数、成功率、失败原因 TopN、模型/采样器使用排行
- 性能:TTF、单次生成时间分布、吞吐曲线、GPU/显存曲线
- 质量:CLIP 分布、FID 趋势、人工评分均值
- 实验对比与权重
- 建立“质量-效率-资源”三维指标矩阵,按场景设置权重(如艺术创作:质量 70% / 效率 20% / 资源 10%),形成可量化对比报告
- WebUI 侧扩展
- 基于任务 ID 与生命周期事件,构建实时统计看板(按日/按模型/按采样器),展示趋势与分布,辅助定位瓶颈与异常
落地步骤清单
- 明确目标与口径:定义业务侧的质量/效率/资源主指标与验收阈值
- 埋点与日志:统一字段与落库策略;WebUI 侧扩展进度/错误模块,推理服务侧加装饰器埋点
- 评估集与基线:构建小规模评测集,固化seed/参数;计算FID/CLIP基线
- 监控告警:上线 Prometheus + Grafana,配置关键告警;建立日报/周报
- 迭代与复盘:每次参数/模型/硬件变更都做A/B 对比,沉淀“配置-指标”映射与优化手册