Hugging Face 的 transformers 库提供模型实现、预处理工具、训练集成功能,以及用于便捷加载预训练模型的 API。兼容的模型仓库是一组经过版本控制的模型工件和配置文件,使该库能够重建模型及其输入。
仓库内容 #
典型仓库包含模型配置(例如 config.json)、采用受支持格式保存的权重(例如 model.safetensors)以及预处理工件。文本模型通常包含分词器文件;视觉、音频和多模态模型可能包含图像、特征提取器、处理器或生成配置文件。
配置用于标识架构和超参数。权重文件保存学习到的参数。预处理文件同样重要:使用不同的分词器词表、归一化规则或图像尺寸,可能会使本身有效的权重产生错误结果。
对于下载的权重文件,应尽可能使用 safetensors,因为该格式在反序列化过程中不会执行 Python 代码。应将来自不可信来源的经过 pickle 序列化的 PyTorch 工件视为不安全。
加载仓库 #
Auto 类会检查仓库元数据并选择适当的实现:
from transformers import AutoModel, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("organization/model-name")
model = AutoModel.from_pretrained("organization/model-name")如果仓库提供匹配的任务头,应使用 AutoModelForSequenceClassification 等特定任务的变体。在需要可复现的应用中,应固定版本或提交哈希,从而避免仓库分支的变化在部署中产生未被察觉的改变。
Pipeline 与底层 API #
pipeline() 是用于探索和简单应用的实用高级接口。底层 API 可以更精确地控制分词、批处理、设备、生成设置和后处理:
inputs = tokenizer("A short example", return_tensors="pt")
outputs = model(**inputs)选择合适的抽象层级属于设计决策,而不是质量判断。Pipeline 可以减少样板代码;当应用需要显式控制或自定义行为时,直接调用模型更为合适。
发布模型 #
发布前,应提供足够的元数据,使其他用户能够复现推理过程:架构配置、权重、所需的分词器或处理器文件、许可证、预期任务、限制以及示例。除非确有必要,否则不要要求执行任意远程代码;启用远程代码的用户应先审查并固定相关代码,因为这些代码会在其 Python 环境中执行。
评论
在 GitHub 上阅读或评论(发表评论需要登录)