4G显存部署Flux,2分钟Wan2.1-14B视频生成,DiffSynth-Engine引擎开源!

简介: 魔搭社区的开源项目 DiffSynth-Studio 自推出以来,凭借其前沿的技术探索和卓越的创新能力,持续受到开源社区的高度关注与广泛好评。截至目前,该项目已在 GitHub 上斩获超过 8,000 颗星,成为备受瞩目的开源项目之一。作为以技术探索为核心理念的实践平台,DiffSynth-Studio 基于扩散模型(Diffusion Model),在图像生成和视频生成领域孵化出了一系列富有创意且实用的技术成果,其中包括 ExVideo、ArtAug、EliGen 等代表性模块。

01.背景

魔搭社区的开源项目 DiffSynth-Studio 自推出以来,凭借其前沿的技术探索和卓越的创新能力,持续受到开源社区的高度关注与广泛好评。截至目前,该项目已在 GitHub 上斩获超过 8,000 颗星,成为备受瞩目的开源项目之一。作为以技术探索为核心理念的实践平台,DiffSynth-Studio 基于扩散模型(Diffusion Model),在图像生成和视频生成领域孵化出了一系列富有创意且实用的技术成果,其中包括 ExVideo、ArtAug、EliGen 等代表性模块。

了解更多详情,请访问DiffSynth-Studio 项目链接:https://github.com/modelscope/DiffSynth-Studio

然而,激进的技术创新在一定程度上限制了框架在产品化部署中的表现,尤其是在计算效率等方面尚未达到最优。此外快速的创新迭代,要求我们在接口的稳定性和通用型等方面难免要做一些取舍,而这些取舍在生产化系统中,可能不一定都是最好的选择。为了解决这些问题,我们今天正式推出 DiffSynth-Engine ,并对整个开源项目进行了全面的工程化改造。通过这些优化,用户能够更便捷地完成模型推理与部署工作。

DiffSynth-Engine 项目链接:

https://github.com/modelscope/DiffSynth-Engine

02.DiffSynth-Engine

DiffSynth-Engine 具备以下突出特点:

  • 清晰可读的代码 :完全重新设计并实现了扩散采样器和调度器等核心模块,无需依赖任何第三方库,代码结构简洁直观,便于开发者理解和扩展。
  • 广泛的模型支持 :兼容多种格式的基础模型(Base Model)和 LoRA 模型,能够灵活适配各类使用场景,满足用户多样化的需求。
  • 灵活的内存管理 :提供多级别模型量化支持(如 FP8、INT8)以及高效的卸载策略,帮助用户在有限的 GPU 内存条件下依然能够流畅运行大型模型。
  • 高性能推理 :优化了推理流程,支持张量并行计算,从而在不同硬件环境下均能实现快速生成,显著提升性能表现。
  • 卓越的平台兼容性 :全面支持 Windows、macOS(包括 Apple Silicon)和 Linux 系统,确保跨平台操作的一致性和流畅体验,为用户提供无缝的使用感受。

03.安装

DiffSynth-Engine 可以直接通过 pip3 安装:

pip3 install diffsynth-engine

04.使用案例1:FLUX 的低显存设备优化

FLUX 是目前最受欢迎的开源图像生成模型,但它高昂的计算资源需求让很多技术爱好者望而却步,我们在 DiffSynth-Engine 中提供了细粒度的显存优化和量化支持,让更多用户能够体验到 AIGC 模型的乐趣。

例如,在 bfloat16 精度下,FLUX 模型需要 23GB 显存才能进行推理

from diffsynth_engine.pipelines import FluxImagePipeline, FluxModelConfig
from diffsynth_engine import fetch_model
model_path = fetch_model("muse/flux-with-vae", revision="20240902173035", path="flux1-dev-with-vae.safetensors")
config = FluxModelConfig(dit_path=model_path)
pipe = FluxImagePipeline.from_pretrained(config, offload_mode="cpu_offload").eval()
image = pipe(
  prompt="an astronaut on a horse, on the moon, black and white leica 1 9 7 0's photography, grainy, contrasty",
  width=1024,
  height=1024,
  num_inference_steps=30,
  seed=42,
)
image.save("flux_txt2img.png")

生成图片样例:

修改参数 offload_mode="sequential_cpu_offload" 后,只需要 4GB 显存即可推理,但推理时间有一定的延长。

from diffsynth_engine.pipelines import FluxImagePipeline, FluxModelConfig
from diffsynth_engine import fetch_model
model_path = fetch_model("muse/flux-with-vae", revision="20240902173035", path="flux1-dev-with-vae.safetensors")
config = FluxModelConfig(dit_path=model_path)
pipe = FluxImagePipeline.from_pretrained(config, offload_mode="sequential_cpu_offload").eval()
image = pipe(
  prompt="an astronaut on a horse, on the moon, black and white leica 1 9 7 0's photography, grainy, contrasty",
  width=1024,
  height=1024,
  num_inference_steps=30,
  seed=42,
)
image.save("flux_txt2img.png")

