safetensors:安全存储张量的新型工具

作者:快去debug2024.01.17 11:12浏览量:68

简介:safetensors是一种用于安全存储张量的新型格式,相比pickle,它更安全且速度快。本文将介绍safetensors的安装和使用方法,并通过一个简单的案例展示其用法。

千帆应用开发平台“智能体Pro”全新上线 限时免费体验

面向慢思考场景,支持低代码配置的方式创建“智能体Pro”应用

立即体验

深度学习机器学习中,模型的权重和参数通常以张量的形式存储。为了方便地保存和加载这些张量,我们经常使用pickle或类似工具。然而,pickle存在一定的安全隐患,因为它可以存储任何Python对象,包括恶意代码。为了解决这个问题,一种新型的简单格式——safetensors被开发出来,它是一种专门用于安全存储张量的工具。
一、安装
安装safetensors可以通过pip或conda进行。

  1. pip安装
    在命令行中输入以下命令即可:
    pip install safetensors
  2. conda安装
    conda install -c chuggingface safetensors
    二、使用案例
    下面是一个简单的例子,展示如何使用safetensors来加载一个模型权重文件。
    首先,我们需要安装必要的库。在这个例子中,我们将使用transformers库中的BERT模型作为示例:
    from transformers import BertTokenizer, BertModel
    model = BertModel.from_pretrained(‘bert-base-uncased’)
    tokenizer = BertTokenizer.from_pretrained(‘bert-base-uncased’)
    然后,我们将模型权重保存为safetensors格式:
    import safetensors
    safetensors.save(model.state_dict(), ‘model.safetensors’)
    接下来,我们可以加载这些权重:
    weights = safetensors.load(‘model.safetensors’, device=’cpu’)
    model.load_state_dict(weights)
    在这个例子中,我们首先导入了必要的库和模型。然后,我们使用safetensors的save函数将模型权重保存为safetensors格式。最后,我们使用safetensors的load函数加载这些权重,并使用load_state_dict方法将它们加载到模型中。
    需要注意的是,safetensors支持多种设备类型,包括CPU、GPU等。在使用safetensors时,我们需要指定加载权重的设备类型。在上面的例子中,我们使用device=’cpu’来指定在CPU上加载权重。如果要在GPU上加载权重,可以将device参数设置为’cuda’(或具体的GPU ID)。
    safetensors不仅安全,而且速度快。它使用了零拷贝技术,能够快速地加载和保存张量。在上面的例子中,我们使用了datetime模块来测量加载权重的耗时。通过比较使用pickle和safetensors的加载时间,我们可以发现safetensors的速度优势。
    safetensors是一个方便且安全的工具,用于存储和加载深度学习模型的权重和参数。通过上面的例子,我们可以了解到它的基本用法和优势。在实际应用中,我们推荐使用safetensors来存储和加载模型权重,以确保数据的安全性并获得更好的性能。
article bottom image

相关文章推荐

发表评论