如何用 Draw Things 本地训练 LoRA 终结 AI 角色漂移
-
如何用 Draw Things 本地训练 LoRA 终结 AI 角色漂移
目录- 一、引子:AI 画不出同一个人的两张脸
- 二、角色一致性技术的演化:四阶段路线图
- 阶段 1:Prompt 工程 — 脆弱且不可靠
- 阶段 2:Img2Img + ControlNet — 只能锁姿势,锁不住脸
- 阶段 3:IP-Adapter — 最接近"零成本"的解决方案
- 阶段 4:LoRA 微调 — 当前最优解
- 三、Draw Things 的技术路径:全本地 LoRA 训练管线
- 3.1 基于 Metal FlashAttention 的推理优化
- 3.2 QLoRA on Device:在量化模型上直接训练
- 3.3 模型支持矩阵
- 3.4 训练工作流
- 四、范式移转:从 Prompt 工程到模型定制
- 五、主权个人的创作基础设施
- 5.1 数据控制权
- 5.2 计算环境控制权
- 5.3 可退出成本
- 六、局限与挑战
- 七、总结
一、引子:AI 画不出同一个人的两张脸
2023 年 Stable Diffusion 爆发以来,角色一致性(character consistency)一直是最顽固的工程问题。你可以用一条 prompt 生成一张惊艳的脸,但当你要求"同一个人站在另一个场景里",模型会给出一个完全不同的人——发色变了、脸型变了、甚至连性别都变了。
这不是 bug,这是架构使然。扩散模型的本质是从随机噪声逐步去噪到目标图像。每一次生成都是独立的马尔可夫链,起始于不同的随机种子,没有任何"人物档案"的概念。prompt 中的 "same person, same face" 对模型而言只是语义加权,远不足以抵消它在训练数据中见过的数亿张人脸带来的先验分布。
行业内解决这个问题的技术路线经历了多个阶段,而 Draw Things——一个主要面向 Apple 设备的本地 AI 图像生成应用——给出了一个独特的答案:让用户在本地完成 LoRA 训练,从根本上把"抽卡"变成"造人"。
二、角色一致性技术的演化:四阶段路线图
从 2022 年 Stable Diffusion 开源至今,角色一致性的主流方案经历了四个阶段:
阶段 时期 核心技术 用户操作 稳定性 成本 1. Prompt 工程 2022–2023 Seed 锁定 + 详细外观描述 写长 prompt、固定 seed 极低 零 2. 图像引导 2023 Img2Img + ControlNet 提供参考图、设置 strength 中低 零 3. 适配器注入 2023–2024 IP-Adapter / InstantID / PuLID 安装插件、选择适配器模型 中高 需 GPU 4. 模型定制 2024–今 LoRA / DreamBooth 微调 准备训练集、训练 LoRA 高 需训练 阶段 1:Prompt 工程 — 脆弱且不可靠
Seed 锁定是直觉上最简单的方案:固定随机种子 + 同一 prompt,输出的脸天然具有相似性。但存在两个根本问题:
- Seed 只控制噪声初始状态,不控制去噪路径中的采样随机性。使用不同的采样器或 CFG 值,同一 seed 也会产生完全不同的人脸。
- Prompt 的语义歧义。"a young woman with blue eyes and wavy brown hair" 这样的描述对应的是模型训练数据中数万张图片的统计平均,而非某个具体身份。
阶段 2:Img2Img + ControlNet — 只能锁姿势,锁不住脸
Image-to-Image 的逻辑是"用一张图做底稿"。然而:
- Strength 的跷跷板效应:低于 0.4 时身份保留良好,但场景/姿态几乎不变;高于 0.6 时模型从噪声重新采样,参考图仅提供构图参考,身份被采样分布冲走。
- 级联漂移:多轮 Img2Img 的微小畸变会累积,3–5 轮后角色面目全非。
- ControlNet 控制结构不控制身份:OpenPose 可以固定姿态,Canny 可以固定边缘,但两者都不约束"这张脸是谁"。
阶段 3:IP-Adapter — 最接近"零成本"的解决方案
IP-Adapter(2023 年 8 月,Tencent AI Lab)通过一个轻量适配器网络将参考图像的特征注入 UNet 的 cross-attention 层。FaceID 变体使用 InsightFace 提取人脸嵌入,在 SDXL/Flux 上实现了较高的面部一致性。
但 IP-Adapter 的局限很明显:
- 需要外挂推理节点(ComfyUI / A1111),移动端不可用
- 每张图都要加载参考图嵌入,不能真正"记住"角色
- 对画风和光照敏感,强光影变化下身份保持率下降
阶段 4:LoRA 微调 — 当前最优解
LoRA(Low-Rank Adaptation,2021 年,Microsoft)通过在 UNet 的权重矩阵旁添加低秩可训练分支,用很少的参数(通常数十 MB)实现对模型行为的定向修改。相比于前三种方法,LoRA 的优势在于:
- 角色信息写入模型权重,而非通过 prompt 或图像间接引导
- 只需一个 trigger word 即可激活角色,无需每次都提供参考图
- 一次训练,无限次使用,且在 LLM 领域也已被广泛验证(微调 LLaMA 等)
三、Draw Things 的技术路径:全本地 LoRA 训练管线
Draw Things(由开发者 Liu Liu 创建)自 1.20231004.1 版本(2023 年 10 月)起引入了本地 LoRA 训练功能。其技术架构的关键决策如下:
3.1 基于 Metal FlashAttention 的推理优化
Draw Things 使用自研推理引擎 s4nnc(Swift for Neural Network Computation),而非 Python 生态的 PyTorch。该引擎集成了 Metal FlashAttention——一个针对 Apple Silicon GPU 的内存访问优化,可将显存使用降低 20–25%、推理速度提升 20–40%。
相比之下,ComfyUI 在 Mac 上运行 PyTorch MPS 后端,Metal FlashAttention 是 Apple 生态独有的优化路径。
3.2 QLoRA on Device:在量化模型上直接训练
Draw Things 的核心创新在于:它可以在量化后的模型权重(FP16/8-bit)上直接训练 LoRA,无需维护一份全精度副本。
具体做法:
- 主体网络运行在 FP16(或更低精度)
- LoRA 网络在训练时运行 FP32,保证训练稳定性
- 使用 JIT 权重重量化技术,训练时按需解量化
这一方案使得:
- iPhone 15 Pro:SD v1 模型 512x512 训练,峰值 ~6GiB
- iPad M2:SDXL 模型训练,峰值 ~10.3GiB
- 训练速度:SD v1 500 步在 iPhone 上约 1 小时,iPad M2 约 20 分钟,M2 Ultra 上 14 分钟
3.3 模型支持矩阵
截至 2025 年,Draw Things 的训练支持情况:
基础模型 参数量 推荐分辨率 推荐步数 学习率 训练时间估计 SD v1.5 ~0.9B 512x512 500–1,000 1e-4 20–60 min SDXL ~3.5B 512–1024 1,500–2,000 1e-4 30 min–4.5 hr Flux.1 [dev] ~12B 512–768 1,500–2,000 4e-4 显著更长 Kwai Kolors ~3.5B 512–1024 1,500–2,000 1e-4 中等 SD3 Medium 3.5 ~2.5B 512–768 1,500–2,000 ~1e-4 中等 数据来源:Draw Things WIKI (LoRA Training)、Engineering Blog
3.4 训练工作流
Draw Things 的训练流程设计为 App 内的一站式操作:
- 选择基础模型:SDXL / Flux.1 / Kwai Kolors / SD3 Medium
- 配置超参数:Network Dimension (16–32)、分辨率、步数、学习率
- 导入训练图片:5–20 张高质量角色图
- 设置 Captions:手动或自动(BLIP2 / Moondream2),含 trigger word
- 启动训练:支持后台运行(iOS 前台保留)
- 测试 Checkpoint:在 App 内直接用 trigger word 生成测试
- 导出 LoRA:量化至 16-bit/8-bit,或分享至 CivitAI
四、范式移转:从 Prompt 工程到模型定制
Draw Things 所做的不只是功能堆叠——它代表了一次抽象层转移。为了理解这一点,需要对比三种角色一致性方案的工程模型。
维度 Prompt 工程 IP-Adapter 方案 Draw Things LoRA 角色信息的存储形式 自然语言 token 图像嵌入向量 模型权重增量 每次推理的操作 写 prompt 加载参考图 + 适配器 输入 trigger word 硬件要求 任意推理设备 推理 GPU 训练需 6–12GiB,推理任意 网络依赖 无 需下载适配器模型 训练推理均离线 可复用性 不可复用 需保留参考图 .safetensors 文件永久有效 身份锁定强度 极低 中等(受光照/角度影响) 高(跨场景/跨画风) 这里的关键变化是:角色身份从"推理时的条件输入"变成了"训练时的模型参数"。
- 在 Prompt 工程时代,身份是一个运行时参数
- 在 IP-Adapter 时代,身份是一个附带的参考输入
- 在 LoRA 时代,身份变成了模型自身的参数
这类似于从"每次计算时输入公式"到"把公式写进计算器 ROM"的转变。前者每次都有偏差,后者一旦固化就不再出错。
而 Draw Things 把这个转变做到了移动端、全离线、不依赖 NVIDIA GPU。
五、主权个人的创作基础设施
Draw Things 的"角色一致性"方案,在主权个人框架下有三个值得单独指出的含义。
5.1 数据控制权
所有训练数据和模型权重都存储在本地。训练图片不上传云端,LoRA 文件不出设备。这与 CivitAI 社区 LoRA 形成对比——后者的训练数据和推理过程通常涉及外部服务。
5.2 计算环境控制权
Draw Things 是极少数能在 iPhone/iPad 上完成训练的 AI 应用。根据官方数据,SD v1 的 LoRA 训练在 iPhone 15 Pro 上需要的峰值内存约 6GiB。这意味着用户的主流设备就是训练设备,不存在"本地推理、云端训练"的依赖分割。
5.3 可退出成本
LoRA 文件是标准 .safetensors 格式,兼容 AUTOMATIC1111、ComfyUI、Forge 等所有主流推理前端。用户在任何时候都可以迁移到其他平台,训练成果不锁定在 Draw Things 生态内。
六、局限与挑战
Draw Things 的方案并非万能,以下约束决定了它的适用场景:
- 训练前置成本不可回避:至少 5–20 张高质量角色图片 + 设备本地计算时间(30 分钟到数小时),非即用型方案
- 硬件下限明确:iPhone 15 Pro 起(6GiB+),旧设备无法训练 SDXL/Flux;SD v1 训练尚可在 8GiB 设备进行
- 训练-推理模型绑定:基于 SDXL 训练的 LoRA 不能在 Flux 上使用,反之亦然。换模型需重新训练
- 无官方 IP-Adapter 支持:Draw Things 目前不提供 IP-Adapter 集成,无法像 ComfyUI 那样"一张参考图零训练"直接推理
- ControlNet 功能有限:支持程度不及 ComfyUI 生态,无法进行多 ControlNet 编排
- 移动端训练时间长:500 步在 iPhone 上约 1 小时,Flux 模型训练时间长于 SDXL
- 触发器词冲突:trigger word 若过于通用(如 "my_character"),可能与基础模型训练数据中的概念冲突
七、总结
从 2022 到 2025,角色一致性问题经历了四代技术路线。每一代的进步本质上是将"角色的身份信息"放入更靠近模型核心的位置:从 prompt 文字 → 参考图像 → 适配器参数 → 模型权重。Draw Things 的贡献在于:把最后一步——也是最有效的一步——做到了 Apple 设备的本地。
如果说 CivitAI + ComfyUI 是"专业影棚 + 工作站"方案,那么 Draw Things 提供的就是"手机 + 打印机"方案——它不是在画质或功能上替代前者,而是在"可获取性"这个维度上重新定义了谁可以完成这件事。
对于追求角色一致性的创作者而言,最直接的建议是:用 LoRA 训练取代 prompt 和 Img2Img 的反复尝试。15 张图、30 分钟训练,换来的是一次训练、无限次可靠输出。
参考资源
- Draw Things 官方文档: wiki.drawthings.ai
- Draw Things Engineering Blog: engineering.drawthings.ai
- LoRA 论文 (Hu et al., 2021): arxiv.org/abs/2106.09685
- IP-Adapter 论文 (Ye et al., 2023): arxiv.org/abs/2308.06721
- 社区 LoRA 下载: civitai.com
- Cutscene Artist LoRA 教程 (Flux/SDXL): youtube.com
歡迎留言回复交流。
Log in to reply.