在AI大模型中,.safetensors、.ckpt、.gguf、.pth 和 .bin 文件都是用于保存和加载模型参数的文件格式,它们之间的区别和转换方式如下:
.safetensors 文件:
这是 TensorFlow 2.x 中新增的文件格式,用于保存模型参数和优化器状态。
它采用的是 TensorFlow 的自定义序列化格式,不能直接用于其他框架。
可以使用 TensorFlow 的 tf.train.Checkpoint 类来加载和保存 .safetensors 文件。
.ckpt 文件:
这是 TensorFlow 1.x 中用于保存模型参数和优化器状态的文件格式。
它采用的是 TensorFlow 的自定义序列化格式,不能直接用于其他框架。
可以使用 TensorFlow 的 tf.train.Saver 类来加载和保存 .ckpt 文件。
可以使用 TensorFlow 2.x 的 tf.compat.v1.train.Saver 类来加载和保存 .ckpt 文件。
.gguf 文件:
这是 Google 的 GFST(Google Finite State Transducer)格式,用于保存语言模型。
它采用的是 Google 的自定义序列化格式,不能直接用于其他框架。
可以使用 Google 的 fstcompile 和 fstrain 工具来加载和保存 .gguf 文件。
.pth 文件:
这是 PyTorch 中用于保存模型参数和优化器状态的文件格式。
它采用的是 PyTorch 的自定义序列化格式,不能直接用于其他框架。
可以使用 PyTorch 的 torch.save 函数来加载和保存 .pth 文件。
.bin 文件:
这是一种通用的二进制文件格式,可以用于保存模型参数和优化器状态。
它可以被多种框架所使用,例如 TensorFlow、PyTorch 和 ONNX 等。
可以使用 NumPy 或 PyTorch 等框架的函数来加载和保存 .bin 文件。
对于这些文件格式之间的转换,可以使用以下方法:
.ckpt 文件到 .pth 文件:
可以使用 TensorFlow 2.x 的 tf.compat.v1.train.Saver 类来加载 .ckpt 文件,然后使用 PyTorch 的 torch.Tensor.cpu 函数将模型参数转换为 CPU 张量,最后使用 PyTorch 的 torch.save 函数保存为 .pth 文件。
.pth 文件到 .ckpt 文件:
可以使用 PyTorch 的 torch.load 函数加载 .pth 文件,然后使用 TensorFlow 2.x 的 tf.convert_to_tensor 函数将模型参数转换为 TensorFlow 张量,最后使用 TensorFlow 2.x 的 tf.train.Checkpoint 类保存为 .ckpt 文件。
.ckpt 文件或 .pth 文件到 ONNX 模型:
可以使用 TensorFlow 2.x 的 tf2onnx.convert 函数或 PyTorch 的 torch.onnx.export 函数将模型转换为 ONNX 模型,然后使用 ONNX 的 onnxruntime.InferenceSession 类加载和使用 ONNX 模型。
ONNX 模型到 .pth 文件或 .ckpt 文件:
可以使用 ONNX 的 onnxruntime.InferenceSession 类加载 ONNX 模型,然后使用 PyTorch 的 torch.Tensor 或 TensorFlow 2.x 的 tf.convert\_to\_tensor 函数将模型参数转换为 PyTorch 或 TensorFlow 张量,最后使用 PyTorch 的 torch.save 函数或 TensorFlow 2.x 的 tf.train.Checkpoint 类保存为 .pth 文件或 .ckpt 文件。
.gguf 文件到 ONNX 模型:
可以使用 Google 的 fst2onnx 工具将 .gguf 文件转换为 ONNX 模型,然后使用 ONNX 的 onnxruntime.InferenceSession 类加载和使用 ONNX 模型。
ONNX 模型到 .gguf 文件:
可以使用 ONNX 的 onnxruntime.InferenceSession 类加载 ONNX 模型,然后使用 Google 的 onnx2fst 工具将 ONNX 模型转换为 .gguf 文件。
需要注意的是,由于不同框架之间的 API 和序列化格式的差异,在进行转换时可能需要进行一些额外的处理,例如调整数据类型、调整形状、调整维度等。
上篇:
使用 Docker 快速上手官方版 LLaMA2 开源大模型
下篇:
一文搞懂AI关键术语:LLM、RAG、Prompt、Embedding等
1 Unsloth:大模型微调的革命性工具,支持DeepSeek QwQ Gemma... 2 一文图解Agent智能体:60张图、14个技术点回顾Agent的基本认知 3 SFT 指令微调数据 如何构建? 4 快速对QWen2.5大模型进行微调 5 DeepseekR1+ollama+dify1.0.0搭建企业/个人知识库 6 使用Easy Dataset为大模型准备训练数据,在线部署 7 静态路由:使用静态让所有主机实现相互通信,并都可以访问公网_采用静态路由方式,实... 8 如何微调(Fine-tuning)大语言模型 9 如何打造属于你的定制化大模型聊天机器人 10 大模型的Base版本模型、Chat版本模型和4Bit版本模型有什么区别 11 用LLaMA-Factory,训练一个你的专属大模型!超简单易懂教程 12 一文搞懂AI关键术语:LLM、RAG、Prompt、Embedding等