ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

chilloutmix_NiPrunedFp32Fix 模型转换:PyTorch、ONNX、Safetensors 互转一次搞定

2026/8/27 1:13:44 拓冰建站 浏览量
chilloutmix_NiPrunedFp32Fix 模型转换:PyTorch、ONNX、Safetensors 互转一次搞定 chilloutmix_NiPrunedFp32Fix 模型转换PyTorch、ONNX、Safetensors 互转一次搞定【免费下载链接】chilloutmix_NiPrunedFp32Fix项目地址: https://ai.gitcode.com/hf_mirrors/emilianJR/chilloutmix_NiPrunedFp32Fixchilloutmix_NiPrunedFp32Fix 仓库里的 .bin 权重无法被部分推理框架与安全加载平台直接读取。本文给出 chilloutmix_NiPrunedFp32Fix 模型转换的完整实操流程PyTorch 转 ONNX、bin 转 safetensors以及转换后怎么验证。格式速决先定 SD 模型格式转换的目标动手前先看这张表确定你要的是哪个格式再往下找到对应章节格式适合场景说明PyTorch.bin仓库原始格式开发、微调、本地训练diffusers、transformers 直接可加载无需转换ONNX.onnx跨平台推理、ONNX Runtime 部署冻结的计算图脱离 PyTorch 也能跑推理Safetensors.safetensors生产环境安全加载纯张量存储、无代码执行风险diffusers 可原生加载一句话决策部署目标是 ONNX Runtime 就转 ONNX只想把 .bin 换成安全格式就转 safetensors。环境准备依赖与仓库一次装好 所有依赖集中在这一条命令里后面各节不再重复pip install torch onnx diffusers transformers safetensors把仓库拉到本地转换全程在模型目录内操作git clone https://gitcode.com/hf_mirrors/emilianJR/chilloutmix_NiPrunedFp32Fix cd chilloutmix_NiPrunedFp32Fix仓库是 Stable Diffusion Pipeline 架构核心组件目录和权重文件名如下后面转换脚本会用到组件权重文件结构定义text_encoder/pytorch_model.binconfig.jsonCLIP 文本编码器unet/diffusion_pytorch_model.binconfig.json去噪主网络 UNet负责把噪声潜变量一步步变成图像vae/diffusion_pytorch_model.binconfig.json图像编解码器PyTorch 转 ONNX用 torch.onnx.export 导出 unet这一步在做什么StableDiffusionPipeline.from_pretrained从仓库加载整条管线然后用假输入回放一次 UNet 的前向计算torch.onnx.export把计算图记录成 .onnx 文件。UNet 的输入形状在 config.json 里写死了64×64 潜变量、77×768 文本特征假输入必须按这个形状构造。import torch from diffusers import StableDiffusionPipeline pipe StableDiffusionPipeline.from_pretrained( ./chilloutmix_NiPrunedFp32Fix, # 改成你的模型目录路径 torch_dtypetorch.float32, safety_checkerNone, ) sample torch.randn(1, 4, 64, 64) # 潜变量64x64对应 unet config 的 sample_size encoder_hidden_states torch.randn(1, 77, 768) # 文本特征77 为 CLIP 最大词数768 为隐藏层维度 timestep torch.tensor([1]) torch.onnx.export( pipe.unet, (sample, timestep, encoder_hidden_states), unet.onnx, # 输出路径可自定义 opset_version14, # ONNX 算子集版本推理端版本旧就调低新就调高 do_constant_foldingTrue, )需要你按环境修改的只有三处第一处加载路径、opset_version、输出文件名。导出完成且文件体积与 unet 权重同量级即视为导出成功。bin 转 safetensors三个组件三步转完这一步在做什么用torch.load原样读出权重字典再用safetensors.torch.save_file写回磁盘——不改结构、不重训练属于无损换容器。三个 .bin 各转一次即可。import torch from safetensors.torch import save_file pairs [ (text_encoder/pytorch_model.bin, text_encoder/pytorch_model.safetensors), (unet/diffusion_pytorch_model.bin, unet/diffusion_pytorch_model.safetensors), (vae/diffusion_pytorch_model.bin, vae/diffusion_pytorch_model.safetensors), ] for src, dst in pairs: state_dict torch.load(src, map_locationcpu) # 放 CPU 上读避免显存爆掉 save_file(state_dict, dst)需要你按环境修改的pairs里只保留你目录中真实存在的 .bin 路径只转部分组件就删掉对应行。各目录下的 config.json 保持原样、与权重放在同一目录不需要任何改动。转换后怎么验证跑一张测试图diffusers 能直接加载 safetensors所以最省事的验证是用转换后的目录跑一次文本生图。判定标准✅ 成功正常生成 test_output.png画面有内容、无大面积灰块或噪点。失败抛形状不匹配、权重缺失等异常或输出纯黑/纯灰图——说明权重与配置没对上去下面排错。from diffusers import StableDiffusionPipeline import torch pipe StableDiffusionPipeline.from_pretrained( ./chilloutmix_NiPrunedFp32Fix, # 指向已转换的模型目录 torch_dtypetorch.float32, safety_checkerNone, ) image pipe(a beautiful landscape).images[0] image.save(test_output.png)注意 ONNX 的验证方式不同StableDiffusionPipeline 不认 .onnx 文件它的通过标准是导出过程无报错、文件体积与 unet 原始权重同量级再交给 ONNX Runtime 做推理测试。排错速查常见现象按现象→原因→处理对号入座⚠️ 转换中途卡住时先按下表定位比从头排查快现象原因处理加载/转换时 torch.cuda.OutOfMemoryError 或进程被系统杀掉float32fp32全精度存储整套权重内存占用大加载时改用torch_dtypetorch.float16或按组件逐个转换onnx 导出报错或产物文件异常小opset 版本偏低或假输入形状与 config 不符opset_version提到 14 及以上确认假输入为 1×4×64×64 与 1×77×768转换后加载立刻报形状不匹配config.json 与权重不同步转换时不动原 config.json权重放回同一目录不要混入其他模型的配置文件save_file报 state_dict 缺键或结构异常torch.load拿到的字典结构与预期不符先打印state_dict顶层键名确认结构再重新保存转完、验完三种格式即可按各自场景直接投入使用。【免费下载链接】chilloutmix_NiPrunedFp32Fix项目地址: https://ai.gitcode.com/hf_mirrors/emilianJR/chilloutmix_NiPrunedFp32Fix创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考