TransFormers教程(二、模型加载与测试)

1 模型下载

在TransFormers官方文档中,提供了使用pipeline的方法来下载和加载模型。在命令窗中执行下面的Python代码来完成。

>>> from transformers import pipeline

>>> classifier = pipeline("sentiment-analysis")

但是该方法在国内不适用,因为https://huggingface.co/网站我们无法直连,导致程序会显示多次连接后连接失败,所以需要自行在模型网站中下载模型进行使用。

打开官方提供的模型下载网站:https://huggingface.co/models

在这里插入图片描述

因为官方示例所提供的模型为:sentiment-analysis,所以我们就在该网站中的左上角搜索框中输入“sentiment-analysis”,在弹出的列表中选择第一个模型。

在这里插入图片描述

打开网页后点击”File and versions“,将里面的所有文件都统一下载到一个文件夹后放在transforme

### Safetensors 的多框架兼容性 Transformers 模型加载 Safetensors 是一种高效的文件格式,用于存储深度学习模型的权重。它具有安全性、高性能以及良好的跨框架兼容性特点[^1]。 #### 1. **Safetensors 文件的安全性和高效性** Safetensors 提供了一种安全的方式来保存和读取模型权重,避免了传统 Pickle 方法可能带来的安全隐患。通过其零拷贝特性,可以显著提升模型加载的速度,这对于大规模模型尤为重要。 以下是使用 `safetensors` 加载部分张量的一个典型例子: ```python from safetensors import safe_open tensors = {} with safe_open("model.safetensors", framework="pt", device=0) as f: tensor_slice = f.get_slice("embedding") vocab_size, hidden_dim = tensor_slice.get_shape() tensor = tensor_slice[:vocab_size, :hidden_dim] ``` 上述代码展示了如何仅加载特定的部分张量(如嵌入层),从而节省内存资源并加速初始化过程。 --- #### 2. **Transformers 库中的集成** Hugging Face 的 Transformers 库广泛支持各种主流的大规模预训练模型,并提供了对 `safetensors` 格式的内置支持。这意味着可以直接利用 `.safetensors` 文件作为模型权重的来源,而无需额外转换为其他格式。 要加载基于 `safetensors` 存储的 Transformer 模型,可以通过如下方式完成: ```python from transformers import AutoModelForCausalLM, AutoTokenizer # 初始化 tokenizer 和 model tokenizer = AutoTokenizer.from_pretrained("path/to/model", use_safetensors=True) model = AutoModelForCausalLM.from_pretrained( "path/to/model", torch_dtype=torch.float16, low_cpu_mem_usage=True, use_safetensors=True ) # 测试推理功能 input_text = "Hello world!" inputs = tokenizer(input_text, return_tensors="pt").to(model.device) outputs = model.generate(**inputs) print(tokenizer.decode(outputs[0])) ``` 在此过程中,参数 `use_safetensors=True` 明确指定了优先尝试从 `.safetensors` 文件中加载权重。如果该路径不存在对应的 `.safetensors` 文件,则会回退到传统的 PyTorch 权重文件(`.bin`)。此设计增强了灵活性,同时也保留了向后兼容的能力[^3]。 --- #### 3. **多框架的支持能力** 为了适应不同的深度学习生态系统需求,Safetensors 被设计为能够轻松适配多个框架环境。例如,在 TensorFlow 或 JAX 中也可以采用类似的逻辑操作这些进制数据结构。具体而言,开发者只需调整 `framework` 参数即可切换目标运行时平台: ```python import tensorflow as tf from safetensors.tensorflow import load_file weights = load_file("model.safetensors", tf_device="/GPU:0") for name, value in weights.items(): print(f"{name}: {value.shape}") ``` 这段代码片段演示了在 TensorFlow 下加载相同格式的数据流程序列化对象的方法。 此外,对于那些专注于轻量化部署场景的应用场合来说,诸如 vLLM 这样的优化框架同样推荐配合 `safetensors` 实现更优的整体表现[^2]。 --- ### 总结 综上所述,借助于 Safetensors 所具备的强大特性和易用接口,无论是单机实验还是分布式生产环境中都可以便捷地处理复杂的神经网络架构及其关联组件之间的交互关系。同时,由于其天然契合现代机器学习工作流程的设计理念,使得像 HuggingFace Transformers 等工具链得以无缝衔接其中,进一步促进了整个行业的标准化进程发展步伐。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大白xy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值