Skip to content

Musubi 引擎支持 Ideogram 4 LoRA 训练 #424

Open

Description

@wochenlong

目标

让 Musubi 引擎支持 Ideogram 4 的 LoRA 训练,并在训练页提供对应模型入口(任务队列、日志、预览、缓存等沿用现有能力)。

对应路线图 docs/roadmap.md 3.2.0:「常规模型支持更新,包括评估通过 Musubi 接入 Ideogram-4;须独立完成本仓适配与验收」。

上游现状(已核实)

  • musubi-tuner 自 v0.3.3(2026-06-19) 起支持 Ideogram 4 的 LoRA 训练 / 缓存 / 推理:ideogram4_train_network.py、ideogram4_cache_latents.py、ideogram4_cache_text_encoder_outputs.py、src/musubi_tuner/ideogram4/**、networks/lora_ideogram4.py。
  • 我们 pin 的提交 e0cbd8f3(2026-08-13)已包含上述脚本;installer 会整包拷贝上游顶层 *.py + src/,因此不需要改上游,也不需要提前升 pin。
  • 上游当前仅支持 LoRA(全量微调仍在未合并草案 PR);LoRA 不能 merge 回 FP8 基底。上游文档 docs/ideogram4.md 标注为 experimental。

必须处理的上游缺陷(本仓需打补丁)

pin 版本的 src/musubi_tuner/ideogram4/ideogram4_utils.py 中,load_ideogram4_text_encoder() 在 _materialize_meta_tensors()(内部 to_empty())之后没有重建 rotary embedding:非持久化的 inv_freq 缓冲不在 checkpoint 里,to_empty() 之后保持未初始化 → 文本编码器缓存为垃圾值,训练结果不可用。上游 v0.3.6(PR #1139)修复。

处理方式(建议):沿用 model_assets.patch_krea2_tokenizer_path 的运行时源码补丁先例,打等价补丁;不升级 pin。升 pin = transformers 5.17 / diffusers 0.40 / torch 2.6 依赖大迁移 + krea2_train_network.py +159/−70 改动,已验收的 Krea 2 需全部重验,应作为独立任务另行评估。

范围与边界

  • 权重:官方仅发量化权重(FP8 / NVFP4),无 BF16/FP16 DiT;组件为 cond DiT + uncond DiT(非对称 CFG)+ Qwen3-VL-8B TE + Flux2 VAE(Comfy-Org 单文件布局)。
  • 许可:Ideogram Non-Commercial,权重在 HF 上 gated。整合包不得预置权重;下载/安装页需明示许可与来源,用户自行获取。
  • 显存与缓存:9.3B FP8 DiT + Qwen3-VL-8B TE;TE 缓存 128 token ≈ 13.6 MB/图(1k 图 ≈ 13.6 GB,256 token 翻倍),需纳入缓存目录管理。
  • 上游实验性:上游 issue #978 报告 TE 预缓存 OOM 与 resume 变慢,真机验收需覆盖这两个场景。

实现清单

后端(mikazuki/engines/musubi/)

  • manifest.py:TRAIN_TYPES 增加 ideogram4-lora → ideogram4;CAPABILITIES.model_families 同步
  • run.py:去掉写死的 model_train_type = "krea2-lora",按 registry variant 分派
  • adapter.py:NETWORK_MODULE 按模型族切换(musubi_tuner.networks.lora_ideogram4)、字段白名单与量化-only 约束(不加 krea2 专属的 bf16/fp8 配对规则)
  • launcher.py / extension_state.py:三阶段脚本名与就绪检查按族取
  • preflight.py:DiT / TE / VAE 组件检查与提示
  • model_assets.py:ideogram4-lora 资源清单 + rotary 补丁
  • utils/config_import.py:识别 ideogram4-lora 配置
  • process.py:三阶段任务组(cache latents → cache TE → train)
  • 测试:tests/test_musubi_backend.py、test_engine_registry.py、test_model_assets.py、test_config_import.py

前端

  • mikazuki/schema/ideogram4-lora.ts(字段按上游 docs/ideogram4.md 定)
  • frontend/src/training/modules.ts、params.ts、i18n、路由、Musubi 闸门页
  • 前端测试

文档

  • 训练文档(组件路径 / 许可 / 显存与缓存说明)
  • CHANGELOG、docs/dev-progress.md、docs/roadmap.md 同步

验收标准

  • 三阶段(cache latents → cache TE → train)真机跑通 3 步冒烟并保存 LoRA
  • 预览采样正常;TE 缓存复用后二次启动不发散
  • 前端模型入口、参数校验与预检报错正确;pytest + typecheck + lint + vitest 全绿
  • 许可与「不预置权重」边界在界面与文档中明确

参考

Activity

  1. added
    enhancementNew feature or request
    P1High priority issue that affects user experience but is not an immediate release blocker
    status:todoNot yet implemented; ready for triage or work
    on Oct 10, 2026
  2. wochenlong commented on Oct 10, 2026

    @wochenlong
    OwnerAuthor

    实现已提交:PR #425(前后端 + 文档)。

    已完成

    • 后端:模型族注册表(krea2 / ideogram4)、manifest 与能力、族专属参数约束、缓存阶段参数、资源清单、上游 rotary 补丁与 tokenizer 本地化、配置导入识别
    • 前端:ideogram4-lora schema、模型/路由/i18n/引擎标签、Musubi 闸门页按 schema 参数化、跨页携带保护
    • 文档:新增 docs/ideogram4-musubi.md(许可 / 组件 / 缓存占用 / 参数 / 限制)
    • 测试:新增后端 28 项、前端 schema+模块表+Gate 用例;typecheck / lint / vitest(363) 全绿

    待办(需要 GPU 真机,PR 合并前不写发布说明)

    • 三阶段真机冒烟并保存 LoRA
    • 采样预览 + 缓存复用二次启动不发散(验证 rotary 补丁)
    • 显存实测与 blocks_to_swap 档位建议

    注意:权重为非商用许可的 FP8 量化文件,整合包不预置,需用户自行下载。

  3. wochenlong commented on Oct 10, 2026

    @wochenlong
    OwnerAuthor

    已合并到 dev:PR #425 → merge commit 2bdccd1b1(CI 全绿:portable-fast / portable-git ubuntu+windows)。

    合并前走了独立审查,结果:无 P0,1 个 P1 + 6 个 P2,已全部处理:

    • P1(已修):界面下载弹窗默认的 ModelScope 源没有配置 → 整批下载失败。已为四个组件补上 ModelScope 镜像(已核实仓库同布局存在),并加了断言两者都配置的测试。
    • 已修的 P2:tokenizer 补丁现在会跟随/回退本地目录并原子写入;vae_dtype 保留在训练 TOML(它同时影响采样 VAE 加载),只有 text_cache_dtype 是缓存专用,dry-run 返回同样的过滤结果;未注册的模型族改为显式报错,不再静默回退到 Krea 2;移除上游明确忽略的 ideogram4_timestep_mu/std;跨页携带的 vae/fp8_* 等改为只对 musubi/klein 页面生效(kohya 页面继续共享外部 VAE)。
    • 新增测试:registry 映射、下载源、补丁编译守卫、tokenizer 重定向/回退、dispatch 守卫、kohya 携带回归。

    仍然待办(需要 GPU 真机):三阶段冒烟并保存 LoRA、采样预览、缓存复用二次启动不发散(验证 rotary 补丁在 transformers 4.57 上生效)、显存实测与 blocks_to_swap 档位建议。这条能力在真机验收完成前不建议写进发布说明。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1High priority issue that affects user experience but is not an immediate release blockerenhancementNew feature or requeststatus:todoNot yet implemented; ready for triage or work

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions