我正在尝试从拥抱面的变压器运行经过预训练的模型basePackageClasses
,但是除非遇到将序列限制为模型容量的四分之一(〜16k而不是模型容量的四分之一)的问题,否则我将获得内存不足的CUDA。 65k)。
这种情况发生在具有12GB RAM的Titan Xp上;我希望Reformer的所有技巧都能使模型具有合适的原始序列大小。
我正在运行的代码:
google/reformer-enwik8
model = ReformerModelWithLMHead.from_pretrained('google/reformer-enwik8')
model.cuda()
config = model.config
max_len = config.max_position_embeddings
dataset = Enwik8Dataset(
path, max_len, pad_id=config.pad_token_id,
eos_id=config.eos_token_id)
loader = DataLoader(dataset, batch_size=1, shuffle=False)
acc_loss = 0
for batch in loader:
with torch.no_grad():
batch_loss = model(input_ids=batch, labels=batch)[0]
acc_loss += batch_loss.mean().item()
acc_loss /= len(dataset)
继承自Enwik8Dataset
并进行基本数据预处理,如有必要,我可以发布代码。