当前位置: 首页 > news >正文

Transformer 模型简介

在使用 Hugging Face Transformers 时,加载模型 是完成各种 NLP 或生成任务的第一步。无论是文本分类、翻译、问答,还是大语言模型推理,正确加载模型都是整个流程的基础。

1. 为什么要加载模型

Transformer 模型经过大量数据的预训练,掌握了丰富的语言规律。我们可以直接下载并加载这些预训练模型,避免从零开始训练,大幅节省时间和计算资源。

加载后的模型包含两部分核心内容:

  • 配置(configuration):描述模型结构,如层数、隐藏维度、注意力头数等。

  • 权重(weights):模型学习到的参数,用于实际推理和微调。

2. 基本加载方式

Hugging Face 提供了统一的接口,只需一行代码即可加载公开的预训练模型。例如,加载一个 BERT 模型:

from transformers import BertModelmodel = BertModel.from_pretrained("bert-base-cased",           # 模型名称(或本地路径)dtype="auto",                # 自动选择合适的数据类型(如 float16),节省显存。device_map="auto"            # 自动分配设备(如 GPU、CPU、多卡),方便加载大模型。
)

from_pretrained() 会自动下载并加载模型的配置与权重。

3. 保存模型

模型加载后,可以保存到本地,以便下次快速使用或部署。保存模型非常简单:

示例

model.save_pretrained("directory_on_my_computer")

执行后,会在目标目录下生成以下文件:

  • config.json — 模型配置文件

    该文件包含了构建模型所需的全部超参数。例如 BERT 的配置如下:

    {
    "architectures": ["BertModel"
    ],
    "attention_probs_dropout_prob": 0.1,
    "classifier_dropout": null,
    "dtype": "float32",
    "gradient_checkpointing": false,
    "hidden_act": "gelu",
    "hidden_dropout_prob": 0.1,
    "hidden_size": 768,
    "initializer_range": 0.02,
    "intermediate_size": 3072,
    "layer_norm_eps": 1e-12,
    "max_position_embeddings": 512,
    "model_type": "bert",
    "num_attention_heads": 12,
    "num_hidden_layers": 12,
    "pad_token_id": 0,
    "position_embedding_type": "absolute",
    "transformers_version": "4.56.0",
    "type_vocab_size": 2,
    "use_cache": true,
    "vocab_size": 28996
    }
    
  • model.safetensors — 模型权重文件

    这是模型真正的“记忆”,包含了所有参数矩阵。在推理和微调时,模型会将这些权重加载到内存(或显存)中进行计算。

4. 模型的类型

在 Transformers 中,模型大致可以分为两类:

  • 基础模型(Barebones Model)
  • 带任务头的模型(Task-specific Model)

这两类模型的区别主要在于输出内容和使用场景。

4.1 基础模型(Barebones Model)

定义: 基础模型就是只包含 Transformer 编码器或解码器主体的模型,不附加任何任务专用层。它只负责生成隐藏状态(hidden states),也就是模型内部对输入文本理解的向量表示。这些向量不是最终输出,但可以用于下游任务,如文本分类、相似度计算等。

常见类:

  • AutoModel
  • BertModel
  • LlamaModel

示例:

from transformers import AutoModel, AutoTokenizertokenizer = AutoTokenizer.from_pretrained("bert-base-cased")
model = AutoModel.from_pretrained("bert-base-cased")inputs = tokenizer("Hello world!", return_tensors="pt")
outputs = model(**inputs)# 获取最后一层隐藏状态
hidden_states = outputs.last_hidden_state

在这个例子中,模型输出的只是隐藏状态,你可以用它做文本分类、相似度计算或其他自定义任务。

4.2 带任务头的模型(Task-specific Model)

定义: 在基础模型之上附加特定任务的输出层(Head),模型可以直接用于任务推理,无需额外修改结构。

常见类:

  • AutoModelForCausalLM → 文本生成(语言建模)
  • AutoModelForSequenceClassification → 文本分类
  • AutoModelForQuestionAnswering → 问答任务
  • AutoModelForTokenClassification → 命名实体识别

示例(文本生成):

from transformers import AutoModelForCausalLM, AutoTokenizertokenizer = AutoTokenizer.from_pretrained("gpt2")
model = AutoModelForCausalLM.from_pretrained("gpt2")input_ids = tokenizer("Once upon a time", return_tensors="pt").input_ids
generated = model.generate(input_ids, max_length=50)
print(tokenizer.decode(generated[0]))

可以看到,带任务头的模型可以直接完成任务,非常方便,但如果需要自定义任务或修改输出结构,则可能需要使用基础模型。

http://www.dtcms.com/a/450657.html

相关文章:

  • 自己做的网站能赚钱吗杭州百度百家号seo优化排名
  • 手机网站建设的规划做seo必须有自己网站吗
  • GitHub 热榜项目 - 日榜(2025-10-06)
  • 购物网站建设市场wordpress app插件下载
  • 招聘网站哪个好用茶叶网站策划书
  • 微服务项目->在线oj系统(Java-Spring)--C端用户(超详细)
  • <从零基础到精通JavaScript>1.2 变量声明 (let const)
  • 方差齐性(Homoscedasticity):概念、检验方法与处理策略
  • html个人网站制作wordpress按分类设置seo
  • 网站图片水印青海住房和城乡建设部网站
  • 网站备案了有什么好处wordpress chianz
  • 网站开发现在主要用什么语言企业网站运维
  • Windows环境下,源码启动+本地部署和启动开源项目Ragflow失败SRE模块
  • 高陵微网站建设北京seo网站结构优化
  • 【Leetcode hot 100】51.N皇后
  • 虚拟空间能建多个网站浙江省建设会计协会网站首页
  • 中英文网站域名的区别外贸网站开发哪家好
  • 网站加载不出来是什么原因建筑企业
  • 湖北省住房城乡建设厅网站查wordpress修改首页模板文件名
  • 个人做百度云下载网站吗c sql网站开发
  • 山东省建设公司网站怎样注册自己的微信小程序
  • 成都企业网站开发公司十堰网络销售
  • pve8.3安装win11
  • 网站设计的基本流程是什么什么行业 网站
  • AUTOSAR进阶图解==>AUTOSAR_TR_InteroperabilityOfAutosarTools
  • 网站建设与制十堰网站建设价格
  • PCIe协议之低功耗篇之 L0s 状态(一)
  • Uav toolbox使用
  • 网站架构企业收费标准网站优化 无需定金
  • 网站设计指南wordpress 添加