我知道我可以加载最小的GPT2变体
from transformers import AutoTokenizer, GPT2LMHeadModel, AutoConfig
config = AutoConfig.from_pretrained(
"gpt2",
vocab_size=len(tokenizer),
n_ctx=context_length,
bos_token_id=tokenizer.bos_token_id,
eos_token_id=tokenizer.eos_token_id,
)
model = GPT2LMHeadModel(config)
model_size = sum(t.numel() for t in model.parameters())
print(f"GPT-2 size: {model_size/1000**2:.1f}M parameters")
>>> GPT-2 size: 124.2M parameters
但是我怎样才能加载一个解码器层数较少的GPT2架构呢?比如说3层或5层而不是原来的(我想是12层)?注意我是从头开始训练的,所以我不是在寻找一个已经预先训练好的模型。
1条答案
按热度按时间rqcrx0a61#
为了堆叠3或5个解码器层,而不是
gpt2
具有的默认层数(12),将n_layer=3
或n_layer=5
作为附加参数传递到AutoConfig
类的.from_pretrained()
方法(GPT2Config
在引擎盖下)就足够了。或者,您也可以传递
num_hidden_layers=3
或num_hidden_layers=5
。实际上,由于https://github.com/huggingface/transformers/pull/13026,这两者是可以互换的。