GitHub Issue
模型参数合并问题 + I2V训练优化 + 如何蒸馏Helios-Base
我已经完成第一阶段训练,得到了lora和partial的权重,当我在推理代码中使用--lora_path和--partial_path加载训练参数时,模型生成的结果是符合预期的,但是当我使用脚本合并模型参数时想进行后续训练时,遇到了一些问题。
1. repo中的合并参数脚本 merge_lora_base.py 是否有问题,has_multi_term_memory_patch: False — 这里是丢失了 partial 权重?
2. 使用 merge_lora_base.py 这个脚本合并后的模型和推理脚本中 diffusers 版本的模型似乎并不兼容,合并后得到的推理结果效果非常差。不确定这是合并代码本身的 bug 还是其他问题。
3. 我自己改了一版 diffusers 的合并代码,推理的效果仍然不符合预期,与单独加载--lora_path和--partial_path生成的结果差异极大。
大佬能帮忙看下问题在哪吗?
```python
import sys
import os
import argparse
sys.path.append(os.path.join(os.path.dirname(__file__), ".."))
from helios.diffusers_version.pipeline_helios_diffusers import HeliosPipeline
from helios.diffusers_version.scheduling_helios_diffusers import HeliosScheduler
from helios.diffusers_version.transformer_helios_diffusers import HeliosTransformer3DModel
from helios.utils.utils_base import load_extra_components
from diffusers.models import AutoencoderKLWan
import torch
def main():
parser = argparse.ArgumentParser()
parser.add_argument("--transformer_path", type=str, required=True)
parser.add_argument("--lora_path", type=str, required=True)
parser.add_argument("--partial_path", type=str, required=True)
parser.add_argument("--output_path", type=str, default=None)
args = parser.parse_args()
if args.output_path is None:
ckpt_dir = os.path.dirname(args.lora_path)
args.output_path = os.path.join(ckpt_dir, "merged_transformer")
print(f"Loading base transformer from: {args.transformer_path}")
transformer = He...
View Raw Thread
Developer & User Discourse
Iriya99 • Mar 24, 2026
> [@Iriya99](https://github.com/Iriya99) 感谢关注!请使用`merge_lora_for_helios.py`进行代码合并。 https://github.com/PKU-YuanGroup/Helios/blob/main/tools/merge_lora_for_helios.py
transformer和pipe中from_pretrained都填Helios-Base的路径对吗
transformer和pipe中from_pretrained都填Helios-Base的路径对吗
SHYuanBest • Mar 24, 2026
pipe填wan或者helios的路径都行。transformer得看你训练的时候用了哪个transformer,比如stage-1-init用的是wan的transformer,此时填wan的路径,其他阶段以此类推。
Iriya99 • Mar 24, 2026
> pipe填wan或者helios的路径都行。transformer得看你训练的时候用了哪个transformer,比如stage-1-init用的是wan的transformer,此时填wan的路径,其他阶段以此类推。
这里没太理解。我目前是基于Helios-base模型训完了stage-1-post,那么我pipe和transformer分别应该填什么?以及合并后的代码对于后续的训练和推理是否都是通用的?
这里没太理解。我目前是基于Helios-base模型训完了stage-1-post,那么我pipe和transformer分别应该填什么?以及合并后的代码对于后续的训练和推理是否都是通用的?
SHYuanBest • Mar 24, 2026
基于Helios-base模型训完了stage-1-post指的是跑完了以下三个步骤?
1. 加载wan_transformer,用stage-1-inint去训,得到A lora_ckpt + A partial_ckpt
2. merge wan_transformer + A lora_ckpt + A partial_ckpt得到B_transformer
3. 得到B_transformer,用stage-1-post去训,得到B lora_ckpt + B partial_ckpt
4. 此时merge的时候应该加载B_transformer
1. 加载wan_transformer,用stage-1-inint去训,得到A lora_ckpt + A partial_ckpt
2. merge wan_transformer + A lora_ckpt + A partial_ckpt得到B_transformer
3. 得到B_transformer,用stage-1-post去训,得到B lora_ckpt + B partial_ckpt
4. 此时merge的时候应该加载B_transformer
SaaS Metrics
https://github.com/PKU-YuanGroup/Helios/blob/main/tools/merge_lora_for_helios.py