十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

如何做 emilianJR/chilloutmix_NiPrunedFp32Fix 的模型格式转换:PyTorch 转 ONNX 与 Safetensors 快速指南

如何做 emilianJR/chilloutmix_NiPrunedFp32Fix 的模型格式转换:PyTorch 转 ONNX 与 Safetensors 快速指南 如何做 emilianJR/chilloutmix_NiPrunedFp32Fix 的模型格式转换PyTorch 转 ONNX 与 Safetensors 快速指南【免费下载链接】chilloutmix_NiPrunedFp32Fix项目地址: https://ai.gitcode.com/hf_mirrors/emilianJR/chilloutmix_NiPrunedFp32FixemilianJR/chilloutmix_NiPrunedFp32Fix 是一个基于 Stable Diffusion 生态的文本生成图像模型本文聚焦它的模型格式转换把默认的 PyTorch 权重改成 ONNX 或 Safetensors 两种常见形态。无论你是要接入跨平台推理引擎还是想获得更安全、更快的权重加载方式都能在这里找到现成的做法。整个流程只有三步——克隆仓库、跑脚本、生成一张图验证新手也能照着做。读懂模型结构与三种权重格式这个模型采用标准的 Stable Diffusion Pipeline 架构model_index.json 是总文件定义了每个组件的名称、类型和所在目录。真正占体积的是三个权重目录text_encoder/文本编码器把提示词变成模型能理解的语义向量权重文件为pytorch_model.binunet/核心扩散网络真正负责画图权重文件为diffusion_pytorch_model.binvae/VAE变分自编码器把潜空间结果还原成最终像素图同样以diffusion_pytorch_model.bin存放每个组件的具体网络结构由所在目录的config.json描述比如 unet/config.json 里能看到通道数、残差块类型等参数。三种格式各自适合干什么一句话就能分清PyTorch.bin仓库原始形态微调、训练生态兼容性最好ONNX跨平台推理用的通用格式非 PyTorch 推理引擎和各类优化工具都能消费Safetensors只存权重数据的现代格式加载时不执行任意代码更安全、读取也更快把 UNet 转成 ONNX跨平台部署怎么做当推理环境不在 PyTorch 里例如 ONNX Runtime、其他厂商的推理加速方案或者你希望把网络导出成通用中间表示来优化性能时就需要这一步。环境准备与仓库克隆先装齐四个依赖库分别是 PyTorch、ONNX 工具包和模型加载用的 diffusers、transformerspip install torch onnx diffusers transformers再把模型仓库拉到本地后续脚本都在这份目录里运行git clone https://gitcode.com/hf_mirrors/emilianJR/chilloutmix_NiPrunedFp32Fix cd chilloutmix_NiPrunedFp32Fix导出脚本怎么写下面这段代码做的事是加载整个 pipeline用safety_checkerNone跳过安全检查器以省资源构造一组假输入——潜空间采样、时间步、文本语义向量——再调用torch.onnx.export把 UNet 导出为unet.onnxfrom diffusers import StableDiffusionPipeline import torch # 加载模型 pipe StableDiffusionPipeline.from_pretrained( ./, torch_dtypetorch.float32, safety_checkerNone ) # 导出UNet模型为ONNX格式 unet pipe.unet input_sample torch.randn(1, 4, 64, 64) input_timestep torch.tensor([1]) input_encoder_hidden_states torch.randn(1, 77, 768) torch.onnx.export( unet, (input_sample, input_timestep, input_encoder_hidden_states), unet.onnx, opset_version14, do_constant_foldingTrue, )跑完后当前目录会多出unet.onnx直接拿去给推理端使用即可。转成 Safetensors更安全的权重存放方式.bin格式依赖 Python 反序列化机制加载权重理论上可被恶意构造的文件利用Safetensors 则只保存张量本身结构上杜绝了这个风险读取速度还略占优势所以生产环境普遍优先选它。转换脚本怎么跑先装转换库pip install safetensors下面的代码把 UNet 和文本编码器两个权重文件依次读入再以 safetensors 格式落盘文件名保持原样方便后续按需替换import torch from safetensors.torch import save_file # 转换UNet模型 unet_weights torch.load(unet/diffusion_pytorch_model.bin) save_file(unet_weights, unet/diffusion_pytorch_model.safetensors) # 转换文本编码器 text_encoder_weights torch.load(text_encoder/pytorch_model.bin) save_file(text_encoder_weights, text_encoder/pytorch_model.safetensors)VAE 的转法完全相同把路径换成vae/diffusion_pytorch_model.bin即可。转换排坑指南 ⚠️转换时内存不够怎么办一次转换整个模型容易吃满显存/内存。两个办法一是把精度降到torch.float16内存占用直接减半二是按组件拆开转——UNet、文本编码器、VAE 各跑一次转完一个释放一个互不干扰。配置和权重对不上怎么办转换前后的config.json必须保持同一份不要拿别处不同版本的文件来替换。建议顺手核对 vae/config.json 等组件配置与权重是否出自同一次导出再回看model_index.json确认各组件路径定义完整。用一次生图验证转换结果 ✅转换完别急着收工跑一次最小推理最稳妥。下面这段代码重新加载本地模型并生成一张测试图test_output.png能正常输出就说明格式转换链路没问题from diffusers import StableDiffusionPipeline import torch # 加载转换后的模型 pipe StableDiffusionPipeline.from_pretrained( ./, torch_dtypetorch.float32, safety_checkerNone ) # 生成测试图像 image pipe(a beautiful landscape).images[0] image.save(test_output.png)小结微调用 PyTorch、跨平台推理用 ONNX、生产环境存放用 Safetensors——认准场景选格式照对应脚本执行即可。各组件的更多细节随时翻看仓库里对应的 config 文件。【免费下载链接】chilloutmix_NiPrunedFp32Fix项目地址: https://ai.gitcode.com/hf_mirrors/emilianJR/chilloutmix_NiPrunedFp32Fix创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表