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

本文涉及的产品
交互式建模 PAI-DSW,每月250计算时 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,100CU*H 3个月
简介: 魔搭社区的开源项目 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

目录
相关文章
|
PyTorch Serverless 算法框架/工具
Serverless应用引擎中部署带有GPU支持的PyTorch镜像
Serverless应用引擎中部署带有GPU支持的PyTorch镜像
271 1
|
13天前
|
存储 负载均衡 测试技术
ACK Gateway with Inference Extension:优化多机分布式大模型推理服务实践
本文介绍了如何利用阿里云容器服务ACK推出的ACK Gateway with Inference Extension组件,在Kubernetes环境中为多机分布式部署的LLM推理服务提供智能路由和负载均衡能力。文章以部署和优化QwQ-32B模型为例,详细展示了从环境准备到性能测试的完整实践过程。
|
1月前
|
人工智能 自然语言处理 API
Proxy Lite:仅3B参数的开源视觉模型!快速实现网页自动化,支持在消费级GPU上运行
Proxy Lite 是一款开源的轻量级视觉语言模型,支持自动化网页任务,能够像人类一样操作浏览器,完成网页交互、数据抓取、表单填写等重复性工作,显著降低自动化成本。
307 11
Proxy Lite:仅3B参数的开源视觉模型!快速实现网页自动化,支持在消费级GPU上运行
|
1月前
|
存储 人工智能 物联网
ACK Gateway with AI Extension:大模型推理的模型灰度实践
本文介绍了如何使用 ACK Gateway with AI Extension 组件在云原生环境中实现大语言模型(LLM)推理服务的灰度发布和流量分发。该组件专为 LLM 推理场景设计,支持四层/七层流量路由,并提供基于模型服务器负载感知的智能负载均衡能力。通过自定义资源(CRD),如 InferencePool 和 InferenceModel,可以灵活配置推理服务的流量策略,包括模型灰度发布和流量镜像。
|
3月前
|
机器学习/深度学习 存储 人工智能
MNN:阿里开源的轻量级深度学习推理框架,支持在移动端等多种终端上运行,兼容主流的模型格式
MNN 是阿里巴巴开源的轻量级深度学习推理框架,支持多种设备和主流模型格式,具备高性能和易用性,适用于移动端、服务器和嵌入式设备。
890 18
MNN:阿里开源的轻量级深度学习推理框架,支持在移动端等多种终端上运行,兼容主流的模型格式
|
2月前
|
人工智能 监控 开发者
阿里云PAI发布DeepRec Extension,打造稳定高效的分布式训练,并宣布开源!
阿里云PAI发布DeepRec Extension,打造稳定高效的分布式训练,并宣布开源!
|
6月前
|
Kubernetes 调度 算法框架/工具
NVIDIA Triton系列02-功能与架构简介
本文介绍了NVIDIA Triton推理服务器的功能与架构,强调其不仅适用于大型服务类应用,还能广泛应用于各类推理场景。Triton支持多种模型格式、查询类型和部署方式,具备高效的模型管理和优化能力,确保高性能和系统稳定性。文章详细解析了Triton的主从架构,包括模型仓库、客户端应用、通信协议和推理服务器的核心功能模块。
226 1
NVIDIA Triton系列02-功能与架构简介
|
8月前
|
存储 小程序 物联网
|
11月前
|
运维 监控 Serverless
一键开启 GPU 闲置模式,基于函数计算低成本部署 Google Gemma 模型服务
本文介绍如何使用函数计算 GPU 实例闲置模式低成本、快速的部署 Google Gemma 模型服务。
165093 58

热门文章

最新文章

下一篇
oss创建bucket