什么是.safetensors格式文件

AI解读 8小时前 硕雀
4 0

.safetensors 是一种用于存储和加载张量(tensor)的文件格式,专为机器学习模型的权重存储而设计。它具有安全性、快速加载和跨平台兼容性等优点,广泛应用于深度学习框架中,如 PyTorchTensorFlow Lite 和 Stable Diffusion 等。以下是对 .safetensors 格式的详细介绍:

1. 安全性

safetensors 格式的一个核心特点是其安全性。它通过仅存储张量数据(即模型的权重和参数),而不包含任何代码或元数据,从而避免了代码注入的风险。例如,传统的 .ckpt 或 .pth 文件可能包含 Python 代码,这可能导致在加载模型时意外执行恶意代码。而 .safetensors 文件只包含张量数据,因此在加载时不会执行任何代码,从而提高了安全性 。

2. 快速加载

safetensors 格式在加载速度上也表现出色。它支持“零拷贝”(zero-copy)加载,即在加载模型时可以直接从磁盘映射到内存,而不需要额外的复制操作。这种机制显著提高了加载速度,尤其是在处理大型模型时。例如,与 PyTorch 的 pickle 格式相比,safetensors 在 CPU 上的加载速度更快,而在 GPU 上的加载速度与 PyTorch 相当 。

3. 跨平台兼容性

safetensors 格式支持跨语言和跨框架的兼容性。这意味着无论使用哪种编程语言或框架(如 Python、R、C++ 等),都可以轻松地读取和写入 .safetensors 文件。例如,R 语言中的 safetensors 包提供了对 .safetensors 文件的读写支持,而 Python 中的 safetensors 库也提供了类似的接口 。

4. 文件结构

safetensors 文件的结构分为两部分:头部(header)和主体(body)。

  • 头部:包含一个 JSON 字符串,描述了文件的元数据,如张量的名称、数据类型、形状、数据偏移量等。头部以 8 个字节开始,用于存储文件的总长度 。
  • 主体:包含张量的二进制数据。这些数据按照头部中描述的元数据进行组织,便于快速访问和加载 。

5. 懒加载

safetensors 支持“懒加载”(lazy loading),即在加载模型时,可以先检查文件的元数据,而不需要立即加载所有张量。这种机制在分布式训练和推理中非常有用,因为它可以减少内存占用,并提高加载效率 。

6. 无文件大小限制

safetensors 格式没有文件大小限制,这意味着它可以用于存储非常大的模型。例如,Hugging Face 的 Stable Diffusion 模型就使用 .safetensors 格式来存储其权重,以确保模型的高效加载和运行 。

7. 与传统格式的对比

与传统的 .pth.ckpt 或 .pt 文件相比,.safetensors 格式在安全性、加载速度和兼容性方面具有明显优势。例如:

  • 安全性.safetensors 不包含代码,因此不会在加载时执行恶意代码。
  • 加载速度.safetensors 支持零拷贝加载,加载速度更快。
  • 兼容性.safetensors 支持跨语言和跨框架的兼容性,而传统格式通常只支持特定的框架或语言 。

8. 使用场景

safetensors 格式广泛应用于以下场景:

  • 移动设备上的模型部署:由于其轻量级和快速加载的特性,.safetensors 文件非常适合在移动设备上运行模型,如 TensorFlow Lite 的模型 。
  • 大型模型的存储和加载.safetensors 格式支持高效的加载和存储,适用于大型模型的训练和推理 。
  • 分布式训练和推理.safetensors 的懒加载特性使其在分布式训练和推理中非常有用,可以减少内存占用并提高效率 。

9. 安装和使用

safetensors 格式可以通过多种方式安装和使用:

  • Python:可以通过 pip install safetensors 安装 safetensors 库,并使用 safe_save_file 和 safe_load_file 函数来读写 .safetensors 文件 。
  • R 语言:可以通过 install.packages("safetensors") 安装 safetensors 包,并使用 safe_save_file 和 safe_load_file 函数来读写 .safetensors 文件 。

10. 总结

.safetensors 是一种安全、快速且高效的文件格式,专为存储和加载张量数据而设计。它通过仅存储张量数据,避免了代码注入的风险,并通过零拷贝加载和懒加载机制提高了加载速度。此外,.safetensors 格式支持跨语言和跨框架的兼容性,使其成为深度学习模型存储和加载的理想选择。无论是用于移动设备上的模型部署,还是大型模型的训练和推理,.safetensors 都是一个值得推荐的文件格式 .safetensors格式

来源:www.aiug.cn
声明:文章均为AI生成,请谨慎辨别信息的真伪和可靠性!