DiffSynth-Engine 还支持多种量化精度,在 A100 GPU 上的测试结果详见下表:

DiT dtype

T5 dtype

Compute dtype

Offload Mode

Max GPU memory

Average SSIM

E2E time (s)

DiT time(s)

bf16

bf16

bf16

cpu_offload

22.79 GB

1.0000

16.1

14.3

q8_0

q8_0

bf16

cpu_offload

12.49 GB

0.9654

23.1

16.9

q6_k

q6_k

bf16

cpu_offload

9.82 GB

0.9265

30.9

25.4

q4_k_s

q4_k_s

bf16

cpu_offload

7.02 GB

0.8736

26.5

22.3

q4_1

q4_k_s

bf16

cpu_offload

7.66 GB

0.8907

25.1

21.1

bf16

bf16

bf16

sequential_cpu_offload

3.52 GB

1.0000

91.0

87.8

q8_0

q8_0

bf16

sequential_cpu_offload

3.52 GB

0.9654

55.4

53.6

q6_k

q6_k

bf16

sequential_cpu_offload

3.52 GB

0.9265

56.9

55.2

q4_k_s

q4_k_s

bf16

sequential_cpu_offload

3.52 GB

0.8736

47.8

46.2

q4_1

q4_k_s

bf16

sequential_cpu_offload

3.52 GB

0.8907

46.5

44.9

不同的量化精度会对生成图片的效果造成不同程度的影响,以下是一些生成图片样例对比:

05.使用案例2:Wan2.1 的多卡并行推理

Wan2.1 是目前效果最好的视频生成模型之一,不同于图像生成,视频生成模型需要的计算量是更加庞大的。DiffSynth-Engine 为 Wan2.1 模型提供了张量并行推理支持,为模型在工业界的产品化部署提供便利。

当使用单卡进行推理时,在 A100 GPU 上,需要 358 秒才能生成一段分辨率为848x480,时长为2秒的视频。

from diffsynth_engine.pipelines import WanVideoPipeline, WanModelConfig
from diffsynth_engine.utils.download import fetch_model
from diffsynth_engine.utils.video import save_video
config = WanModelConfig(
    model_path=fetch_model("muse/wan2.1-14b-bf16", path="dit.safetensors"),
    t5_path=fetch_model("muse/wan2.1-umt5", path="umt5.safetensors"),
    vae_path=fetch_model("muse/wan2.1-vae", path="vae.safetensors"),
)
pipe = WanVideoPipeline.from_pretrained(config)
video = pipe(
    prompt="纪实摄影风格画面,一只活泼的小狗在绿茵茵的草地上迅速奔跑。小狗毛色棕黄,两只耳朵立起,神情专注而欢快。阳光洒在它身上,使得毛发看上去格外柔软而闪亮。背景是一片开阔的草地,偶尔点缀着几朵野花,远处隐约可见蓝天和几片白云。透视感鲜明,捕捉小狗奔跑时的动感和四周草地的生机。中景侧面移动视角。",
    negative_prompt="色调艳丽,过曝,静态,细节模糊不清,字幕,风格,作品,画作,画面,静止,整体发灰,最差质量,低质量,JPEG压缩残留,丑陋的,残缺的,多余的手指,画得不好的手部,画得不好的脸部,畸形的,毁容的,形态畸形的肢体,手指融合,静止不动的画面,杂乱的背景,三条腿,背景人很多,倒着走",
    num_frames=41,
    width=848,
    height=480,
    seed=42,
)
save_video(video, "wan_t2v.mp4", fps=15)

生成视频样例:

https://live.csdn.net/v/470609

通过增加参数 parallelism=4和use_cfg_parallel=True,即可开启张量并行,在 4 张A100 GPU 上,实现 3.14 倍的加速,同时保证生成的视频内容不变。

from diffsynth_engine.pipelines import WanVideoPipeline, WanModelConfig
from diffsynth_engine.utils.download import fetch_model
from diffsynth_engine.utils.video import save_video
config = WanModelConfig(
    model_path=fetch_model("muse/wan2.1-14b-bf16", path="dit.safetensors"),
    t5_path=fetch_model("muse/wan2.1-umt5", path="umt5.safetensors"),
    vae_path=fetch_model("muse/wan2.1-vae", path="vae.safetensors"),
)
pipe = WanVideoPipeline.from_pretrained(config, parallelism=4, use_cfg_parallel=True)
video = pipe(
    prompt="纪实摄影风格画面,一只活泼的小狗在绿茵茵的草地上迅速奔跑。小狗毛色棕黄,两只耳朵立起,神情专注而欢快。阳光洒在它身上,使得毛发看上去格外柔软而闪亮。背景是一片开阔的草地,偶尔点缀着几朵野花,远处隐约可见蓝天和几片白云。透视感鲜明,捕捉小狗奔跑时的动感和四周草地的生机。中景侧面移动视角。",
    negative_prompt="色调艳丽,过曝,静态,细节模糊不清,字幕,风格,作品,画作,画面,静止,整体发灰,最差质量,低质量,JPEG压缩残留,丑陋的,残缺的,多余的手指,画得不好的手部,画得不好的脸部,畸形的,毁容的,形态畸形的肢体,手指融合,静止不动的画面,杂乱的背景,三条腿,背景人很多,倒着走",
    num_frames=41,
    width=848,
    height=480,
    seed=42,
)
save_video(video, "wan_t2v_tp.mp4", fps=15)

