大模型中 .safetensors 文件、.ckpt文件、.gguf和.pth以及.bin文件区别、加载和保存以及转换方式

2024-04-02 01:52

本文主要是介绍大模型中 .safetensors 文件、.ckpt文件、.gguf和.pth以及.bin文件区别、加载和保存以及转换方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

       在大模型中,.safetensors.ckpt.gguf.pth 和 .bin 文件都是用于保存和加载模型参数的文件格式,它们之间的区别和转换方式如下:

  1. .safetensors 文件:

    • 这是 TensorFlow 2.x 中新增的文件格式,用于保存模型参数和优化器状态。
    • 它采用的是 TensorFlow 的自定义序列化格式,不能直接用于其他框架。
    • 可以使用 TensorFlow 的 tf.train.Checkpoint 类来加载和保存 .safetensors 文件。
  2. .ckpt 文件:

    • 这是 TensorFlow 1.x 中用于保存模型参数和优化器状态的文件格式。
    • 它采用的是 TensorFlow 的自定义序列化格式,不能直接用于其他框架。
    • 可以使用 TensorFlow 的 tf.train.Saver 类来加载和保存 .ckpt 文件。
    • 可以使用 TensorFlow 2.x 的 tf.compat.v1.train.Saver 类来加载和保存 .ckpt 文件。
  3. .gguf 文件:

    • 这是 Google 的 GFST(Google Finite State Transducer)格式,用于保存语言模型。
    • 它采用的是 Google 的自定义序列化格式,不能直接用于其他框架。
    • 可以使用 Google 的 fstcompile 和 fstrain 工具来加载和保存 .gguf 文件。
  4. .pth 文件:

    • 这是 PyTorch 中用于保存模型参数和优化器状态的文件格式。
    • 它采用的是 PyTorch 的自定义序列化格式,不能直接用于其他框架。
    • 可以使用 PyTorch 的 torch.save 函数来加载和保存 .pth 文件。
  5. .bin 文件:

    • 这是一种通用的二进制文件格式,可以用于保存模型参数和优化器状态。
    • 它可以被多种框架所使用,例如 TensorFlow、PyTorch 和 ONNX 等。
    • 可以使用 NumPy 或 PyTorch 等框架的函数来加载和保存 .bin 文件。

对于这些文件格式之间的转换,可以使用以下方法:

  1. .ckpt 文件到 .pth 文件:

    • 可以使用 TensorFlow 2.x 的 tf.compat.v1.train.Saver 类来加载 .ckpt 文件,然后使用 PyTorch 的 torch.Tensor.cpu 函数将模型参数转换为 CPU 张量,最后使用 PyTorch 的 torch.save 函数保存为 .pth 文件。
  2. .pth 文件到 .ckpt 文件:

    • 可以使用 PyTorch 的 torch.load 函数加载 .pth 文件,然后使用 TensorFlow 2.x 的 tf.convert_to_tensor 函数将模型参数转换为 TensorFlow 张量,最后使用 TensorFlow 2.x 的 tf.train.Checkpoint 类保存为 .ckpt 文件。
  3. .ckpt 文件或 .pth 文件到 ONNX 模型:

    • 可以使用 TensorFlow 2.x 的 tf2onnx.convert 函数或 PyTorch 的 torch.onnx.export 函数将模型转换为 ONNX 模型,然后使用 ONNX 的 onnxruntime.InferenceSession 类加载和使用 ONNX 模型。
  4. 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 文件。
  5. .gguf 文件到 ONNX 模型:

    • 可以使用 Google 的 fst2onnx 工具将 .gguf 文件转换为 ONNX 模型,然后使用 ONNX 的 onnxruntime.InferenceSession 类加载和使用 ONNX 模型。
  6. ONNX 模型到 .gguf 文件:

    • 可以使用 ONNX 的 onnxruntime.InferenceSession 类加载 ONNX 模型,然后使用 Google 的 onnx2fst 工具将 ONNX 模型转换为 .gguf 文件。

       需要注意的是,由于不同框架之间的 API 和序列化格式的差异,在进行转换时可能需要进行一些额外的处理,例如调整数据类型、调整形状、调整维度等。

这篇关于大模型中 .safetensors 文件、.ckpt文件、.gguf和.pth以及.bin文件区别、加载和保存以及转换方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/868677

相关文章

Java对象转换的实现方式汇总

《Java对象转换的实现方式汇总》:本文主要介绍Java对象转换的多种实现方式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java对象转换的多种实现方式1. 手动映射(Manual Mapping)2. Builder模式3. 工具类辅助映

Spring Boot读取配置文件的五种方式小结

《SpringBoot读取配置文件的五种方式小结》SpringBoot提供了灵活多样的方式来读取配置文件,这篇文章为大家介绍了5种常见的读取方式,文中的示例代码简洁易懂,大家可以根据自己的需要进... 目录1. 配置文件位置与加载顺序2. 读取配置文件的方式汇总方式一:使用 @Value 注解读取配置方式二

JAVA保证HashMap线程安全的几种方式

《JAVA保证HashMap线程安全的几种方式》HashMap是线程不安全的,这意味着如果多个线程并发地访问和修改同一个HashMap实例,可能会导致数据不一致和其他线程安全问题,本文主要介绍了JAV... 目录1. 使用 Collections.synchronizedMap2. 使用 Concurren

python实现svg图片转换为png和gif

《python实现svg图片转换为png和gif》这篇文章主要为大家详细介绍了python如何实现将svg图片格式转换为png和gif,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录python实现svg图片转换为png和gifpython实现图片格式之间的相互转换延展:基于Py

C# foreach 循环中获取索引的实现方式

《C#foreach循环中获取索引的实现方式》:本文主要介绍C#foreach循环中获取索引的实现方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、手动维护索引变量二、LINQ Select + 元组解构三、扩展方法封装索引四、使用 for 循环替代

将Java程序打包成EXE文件的实现方式

《将Java程序打包成EXE文件的实现方式》:本文主要介绍将Java程序打包成EXE文件的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录如何将Java程序编程打包成EXE文件1.准备Java程序2.生成JAR包3.选择并安装打包工具4.配置Launch4

springboot上传zip包并解压至服务器nginx目录方式

《springboot上传zip包并解压至服务器nginx目录方式》:本文主要介绍springboot上传zip包并解压至服务器nginx目录方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录springboot上传zip包并解压至服务器nginx目录1.首先需要引入zip相关jar包2.然

Java数组初始化的五种方式

《Java数组初始化的五种方式》数组是Java中最基础且常用的数据结构之一,其初始化方式多样且各具特点,本文详细讲解Java数组初始化的五种方式,分析其适用场景、优劣势对比及注意事项,帮助避免常见陷阱... 目录1. 静态初始化:简洁但固定代码示例核心特点适用场景注意事项2. 动态初始化:灵活但需手动管理代

C#实现将Excel表格转换为图片(JPG/ PNG)

《C#实现将Excel表格转换为图片(JPG/PNG)》Excel表格可能会因为不同设备或字体缺失等问题,导致格式错乱或数据显示异常,转换为图片后,能确保数据的排版等保持一致,下面我们看看如何使用C... 目录通过C# 转换Excel工作表到图片通过C# 转换指定单元格区域到图片知识扩展C# 将 Excel

C++使用printf语句实现进制转换的示例代码

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指