safetensors 0.1.0

宣布推出 safetensors,这是一个新的 R 包,允许以 safetensors 格式读取和写入文件。

来源:RStudio AI博客

safetensors 是一种用于存储张量的新型、简单、快速且安全的文件格式。该文件格式的设计及其原始实现由 Hugging Face 主导,并在其流行的“transformers”框架中得到广泛采用。 safetensors R 包是纯 R 实现,允许读取和写入 safetensor 文件。

文件格式 广泛采用

safetensors 的初始版本 (0.1.0) 现在在 CRAN 上。

动机

Python 社区使用 safetensors 的主要动机是安全性。如官方文档中所述:

官方文档
这个 crate 的主要理由是消除在 PyTorch 上使用默认使用的 pickle 的需要。

此 crate 的主要原理是消除在 PyTorch 上使用 pickle 的需要,默认情况下会使用 pickle。

Pickle 被认为是一种不安全的格式,因为加载 Pickle 文件的操作可能会触发任意代码的执行。这从来都不是 torchfor R 用户的担忧,因为 LibTorch 中包含的 Pickle 解析器仅支持 Pickle 格式的子集,其中不包括执行代码。

但是,与其他常用格式相比,该文件格式还有其他优势,包括:

    支持延迟加载:您可以选择读取文件中存储的张量的子集。零拷贝:读取文件所需的内存不会超过文件本身。(从技术上讲,当前的 R 实现确实会进行一次复制,但如果我们真的需要它,可以对其进行优化)。简单:实现文件格式很简单,不需要复杂的依赖关系。这意味着它是在 ML 框架之间和不同编程语言之间交换张量的良好格式。例如,您可以在 R 中编写一个安全的张量文件并在 Python 中加载它,反之亦然。
  • 支持延迟加载:您可以选择读取文件中存储的张量的子集。
  • 支持延迟加载:您可以选择读取文件中存储的张量的子集。

    此处

    格式

    <-