大模型中 .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

相关文章

SpringBoot中@Value注入静态变量方式

《SpringBoot中@Value注入静态变量方式》SpringBoot中静态变量无法直接用@Value注入,需通过setter方法,@Value(${})从属性文件获取值,@Value(#{})用... 目录项目场景解决方案注解说明1、@Value("${}")使用示例2、@Value("#{}"php

SpringBoot分段处理List集合多线程批量插入数据方式

《SpringBoot分段处理List集合多线程批量插入数据方式》文章介绍如何处理大数据量List批量插入数据库的优化方案:通过拆分List并分配独立线程处理,结合Spring线程池与异步方法提升效率... 目录项目场景解决方案1.实体类2.Mapper3.spring容器注入线程池bejsan对象4.创建

Vue和React受控组件的区别小结

《Vue和React受控组件的区别小结》本文主要介绍了Vue和React受控组件的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录背景React 的实现vue3 的实现写法一:直接修改事件参数写法二:通过ref引用 DOMVu

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

Python中Json和其他类型相互转换的实现示例

《Python中Json和其他类型相互转换的实现示例》本文介绍了在Python中使用json模块实现json数据与dict、object之间的高效转换,包括loads(),load(),dumps()... 项目中经常会用到json格式转为object对象、dict字典格式等。在此做个记录,方便后续用到该方

使用shardingsphere实现mysql数据库分片方式

《使用shardingsphere实现mysql数据库分片方式》本文介绍如何使用ShardingSphere-JDBC在SpringBoot中实现MySQL水平分库,涵盖分片策略、路由算法及零侵入配置... 目录一、ShardingSphere 简介1.1 对比1.2 核心概念1.3 Sharding-Sp

Spring创建Bean的八种主要方式详解

《Spring创建Bean的八种主要方式详解》Spring(尤其是SpringBoot)提供了多种方式来让容器创建和管理Bean,@Component、@Configuration+@Bean、@En... 目录引言一、Spring 创建 Bean 的 8 种主要方式1. @Component 及其衍生注解

Go之errors.New和fmt.Errorf 的区别小结

《Go之errors.New和fmt.Errorf的区别小结》本文主要介绍了Go之errors.New和fmt.Errorf的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考... 目录error的基本用法1. 获取错误信息2. 在条件判断中使用基本区别1.函数签名2.使用场景详细对