在不同数量的 GPU 上,DiffSynth-Engine 实现的加速效果如下表所示:

parallelism

use_cfg_parallel

耗时 (s)

加速比

1

358

1.0 x

2

True

181

1.97x

4

True

114

3.14x

目前 Wan 2.1 模型的多卡推理仍在持续优化中,敬请期待后续的更新。

06.未来展望

魔搭社区将为开源项目 DiffSynth-Studio 和 DiffSynth-Engine 提供长期的维护与支持。其中,DiffSynth-Studio 会继续专注于学术研究,致力于探索扩散模型的前沿能力与创新潜力,在第一时间为开发者提供上手模型的工具链支持;而 DiffSynth-Engine 则更面向工业应用,基于DiffSynth-Studio 项目中的技术积累,在为扩散模型的高效部署训练等场景,提供强有力的支持。让我们共同期待未来开源社区中模型生态的繁荣发展,携手推动技术进步与行业变革!

欢迎点击链接,跳转GitHub为项目点star~

https://github.com/modelscope/DiffSynth-Studio

目录
相关文章
|
11月前
|
编解码 人工智能 算法
DiffSynth:共建 Diffusion 开源生态
DiffSynth 是一个致力于共建 Diffusion 开源生态的项目,由段忠杰分享。该项目通过 Diffusion 技术回顾、模型生态互联与统一、视频生成技术等多方面探讨了如何构建强大的开源模型生态系统。DiffSynth-Studio 支持多种开源模型,优化计算性能,提供图像和视频生成等功能,并特别加强了对中文的支持。项目还引入了 ControlNet、loRA 等生态模型,实现风格转换和内容修改。未来将聚焦于视频时代的到来,推动视频生成技术的发展。
837 0
|
8月前
|
机器学习/深度学习 人工智能 编解码
AI视频生成也能自动补全!Wan2.1 FLF2V:阿里通义开源14B视频生成模型,用首尾两帧生成过渡动画
万相首尾帧模型是阿里通义开源的14B参数规模视频生成模型,基于DiT架构和高效视频压缩VAE,能够根据首尾帧图像自动生成5秒720p高清视频,支持多种风格变换和细节复刻。
1636 9
AI视频生成也能自动补全!Wan2.1 FLF2V:阿里通义开源14B视频生成模型,用首尾两帧生成过渡动画
|
9月前
|
开发者 异构计算
高效部署通义万相Wan2.1:ComfyUI文生/图生视频实战,工作流直取!
通义万相Wan2.1开源不到一周,已登顶HuggingFace Model 和 Space 榜双榜首,在HuggingFace和ModelScope平台的累计下载量突破100万次,社区热度持续攀升!为响应小伙伴们对ComfyUI工作流运行Wan2.1的强烈需求,社区开发者整理了实战教程👇
7176 23
高效部署通义万相Wan2.1:ComfyUI文生/图生视频实战,工作流直取!
|
9月前
|
机器学习/深度学习 人工智能 自然语言处理
Reve Image:设计师失业警告!AI秒出海报级神图,排版自动搞定
Reve Image 是 Reve 推出的全新 AI 图像生成模型,专注于提升美学表现、精确的提示遵循能力以及出色的排版设计,能生成高质量的视觉作品。
559 29
Reve Image:设计师失业警告!AI秒出海报级神图,排版自动搞定
|
9月前
|
人工智能 边缘计算 自然语言处理
DistilQwen2.5-R1:蒸馏黑科技!32B推理能力塞进3B小模型,推理速度狂飙300%
阿里巴巴最新发布的DistilQwen2.5-R1系列模型通过知识蒸馏技术,在保持高性能的同时大幅降低计算资源需求,7B模型性能甚至可媲美32B大模型。
310 11
DistilQwen2.5-R1:蒸馏黑科技!32B推理能力塞进3B小模型,推理速度狂飙300%
|
7月前
|
编解码 人工智能
通义万相Wan2.1-VACE开源!业内首个视频编辑统一模型!附推理教程
通义万相Wan2.1-VACE开源!业内首个视频编辑统一模型!附推理教程
1489 7
|
9月前
|
物联网 异构计算
高效部署通义万相Wan2.1:使用Gradio搭建WebUI体验实战
随着通义万相Wan2.1 在社区的热度持续上涨,魔搭创空间的体验Demo(https://modelscope.cn/studios/Wan-AI/Wan-2.1)已经排起长队。
1929 12
|
9月前
|
机器学习/深度学习 人工智能 前端开发
魔搭社区模型速递(3.23-3.29)
🙋魔搭ModelScope本期社区进展:619个模型,93个数据集,151个创新应用,7篇内容。
400 4
魔搭社区模型速递(3.23-3.29)