我正在按照本教程从头开始训练因果语言模型。
在教程中,他们加载标准 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)
如何加载相同的模型,但使用我的自定义全连接网络而不是标准网络?主要是想尝试更多/更少的层数、不同的激活函数等变化。
我在这里找到了源代码,但它非常复杂,我无法弄清楚如何用自定义部分替换完全连接的部分,或者自定义部分首先应该具有什么结构(例如,输入/输出大小)。
更新 例如,使用 FC 网络:
class FC_model(nn.Module):
def __init__(self):
super(FC_model, self).__init__()
self.fc1 = nn.Linear(768,256)
self.fc2 = nn.Linear(256,256)
self.fc3 = nn.Linear(256,50000)
def forward(self, x):
x = torch.sin(self.fc1(x)) + torch.rand(1)
x = torch.sin(self.fc2(x))
x = self.fc3(x)
return x
我假设全连接网络指的是全连接(FC)/线性层。
上面将向您展示模型内的模块:
您现在可以通过以下方式访问和更新 FC 层:
以上只是一个示例,您可以尝试不同的组合。
要试验不同的超参数,您可以使用HG 提供的Autoclass 。此类允许您使用 HG hub 上可用模型之一的基类创建自定义架构。例如,如果您想试验层数,您可以传递配置参数并将层数更改为所需的值。喜欢
"n_layers": 6.
了解更多,请参考以下链接:https ://huggingface.co/docs/transformers/create_a_model 。