Decentralization? We're still early!

如何用 Draw Things 本地训练 LoRA 终结 AI 角色漂移

  • 如何用 Draw Things 本地训练 LoRA 终结 AI 角色漂移

    發布人 Brave 2026-05-28 02:42

    一、引子:AI 画不出同一个人的两张脸

    2023 年 Stable Diffusion 爆发以来,角色一致性(character consistency)一直是最顽固的工程问题。你可以用一条 prompt 生成一张惊艳的脸,但当你要求"同一个人站在另一个场景里",模型会给出一个完全不同的人——发色变了、脸型变了、甚至连性别都变了。

    这不是 bug,这是架构使然。扩散模型的本质是从随机噪声逐步去噪到目标图像。每一次生成都是独立的马尔可夫链,起始于不同的随机种子,没有任何"人物档案"的概念。prompt 中的 "same person, same face" 对模型而言只是语义加权,远不足以抵消它在训练数据中见过的数亿张人脸带来的先验分布。

    行业内解决这个问题的技术路线经历了多个阶段,而 Draw Things——一个主要面向 Apple 设备的本地 AI 图像生成应用——给出了一个独特的答案:让用户在本地完成 LoRA 训练,从根本上把"抽卡"变成"造人"

    二、角色一致性技术的演化:四阶段路线图

    从 2022 年 Stable Diffusion 开源至今,角色一致性的主流方案经历了四个阶段:

    阶段时期核心技术用户操作稳定性成本
    1. Prompt 工程2022–2023Seed 锁定 + 详细外观描述写长 prompt、固定 seed极低
    2. 图像引导2023Img2Img + ControlNet提供参考图、设置 strength中低
    3. 适配器注入2023–2024IP-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.9B512x512500–1,0001e-420–60 min
    SDXL~3.5B512–10241,500–2,0001e-430 min–4.5 hr
    Flux.1 [dev]~12B512–7681,500–2,0004e-4显著更长
    Kwai Kolors~3.5B512–10241,500–2,0001e-4中等
    SD3 Medium 3.5~2.5B512–7681,500–2,000~1e-4中等

    数据来源:Draw Things WIKI (LoRA Training)、Engineering Blog

    3.4 训练工作流

    Draw Things 的训练流程设计为 App 内的一站式操作:

    1. 选择基础模型:SDXL / Flux.1 / Kwai Kolors / SD3 Medium
    2. 配置超参数:Network Dimension (16–32)、分辨率、步数、学习率
    3. 导入训练图片:5–20 张高质量角色图
    4. 设置 Captions:手动或自动(BLIP2 / Moondream2),含 trigger word
    5. 启动训练:支持后台运行(iOS 前台保留)
    6. 测试 Checkpoint:在 App 内直接用 trigger word 生成测试
    7. 导出 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 的方案并非万能,以下约束决定了它的适用场景:

    1. 训练前置成本不可回避:至少 5–20 张高质量角色图片 + 设备本地计算时间(30 分钟到数小时),非即用型方案
    2. 硬件下限明确:iPhone 15 Pro 起(6GiB+),旧设备无法训练 SDXL/Flux;SD v1 训练尚可在 8GiB 设备进行
    3. 训练-推理模型绑定:基于 SDXL 训练的 LoRA 不能在 Flux 上使用,反之亦然。换模型需重新训练
    4. 无官方 IP-Adapter 支持:Draw Things 目前不提供 IP-Adapter 集成,无法像 ComfyUI 那样"一张参考图零训练"直接推理
    5. ControlNet 功能有限:支持程度不及 ComfyUI 生态,无法进行多 ControlNet 编排
    6. 移动端训练时间长:500 步在 iPhone 上约 1 小时,Flux 模型训练时间长于 SDXL
    7. 触发器词冲突:trigger word 若过于通用(如 "my_character"),可能与基础模型训练数据中的概念冲突

    七、总结

    从 2022 到 2025,角色一致性问题经历了四代技术路线。每一代的进步本质上是将"角色的身份信息"放入更靠近模型核心的位置:从 prompt 文字 → 参考图像 → 适配器参数 → 模型权重。Draw Things 的贡献在于:把最后一步——也是最有效的一步——做到了 Apple 设备的本地。

    如果说 CivitAI + ComfyUI 是"专业影棚 + 工作站"方案,那么 Draw Things 提供的就是"手机 + 打印机"方案——它不是在画质或功能上替代前者,而是在"可获取性"这个维度上重新定义了谁可以完成这件事。

    对于追求角色一致性的创作者而言,最直接的建议是:用 LoRA 训练取代 prompt 和 Img2Img 的反复尝试。15 张图、30 分钟训练,换来的是一次训练、无限次可靠输出。


    参考资源

    Brave 回复 2 weeks, 2 days ago 1 成員 · 0 回复
  • 0 回复

歡迎留言回复交流。

Log in to reply.

讨论開始
00 回复 2018 年 6 月
現在