Skip to content

能否根据 diffsynth 的 lowvarm 和 vram_management 技术,降低显存使用,让项目能在 RTX 4090 24GB 单张显卡上运行。 #21

@wikeeyang

Description

@wikeeyang

环境: Ubuntu 22.04,Python 3.11, CUDA 12.4,Pytorch 2.60,RTX 4090 24G。

这是一个很不错的项目,从 QwenVL-Flux 起就一直关注和跟进,Qwen VL 在 图像理解和提示词方面能力非常强,结合 Flux 模型的出图能力,这个项目的提升空间非常大。

Nexus-Gen V2 一出来就立刻跟进,模型拉下来后,先把 generation 和 editing 进行了转换,转换成 fp16 精度。

app.py 中:第39、39行,修改成:
generation_decoder_path = "models/Nexus-GenV2/generation_decoder-full-fp16.safetensors"
editing_decoder_path = "models/Nexus-GenV2/edit_decoder-full-fp16.safetensors"

根据 diffsynth 项目的代码,改了 editing_decoder.py 和 generation_decoder.py 模型加载和内存管理部分代码,
如下(以generation_decoder.py为例):

L22改成:def init(self, decoder_path, flux_path, device='cuda', torch_dtype=torch.bfloat16, enable_cpu_offload=True): 以允许 cpu_offload.
L57行:return pipe, adapter 之前,增加一行:pipe.enable_vram_management()

代码执行后,好像 vram_management 不起作用,由于 fp16 的两个 DiT 模型权重都接近或大于 24G,导致 OOM。

我看 diffsynth 项目的低显存调用代码,是可以采用 offload_dtype=torch.float8_e4m3fn 量化的,但由于代码版本差异,函数描述有些差别,加上本人代码能力有限,请教大佬,能否改进一下低显存的调用方式,方便时请给与指导,谢谢!

在 DiffSynth-Studio/blob/main/examples/flux/model_inference_low_vram/FLUX.1-dev.py 代码如下:

pipe = FluxImagePipeline.from_pretrained(
torch_dtype=torch.bfloat16,
device="cuda",
model_configs=[
ModelConfig(model_id="black-forest-labs/FLUX.1-dev", origin_file_pattern="flux1-dev.safetensors", offload_device="cpu", offload_dtype=torch.float8_e4m3fn),
ModelConfig(model_id="black-forest-labs/FLUX.1-dev", origin_file_pattern="text_encoder/model.safetensors", offload_device="cpu", offload_dtype=torch.float8_e4m3fn),
ModelConfig(model_id="black-forest-labs/FLUX.1-dev", origin_file_pattern="text_encoder_2/", offload_device="cpu", offload_dtype=torch.float8_e4m3fn),
ModelConfig(model_id="black-forest-labs/FLUX.1-dev", origin_file_pattern="ae.safetensors", offload_device="cpu", offload_dtype=torch.float8_e4m3fn),
],
)
pipe.enable_vram_management()

不知道该如何用到本项目中。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions