DiffSynth-Studio 模型量化完全指南:从 QuantizeConfig 到量化 + LoRA 训练
DiffSynth-Studio 模型量化完全指南从 QuantizeConfig 到量化 LoRA 训练【免费下载链接】DiffSynth-StudioEnjoy the magic of Diffusion models!项目地址: https://gitcode.com/GitHub_Trending/dif/DiffSynth-Studio量化通过降低模型权重的数值精度来减少显存占用让大模型能在更小的显卡上运行。DiffSynth-Studio提供统一的量化入口QuantizeConfig支持 bitsandbytes、torchao、comfy-kitchen 等多个量化后端并支持在线量化、加载预量化权重、混合量化以及量化 LoRA 训练。本文以Z-Image、MiniMax-H3为例完整覆盖从安装、在线量化、保存/加载量化权重到量化训练的实战流程。量化与显存管理 FP8 的区别在开始之前先厘清一个容易混淆的概念本文的量化与 显存管理 中的 FP8 不是一回事。显存管理 中的 FP8 通过offload_dtype/onload_dtype等参数控制权重在显存中的存储精度作用于全部参数、不依赖第三方库但只有简单的 FP8 转换。本文的量化QuantizeConfig是针对nn.Linear的专门方案支持 NF4、INT8、INT4、MXFP4、NVFP4 等更精细的格式可保存/加载量化权重支持激活量化与量化 LoRA 训练。两者解决的是不同层面的问题可以组合使用详见后文量化与显存管理组合一节。安装依赖不同量化后端需要对应的第三方库后端安装命令Project Pagebitsandbytespip install bitsandbytesbitsandbytestorchaopip install torchao0.16torchaocomfy-kitchenpip install comfy-kitchencomfy-kitchen一次性安装全部pip install diffsynth[quant]快速开始在线量化在任意ModelConfig上传入quantize即可对该模型启用在线量化。以下代码把 Z-Image 的 DiT 用 NF4 量化后加载from diffsynth.pipelines.z_image import ZImagePipeline, ModelConfig from diffsynth.core.quant import QuantizeConfig import torch pipe ZImagePipeline.from_pretrained( torch_dtypetorch.bfloat16, devicecuda, model_configs[ ModelConfig( model_idTongyi-MAI/Z-Image, origin_file_patterntransformer/*.safetensors, quantizeQuantizeConfig(methodbitsandbytes_nf4), ), ModelConfig(model_idTongyi-MAI/Z-Image-Turbo, origin_file_patterntext_encoder/*.safetensors), ModelConfig(model_idTongyi-MAI/Z-Image-Turbo, origin_file_patternvae/diffusion_pytorch_model.safetensors), ], tokenizer_configModelConfig(model_idTongyi-MAI/Z-Image-Turbo, origin_file_patterntokenizer/), ) prompt 精致肖像水下少女蓝裙飘逸发丝轻扬光影透澈气泡环绕面容恬静细节精致梦幻唯美。 image pipe(promptprompt, seed42, num_inference_steps50, cfg_scale4) image.save(image_z_image_nf4.jpg)从源码结构看QuantizeConfig的quantize_model会遍历模型的全部nn.Linear层按target_modules/exclude_modules过滤后逐层替换为后端原生的量化 Linear并打印X nn.Linear layers quantized (method: ...)见 diffsynth/core/quant/config.py。支持的量化方法以下是内置的全部量化方法method即传入QuantizeConfig的名称。命名遵循W权重位宽A激活位宽约定w8a16表示只量化权重weight-onlyw8a8表示权重与激活都量化。method后端权重 / 激活可序列化支持 LoRA 训练bitsandbytes_nf4bitsandbytesNF4 / 不量化✅✅bitsandbytes_fp4bitsandbytesFP4 / 不量化✅✅torchao_int8_w8a16torchaoINT8 / 不量化✅✅torchao_fp8_w8a16torchaoFP8 / 不量化✅✅torchao_int4_w4a16torchaoINT4 / 不量化✅❌torchao_nvfp4_w4a16torchaoNVFP4 / 不量化✅✅torchao_int8_w8a8torchaoINT8 / INT8 动态✅❌torchao_fp8_w8a8torchaoFP8 / FP8 动态✅❌torchao_int4_w4a8torchaoINT4 / FP8 动态✅❌torchao_mxfp8_w8a8torchaoMXFP8 / MXFP8✅❌torchao_mxfp4_w4a4torchaoMXFP4 / MXFP4✅❌torchao_nvfp4_w4a4torchaoNVFP4 / NVFP4✅❌comfy_kitchen_int8_w8a8comfy_kitchenINT8 / INT8 动态✅✅comfy_kitchen_fp8_w8a8comfy_kitchenFP8 E4M3 / FP8✅✅几点说明激活量化w8a8/w4a4在压缩权重之外还会量化激活值在支持对应低精度矩阵乘的硬件上可以真正提速而 weight-only 方案通常只省显存。LoRA 训练只有表中支持 LoRA 训练为 ✅ 的方法可用于量化 LoRA 训练。comfy_kitchen_*方法读写的是 ComfyUI 的量化权重格式可与 ComfyUI 生态互通。comfy-kitchen 需要 CUDA 13.0 及以上。从 diffsynth/core/quant/backends/comfy_kitchen.py 的validate_environment可以看到当 CUDA 版本低于 13.0 时后端会自动禁用 cuda 注册。MXFP8 / MXFP4 / NVFP4 等格式对计算硬件有要求具体兼容性请查阅 torchao 文档。你可以在代码中查询所有可用方法及其参数from diffsynth.core.quant import describe_quant_method, QUANT_METHODS, backends backends.load_all_backends() print(sorted(QUANT_METHODS)) # 所有已注册的方法名 describe_quant_method(bitsandbytes_nf4)输出如下其中backend_config_kwargs (user-tunable)列出了该方法可调整的参数及默认值这些参数决定量化的行为你可以根据需要修改它们。对于 torchao 后端部分参数会直接传递给 torchao 自己的 config如Int8WeightOnlyConfig除非你清楚这些参数的含义否则建议保留默认值。method: bitsandbytes_nf4 backend: bitsandbytes detail: 4bit, nf4, weight-only backend config: diffsynth.core.quant.backends.bitsandbytes.BitsAndBytesNF4Config backend_config_kwargs (user-tunable): compress_statistics True blocksize None quant_storage torch.uint8 pinned by method (not overridable): quant_type nf4从源码看describe_quant_method通过dataclasses.fields自动区分用户可调参数与方法固定参数后者用field(initFalse)声明不可覆盖例如BitsAndBytesNF4Config中quant_typenf4就是被钉死的见 diffsynth/core/quant/backends/bitsandbytes.py。QuantizeConfig 详解QuantizeConfig描述了用哪种方法、量化哪些层、量化后如何运行method量化方法名见上表必填。若省略会直接抛出ValueError见 diffsynth/core/quant/config.py。mode量化层的运行方式。dynamic默认保留量化 Linearforward 时按需反量化显存占用低。dequant_once量化完成后一次性还原成普通 fpnn.Linear保留量化误差。适合需要标准nn.Linear的场景不再省显存。target_modules/exclude_modules按层名过滤要量化的nn.Linear取值为列表。匹配规则是完整点分名称相等或以. 名称结尾例如img_mod.1可匹配transformer_blocks.0.img_mod.1。该逻辑实现在_name_matches中见 diffsynth/core/quant/config.py。backend_config_kwargs传给后端配置的参数字典决定量化的行为torchao 后端的部分参数会直接传给 torchao 自己的 config。可先用describe_quant_method(method)查询可用参数。load_prequantized设为True表示 checkpoint 中已经是量化权重直接加载见下文。示例排除对量化敏感的层并调整 NF4 的后端参数from diffsynth.core.quant import QuantizeConfig quantize QuantizeConfig( methodbitsandbytes_nf4, modedynamic, exclude_modules[time_embedder.proj_in, time_embedder.proj_out, proj_out], backend_config_kwargs{compress_statistics: False}, )激活量化方法的用法完全一致只是换个methodquantize QuantizeConfig(methodcomfy_kitchen_int8_w8a8, backend_config_kwargs{convrot_groupsize: 128})量化误差测量QuantizeConfig还内置了measure_quantization_error方法可以对 fp 模型逐层执行量化-反量化往返报告每一层的relative_error相对误差与max_abs最大绝对误差并按相对误差从大到小排序输出。这可以帮助你在正式量化前判断哪些层对量化最敏感、是否需要加入exclude_modules见 diffsynth/core/quant/config.py。加载预量化权重除在线量化外也支持直接加载已量化好的 checkpoint省去每次加载时的量化开销。对于官方发布的量化模型如ideogram-ai/ideogram-4-nf4配置中已写好量化信息像加载普通模型一样即可ModelConfig(model_idideogram-ai/ideogram-4-nf4, origin_file_patterntransformer/diffusion_pytorch_model.safetensors)对于自己保存的量化 checkpoint见下一节加载时显式传入quantize并设置load_prequantizedTrue其中method与exclude_modules必须与保存时保持一致from diffsynth.core.quant import QuantizeConfig ModelConfig( pathmodels/z-image-nf4/transformer.safetensors, quantizeQuantizeConfig(methodbitsandbytes_nf4, load_prequantizedTrue), )从源码看load_prequantizedTrue时prepare_for_prequantized_load会先把目标nn.Linear替换成空的量化 Linear 壳shell再通过unflatten_state_dict把扁平化的量化张量还原为后端复合张量最后load_state_dict(assignTrue)完成装载见 diffsynth/core/quant/config.py。保存量化模型想把一次在线量化的结果保存下来反复使用可以用save_quantized_modelfrom diffsynth.core.loader import ModelConfig from diffsynth.core.quant import QuantizeConfig from diffsynth.utils.quant.serialization import save_quantized_model model_config ModelConfig( model_idTongyi-MAI/Z-Image, origin_file_patterntransformer/*.safetensors, quantizeQuantizeConfig(methodbitsandbytes_nf4), ) save_quantized_model(model_config, models/z-image-nf4/transformer.safetensors)它会下载并加载原始 fp 权重、执行量化再把量化后的 state dict 存成.safetensors并返回该文件的 hash。保存后即可用上一节的方式加载。其底层实现位于 diffsynth/utils/quant/serialization.py先经ModelPool.auto_load_model加载并量化再调用quantize.flatten_state_dict把复合量化张量展开为普通张量与字符串元数据{format: pt, ...}最后用safetensors.torch.save_file落盘。注意flatten_state_dict会检查后端的capabilities()[is_serializable]不可序列化的方法会抛出NotImplementedError见 diffsynth/core/quant/config.py。混合量化不同层对量化的敏感程度不同。MixedQuantizeConfig允许对不同层集合应用不同方法例如对精度敏感的调制层用 INT8、其余层用 NF4from diffsynth.core.quant import QuantizeConfig, MixedQuantizeConfig mod_layers [img_mod.1, txt_mod.1, norm_out.linear, img_in, txt_in, proj_out] quantize MixedQuantizeConfig(configs[ QuantizeConfig(methodbitsandbytes_nf4, exclude_modulesmod_layers), QuantizeConfig(methodtorchao_int8_w8a16, target_modulesmod_layers), ])各子配置匹配到的层集合必须互不重叠。MixedQuantizeConfig对外接口与QuantizeConfig完全一致可直接传给ModelConfig(quantize...)也可以传给save_quantized_model。从源码看各子配置的层集合会在量化前经过_build_ownership校验若存在重叠会直接抛错并列出重叠层见 diffsynth/core/quant/config.py。加载混合量化的预量化 checkpoint 时load_prequantizedTrue要设置在MixedQuantizeConfig上而不是子配置上——源码中明确规定子配置的load_prequantized必须保持False否则抛错见 diffsynth/core/quant/config.py。仓库自带的测试函数test_save_mixed_quantized_model给出了 Qwen-Image 的混合量化示例NF4 INT8 调制层见 diffsynth/utils/quant/serialization.py。量化 LoRA 训练在大多数情况下量化后的模型不支持训练但支持冻结基础模型后的 LoRA 训练从而在很小的显存里训练大模型。可用于量化 LoRA 训练的方法见方法表的最后一列。从源码看训练框架要求量化后端的capabilities()[is_differentiable]为真——冻结的量化层 forward 必须对输入可微梯度才能穿过量化层到达 LoRA 分支。parse_quant_options在解析时会校验这一点不可微的方法会直接报错退出见 diffsynth/diffusion/training_module.py。例如 torchao 后端中只有Int8WeightOnlyConfig、Float8WeightOnlyConfig、NVFP4WeightOnlyConfig被声明为可微见 diffsynth/core/quant/backends/torchao.py。有两种使用方式。方式一用预量化的底模训练训练脚本通过--model_id_with_origin_paths指向预量化模型accelerate launch examples/.../train.py \ --model_id_with_origin_paths DiffSynth-Studio/MiniMax-H3-NF4:minimax-h3-fl2va-nf4.safetensors,... \ --lora_base_model dit \ --lora_target_modules attn.qkv_proj,attn.out_proj,mlp.fc1,mlp.fc2 \ --lora_rank 32 \ --output_path ./models/train/xxx-nf4方式二用--quant_options在线量化如果没有现成的预量化权重可以用--quant_options在训练启动时对加载的模型做在线量化。取值以;分隔多个条目每个条目的格式为模型字符串:method[/exclude_modules]模型字符串要量化的模型必须与--model_paths/--model_id_with_origin_paths中的写法完全一致。method量化方法名见方法表。exclude_modules可选以,分隔的层名列表这些层保持全精度。以 Z-Image-Turbo 的量化 LoRA 训练为例完整脚本见 examples/z_image/model_training/special/quant_training/Z-Image-Turbo-bitsandbytes_nf4.shaccelerate launch examples/z_image/model_training/train.py \ --model_id_with_origin_paths Tongyi-MAI/Z-Image-Turbo:transformer/*.safetensors,Tongyi-MAI/Z-Image-Turbo:text_encoder/*.safetensors,Tongyi-MAI/Z-Image-Turbo:vae/diffusion_pytorch_model.safetensors \ --quant_options Tongyi-MAI/Z-Image-Turbo:transformer/*.safetensors:bitsandbytes_nf4;Tongyi-MAI/Z-Image-Turbo:text_encoder/*.safetensors:bitsandbytes_nf4 \ --lora_base_model dit \ --lora_target_modules to_q,to_k,to_v,to_out.0,w1,w2,w3 \ --lora_rank 32 \ --use_gradient_checkpointing \ --output_path ./models/train/Z-Image-Turbo_quant_lora上例中 DiT 与 text encoder 都启用了 NF4 量化。text_encoder、vae等不参与训练的模块可以放心量化被训练的dit只能在 LoRA 训练下量化且必须选用支持 LoRA 训练的方法——如果指定了不可微的方法训练会直接报错退出。用本地权重训练时改用--model_pathsJSON 格式模型字符串要与其中的条目对应。由多个文件组成的模型在--model_paths里是一个 JSON 列表--quant_options中也要把这个列表整体写出来accelerate launch examples/z_image/model_training/train.py \ --model_paths [[models/Tongyi-MAI/Z-Image-Turbo/transformer/diffusion_pytorch_model-00001-of-00003.safetensors, models/Tongyi-MAI/Z-Image-Turbo/transformer/diffusion_pytorch_model-00002-of-00003.safetensors, models/Tongyi-MAI/Z-Image-Turbo/transformer/diffusion_pytorch_model-00003-of-00003.safetensors], [models/Tongyi-MAI/Z-Image-Turbo/text_encoder/model-00001-of-00003.safetensors, models/Tongyi-MAI/Z-Image-Turbo/text_encoder/model-00002-of-00003.safetensors, models/Tongyi-MAI/Z-Image-Turbo/text_encoder/model-00003-of-00003.safetensors], models/Tongyi-MAI/Z-Image-Turbo/vae/diffusion_pytorch_model.safetensors] \ --tokenizer_path models/Tongyi-MAI/Z-Image-Turbo/tokenizer/ \ --quant_options [models/Tongyi-MAI/Z-Image-Turbo/transformer/diffusion_pytorch_model-00001-of-00003.safetensors, models/Tongyi-MAI/Z-Image-Turbo/transformer/diffusion_pytorch_model-00002-of-00003.safetensors, models/Tongyi-MAI/Z-Image-Turbo/transformer/diffusion_pytorch_model-00003-of-00003.safetensors]:bitsandbytes_nf4;[models/Tongyi-MAI/Z-Image-Turbo/text_encoder/model-00001-of-00003.safetensors, models/Tongyi-MAI/Z-Image-Turbo/text_encoder/model-00002-of-00003.safetensors, models/Tongyi-MAI/Z-Image-Turbo/text_encoder/model-00003-of-00003.safetensors]:bitsandbytes_nf4 \ --lora_base_model dit \ --lora_target_modules to_q,to_k,to_v,to_out.0,w1,w2,w3 \ --lora_rank 32 \ --use_gradient_checkpointing \ --output_path ./models/train/Z-Image-Turbo_quant_lora只写列表中的某一个文件、或改变文件顺序都不会匹配上。启动时如果打印No quant option matches ...说明该模型没有匹配到任何量化选项会以原精度加载此时应对照日志里同时打印出的已解析选项检查写法。这一行为对应源码中的get_quant_config见 diffsynth/diffusion/training_module.py。带exclude_modules的写法保留对量化敏感的层--quant_options MiniMaxAI/MiniMax-H3:FL2VA/transformer/model*.safetensors:bitsandbytes_nf4/time_embedder.proj_in,time_embedder.proj_out,video_patch_proj,audio_patch_proj--quant_options使用的是modedynamic不支持配置backend_config_kwargs、混合量化等更复杂的选项。有这类需求时请改用方式一先用save_quantized_model保存量化权重再用预量化底模训练。通用说明训练中量化底模保持冻结只有 LoRA 分支更新因此保存下来的是 fp 精度的 LoRA 权重。推理时按量化底模 LoRA加载先像加载预量化权重那样加载量化底模再pipe.load_lora(pipe.dit, epoch-x.safetensors)。大模型建议优先选方式一在线量化需要先加载完整 fp 权重启动慢且峰值内存高。自定义量化后端如果内置方法不满足需求你可以实现自己的量化后端。完整的接入流程与可运行的示例以玩具后端 INT9 为例见接入量化后端完整的接口签名与契约见diffsynth.core.quantAPI 文档。从源码看一个后端需要实现的核心契约包括见 diffsynth/core/quant/base.pycreate_quantized_linear把 fpnn.Linear在线量化为量化 Linearcreate_quantized_linear_shell构造空的量化 Linear 壳用于加载预量化 checkpointdequantize_to_linear反量化回普通nn.Lineardequant_once模式需要quantized_linear_classes声明产出的 Linear 类必须是torch.nn.Linear子类capabilities()声明is_serializable/is_differentiable/is_compileable/requires_calibration能力。仓库还提供了check_backend_contract与check_differentiable两个自检函数分别验证后端满足量化 Linear 契约、以及梯度能否穿过量化层到达输入见 diffsynth/core/quant/base.py。量化与显存管理组合量化与显存管理解决的是不同层面的问题可以同时启用量化降低每一层的存储体积例如 NF4 约为 bf16 的 1/4。显存管理决定哪些层此刻留在显存里其余按需从内存/硬盘调入。两者组合可以进一步压低推理所需的显存先把权重压缩到 4bit/8bit再用vram_limit把压缩后的模型拆分到显存与内存中。from diffsynth.pipelines.z_image import ZImagePipeline, ModelConfig from diffsynth.core.quant import QuantizeConfig import torch vram_config { offload_dtype: torch.bfloat16, offload_device: cpu, onload_dtype: torch.bfloat16, onload_device: cpu, preparing_dtype: torch.bfloat16, preparing_device: cuda, computation_dtype: torch.bfloat16, computation_device: cuda, } pipe ZImagePipeline.from_pretrained( torch_dtypetorch.bfloat16, devicecuda, model_configs[ ModelConfig( model_idTongyi-MAI/Z-Image, origin_file_patterntransformer/*.safetensors, quantizeQuantizeConfig(methodbitsandbytes_nf4), **vram_config, ), ModelConfig(model_idTongyi-MAI/Z-Image-Turbo, origin_file_patterntext_encoder/*.safetensors, **vram_config), ModelConfig(model_idTongyi-MAI/Z-Image-Turbo, origin_file_patternvae/diffusion_pytorch_model.safetensors, **vram_config), ], tokenizer_configModelConfig(model_idTongyi-MAI/Z-Image-Turbo, origin_file_patterntokenizer/), vram_limittorch.cuda.mem_get_info(cuda)[1] / (1024 ** 3) - 0.5, )两点注意vram_config中的offload_dtype/onload_dtype等参数作用于未量化的参数已量化层的存储精度由量化方法决定不受这些参数影响。Disk Offload 与在线量化不兼容。Disk Offload 按层从硬盘读取参数要求量化后的参数已经保存在磁盘上因此不能先走 Disk Offload 再做在线量化。若要结合 Disk Offload 使用量化请先按最佳实践的流程保存量化权重再加载预量化 checkpoint。最佳实践MiniMax-H3 完整流程以 MiniMax-H3 为例展示从保存量化权重到加载推理的完整流程。第一步保存量化权重MiniMax-H3 的 FL2VA 底模约 66Gbf16直接用 NF4 在线量化会很慢建议先量化并保存一次之后反复加载。save_quantized_model会返回保存文件的 hashfrom diffsynth.core.loader import ModelConfig from diffsynth.core.quant import QuantizeConfig from diffsynth.utils.quant.serialization import save_quantized_model quantize QuantizeConfig( methodbitsandbytes_nf4, modedynamic, exclude_modules[ time_embedder.proj_in, time_embedder.proj_out, video_patch_proj, audio_patch_proj, condition_proj, final_layer.video_out, final_layer.audio_out, ], ) model_config ModelConfig( model_idMiniMaxAI/MiniMax-H3, origin_file_patternFL2VA/transformer/model*.safetensors, quantizequantize, ) model_hash save_quantized_model(model_config, models/MiniMax-H3-NF4/minimax-h3-fl2va-nf4.safetensors) print(model_hash)exclude_modules里是对量化敏感的层时间步嵌入、输入输出投影保留 bf16 以维持质量。第二步把 hash 写入模型配置框架通过文件 hash 识别模型类型与量化配置。注册条目如下quant_config需与保存时的QuantizeConfig保持一致并加上load_prequantized: Trueconfig_entry { # Example: ModelConfig(model_id..., origin_file_patternminimax-h3-fl2va-nf4.safetensors) model_hash: model_hash, model_name: minimax_h3_dit, model_class: diffsynth.models.minimax_h3_dit.MiniMaxH3DiT, quant_config: {method: bitsandbytes_nf4, load_prequantized: True, exclude_modules: [time_embedder.proj_in, time_embedder.proj_out, video_patch_proj, audio_patch_proj, condition_proj, final_layer.video_out, final_layer.audio_out]}, }注册方式有两种方式一在 Python 代码中动态注册推荐即插即用。无需改动框架代码在加载模型之前把条目加入MODEL_CONFIGS即可生效仅作用于当前进程from diffsynth.configs import MODEL_CONFIGS MODEL_CONFIGS.append(config_entry)方式二写入配置文件永久生效。把上面的条目添加到 diffsynth/configs/model_configs.py 的MODEL_CONFIGS列表中这样在本地无需再手动注册。如果你的量化权重已经公开发布也欢迎把这个条目提交 PR 给我们让其他用户可以直接加载。仓库中已经内置了 MiniMax-H3 NF4 权重的注册条目如model_hash: 4b27efacefbc4d8670e0d7b876699648对应DiffSynth-Studio/MiniMax-H3-NF4的minimax-h3-fl2va-nf4.safetensors见 diffsynth/configs/model_configs.py。此外还有多个 comfy-kitchen 量化格式的注册条目comfy_kitchen_int8_w8a8、comfy_kitchen_fp8_w8a8见同一文件 diffsynth/configs/model_configs.py。第三步加载推理注册完成后加载自己的量化权重就和加载普通模型一样无需传入quantize参数import torch from diffsynth.pipelines.minimax_h3_audio_video import MiniMaxH3Pipeline, ModelConfig from diffsynth.utils.data.audio_video import write_video_audio vram_config { offload_dtype: torch.bfloat16, offload_device: cpu, onload_dtype: torch.bfloat16, onload_device: cpu, preparing_dtype: torch.bfloat16, preparing_device: cuda, computation_dtype: torch.bfloat16, computation_device: cuda, } pipe MiniMaxH3Pipeline.from_pretrained( torch_dtypetorch.bfloat16, devicecuda, model_configs[ ModelConfig(pathmodels/MiniMax-H3-NF4/minimax-h3-fl2va-nf4.safetensors, **vram_config), ModelConfig(model_idMiniMax/MiniMax-H3, origin_file_patternFL2VA/text_encoder/model*.safetensors, **vram_config), ModelConfig(model_idMiniMax/MiniMax-H3, origin_file_patternFL2VA/video_vae/source/model.safetensors, **vram_config), ModelConfig(model_idMiniMax/MiniMax-H3, origin_file_patternFL2VA/audio_vae/model.safetensors, **vram_config), ], processor_configModelConfig(model_idMiniMax/MiniMax-H3, origin_file_patternFL2VA/processor/), vram_limittorch.cuda.mem_get_info(cuda)[1] / (1024 ** 3) - 2, ) prompt A girl is very happy, she is speaking in english: I enjoy working with Diffsynth-Studio, its a perfect framework. video, audio pipe(promptprompt, height480, width832, num_frames124, num_inference_steps50, seed0) write_video_audio(videovideo, audioaudio, output_patht2va.mp4, fps24, audio_sample_rate32000)附把量化权重发布到 ModelScope官方已把 MiniMax-H3 的 NF4 量化权重上传到 ModelScopeDiffSynth-Studio/MiniMax-H3-NF4可以直接使用而无需自行量化。如果你想把自己保存的量化权重上传到 ModelScope可以用 modelscope SDKfrom modelscope.hub.api import HubApi api HubApi() api.login(your_access_token) api.create_model(your-username/MiniMax-H3-NF4, visibility1) api.upload_folder( repo_idyour-username/MiniMax-H3-NF4, folder_pathmodels/MiniMax-H3-NF4, repo_typemodel, )小结DiffSynth-Studio 的量化体系围绕统一的QuantizeConfig展开method决定格式与后端target_modules/exclude_modules决定量化范围mode决定量化后的运行方式load_prequantized决定权重来源。配合MixedQuantizeConfig可以做到逐层差异化精度配合save_quantized_model hash 注册可以实现量化一次、处处加载配合--quant_options或预量化底模可以在很小显存内完成 LoRA 训练。理解这些入口的底层契约后端能力声明、可微性校验、序列化格式你就能在自己的模型上复现同样的低显存方案。【免费下载链接】DiffSynth-StudioEnjoy the magic of Diffusion models!项目地址: https://gitcode.com/GitHub_Trending/dif/DiffSynth-Studio创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考