GGUF、Safetensors、ONNX三种格式

GGUF、Safetensors、ONNX三种格式

GGUF

GGUF 格式的模型文件可以用于各种应用场景,例如:

  • 本地部署 LLM: GGUF 格式使得在消费级计算机硬件(包括 CPU 和 GPU)上运行 LLM 成为可能。
  • 移动设备上的 LLM 推理: 由于其高效的存储和加载特性,GGUF 也适用于在移动设备上进行 LLM 推理。
  • 快速原型开发: GGUF 使得开发者可以更快速地加载和测试不同的 LLM 模型。

总而言之,GGUF 是一种重要的 LLM 文件格式,它通过提高存储效率、加载速度和兼容性,简化了 LLM 的使用和部署,并有望成为未来大模型文件标准格式之一。

本地运行GGUF格式的 LLM 模型

参考:https://github.com/karminski/one-small-step/blob/main/20250122-how-to-run-gguf-LLM-model/how-to-run-gguf-LLM-model.md

Safetensors

  • 安全性优先: 彻底解决了 pickle 格式的远程代码执行(RCE)漏洞风险, 通过限制反序列化操作仅加载张量数据, 从根本上杜绝了恶意代码注入的可能性.
  • 快速加载: 采用零拷贝(zero-copy)技术实现, 在CPU上, 如果文件已缓存, 则可以完全0拷贝(需满足张量连续存储条件)
  • 跨框架支持: 原生支持 PyTorch、TensorFlow、JAX 等主流深度学习框架, 支持多 GPU 设备间的无缝数据共享.
  • 轻量高效: 文件体积与性能经过优化, 支持与 LZ4/Zstandard 等压缩算法配合使用(注意:格式本身不包含压缩功能)
  • 类型安全: 通过严格的元数据校验确保数据类型和形状的一致性, 避免因类型错误导致的运行时崩溃.

ONNX

在这里插入图片描述
(图片来自 ultralytics.com)

  • ONNX(Open Neural Network Exchange)是一种开放的神经网络交换格式。
  • 它由微软和Facebook于2017年共同推出,现由Linux基金会的LF AI托管,旨在解决不同深度学习框架之间的互操作性问题,实现模型在不同平台和工具链之间的无缝迁移。

核心区别与关系

特性GGUFSafetensorsONNX
开发方GGML 团队 (llama.cpp)Hugging Face微软/Facebook (现属 Linux 基金会)
设计目标轻量级本地推理 (CPU/GPU)安全高效的张量存储跨框架模型交换与推理优化
主要用途本地运行量化后的 LLM安全分发模型权重跨框架训练/部署流水线
安全性无已知风险专防 pickle 的 RCE 漏洞依赖运行时环境
硬件支持优先 CPU,部分 GPU 优化框架相关 (PyTorch/TF/JAX)多硬件后端 (CPU/GPU/FPGA)
典型文件体积极小 (4-8bit 量化)原始权重大小中等 (含计算图元数据)

关系

  • 互补性:三者面向不同场景——GGUF 专注本地 LLM 推理,Safetensors 解决权重存储安全,ONNX 打通框架壁垒。
  • 可组合使用:例如用 Safetensors 存储原始权重 → 转换为 ONNX 进行跨框架部署 → 量化成 GGUF 本地运行。

如何选择格式?

  • 本地运行 LLM:GGUF(CPU 友好)或 TensorRT-LLM(NVIDIA GPU)。
  • 安全共享权重:Safetensors(Hugging Face 生态首选)。
  • 跨框架部署:ONNX → 进一步转换为目标硬件格式(如 .engine.tflite)。
  • 移动端:Core ML(Apple)或 TFLite(Android/嵌入式)。
  • 用 Safetensors:当需要安全共享、快速加载、跨框架兼容时(尤其是 Hugging Face 生态)。
  • 不用 Safetensors:纯本地训练或目标平台强制要求其他格式时。

趋势观察

  • GGUF 正成为开源 LLM 本地化的标准格式(如 Llama 3 社区量化版本)。
  • Safetensors 在 Hugging Face 模型库的渗透率已超 90%(截至 2024)。
  • ONNX 仍是企业级跨平台部署的核心中间件,但面临 PyTorch 2.0 直接导出方案的竞争。

参考资料

  • https://github.com/karminski/one-small-step/blob/main/20250113-what-is-gguf/what-is-gguf.md
  • https://github.com/karminski/one-small-step/blob/main/20250122-how-to-run-gguf-LLM-model/how-to-run-gguf-LLM-model.md
  • https://github.com/karminski/one-small-step/blob/main/20250210-what-is-safetensors/what-is-safetensors.md
  • https://github.com/karminski/one-small-step/blob/main/20250211-what-is-onnx/what-is-onnx.md
### safetensorsGGUF 格式在机器学习模型存储中的作用 #### safetensors 格式的特点 safetensors 是一种用于保存和加载 PyTorch 模型权重的安全格式。该格式旨在解决传统 `.pt` 或 `.pth` 文件可能存在的安全隐患,通过引入校验机制防止恶意代码注入[^1]。 - **安全性**:safetensors 使用哈希验证来确保文件未被篡改。 - **兼容性**:尽管专为 PyTorch 设计,但在某些情况下也可以与其他框架互操作。 - **效率**:相比原始二进制序列化方式,读写速度更快且占用空间更少。 ```python from safetensors.torch import save_file, load_file model_state_dict = {"param": torch.tensor([1.0])} save_file(model_state_dict, "model.safetensors") loaded_model = load_file("model.safetensors") print(loaded_model["param"]) ``` #### GGUF (General Graphical Universal Format) 的特点 GGUF 则是一种更为通用的图形表示方法,适用于多种类型的神经网络结构及其参数定义。它不仅限于特定平台或库的支持,而是提供了一个跨平台的标准接口来进行模型交换与共享[^2]。 - **灵活性**:可以表达不同架构下的各种组件关系。 - **可移植性**:易于换成其他常见格式ONNX 等。 - **扩展性强**:允许自定义元数据标签以便更好地描述模型特性。 ```json { "graph": { "nodes": [ {"id": "input", ...}, {"id": "conv_layer_1", ...}, ... ], "edges": [ ["input", "conv_layer_1"], ... ] }, "metadata": {} } ``` 两种格式各有侧重,在实际应用场景中可根据需求选择合适的方式进行模型持久化处理。对于追求高效稳定性的项目来说,可能会倾向于采用 safetensors;而对于那些希望获得更高程度抽象以及良好互通性的开发者而言,则会考虑使用 GGUF
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值