safetensors:安全存储张量的新型工具
2024.01.17 11:12浏览量:68简介:safetensors是一种用于安全存储张量的新型格式,相比pickle,它更安全且速度快。本文将介绍safetensors的安装和使用方法,并通过一个简单的案例展示其用法。
千帆应用开发平台“智能体Pro”全新上线 限时免费体验
面向慢思考场景,支持低代码配置的方式创建“智能体Pro”应用
立即体验
在深度学习和机器学习中,模型的权重和参数通常以张量的形式存储。为了方便地保存和加载这些张量,我们经常使用pickle或类似工具。然而,pickle存在一定的安全隐患,因为它可以存储任何Python对象,包括恶意代码。为了解决这个问题,一种新型的简单格式——safetensors被开发出来,它是一种专门用于安全存储张量的工具。
一、安装
安装safetensors可以通过pip或conda进行。
- pip安装
在命令行中输入以下命令即可:
pip install safetensors - 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来存储和加载模型权重,以确保数据的安全性并获得更好的性能。

发表评论
登录后可评论,请前往 登录 或 注册