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

简介: 本文讨论了大模型中不同文件格式如`.safetensors`、`.ckpt`、`.gguf`、`.pth`和`.bin`的区别、用途以及如何在TensorFlow、PyTorch和ONNX等框架之间进行加载、保存和转换。

在大模型中,.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 的 fstcompilefstrain 工具来加载和保存 .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 和序列化格式的差异,在进行转换时可能需要进行一些额外的处理,例如调整数据类型、调整形状、调整维度等。

目录
相关文章
|
1月前
|
Java
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
58 2
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
|
1月前
|
Python
Python实用记录(十二):文件夹下所有文件重命名以及根据图片路径保存到新路径下保存
这篇文章介绍了如何使用Python脚本对TTK100_VOC数据集中的JPEGImages文件夹下的图片文件进行批量重命名,并将它们保存到指定的新路径。
32 0
|
3月前
|
Java
java中实现File文件的重命名(renameTo)、将文件移动到其他目录下、文件的复制(copy)、目录和文件的组合(更加灵活方便)
这篇文章介绍了Java中使用`renameTo()`、`Files.copy()`等方法对文件进行重命名、移动和复制的操作,并提供了代码实例和测试效果。
java中实现File文件的重命名(renameTo)、将文件移动到其他目录下、文件的复制(copy)、目录和文件的组合(更加灵活方便)
|
XML 存储 数据格式
基于大量文件的名称特征自动新建多个文件夹并自动复制对应文件:Python
本文介绍基于Python,对一个文件夹下大量栅格影像,基于其各自文件名,分别创建指定名称的新文件夹,并将对应影像文件复制到不同的新文件夹下的方法。
148 3
基于大量文件的名称特征自动新建多个文件夹并自动复制对应文件:Python
|
JavaScript 前端开发
脚本可放置与外部文件中
脚本可放置与外部文件中
62 1
|
Go Python
Go-文件目录操作分类详解(创建、打开、关闭、读取、写入、判断等)
Go-文件目录操作分类详解(创建、打开、关闭、读取、写入、判断等)
423 0
Go-文件目录操作分类详解(创建、打开、关闭、读取、写入、判断等)
python相对路径文件无法读取,更改工作路径
python相对路径文件无法读取,更改工作路径
python相对路径文件无法读取,更改工作路径
|
Java
编写Java程序,在硬盘中选取一个 txt 文件,读取该文档的内容后,追加一段文字“[ 来自新华社 ]”,保存到一个新的 txt 文件内
编写Java程序,在硬盘中选取一个 txt 文件,读取该文档的内容后,追加一段文字“[ 来自新华社 ]”,保存到一个新的 txt 文件内
286 0
编写Java程序,在硬盘中选取一个 txt 文件,读取该文档的内容后,追加一段文字“[ 来自新华社 ]”,保存到一个新的 txt 文件内
|
机器学习/深度学习 TensorFlow 算法框架/工具
模型保存与加载|学习笔记
快速学习模型保存与加载
108 0