我们将会研究下创建和使用模型,我们以 BERT 架构模型为例。
1. 创建模型
如果我们打算创建一个新的模型,即: 从头开始训练一个 BERT 模型,我们可以按照下面步骤来构建模型:
- 实例化一个用于模型配置的 BertConfig 对象;
- 使用 BertConfig 对象来初始化 BertModel 模型对象。
我们创建的 model 需要我们从头使用大量的数据和算力来进行训练。示例代码如下:
from transformers import BertModel from transformers import BertConfig if __name__ == '__main__': # 实例化默认配置对象 config = BertConfig() print(config) # 实例化模型对象 model = BertModel(config=config)
程序会打印出默认的模型配置参数:
BertConfig { "attention_probs_dropout_prob": 0.1, "classifier_dropout": null, "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.11.3", "type_vocab_size": 2, "use_cache": true, "vocab_size": 30522 }
2. 微调模型
我们也可以从已经训练好的模型上迁移一些学习好的参数到我们的模型上,然后根据我们的任务对其进行微调。当我们训练好模型后,可以保存模型对象。此时,会在模型的存储路径下产生两个文件:config.json、pytorch_model.bin,前者是模型初始化的参数,后者则是训练得到的模型参数。
from transformers import BertModel from transformers import BertConfig if __name__ == '__main__': # 实例化模型对象 model = BertModel.from_pretrained('bert-base-chinese') # 存储模型对象 model.save_pretrained('my-model')
这里需要注意的是,我们使用的是 Bert 架构的模型,不要把其他架构的预训练模型的参数加载到我们前面你的模型中。https://huggingface.co/models?filter=bert 可以找到 Bert 架构的预训练模型。