为什么 Tensorflow 报告 CUDA 内存不足但 empty_cache 不起作用?
Why Tensorflow reports CUDA out of memory but empty_cache doesn't work?
device = torch.device("cuda:0")
model = BertModel.from_pretrained("bert-base-uncased", output_hidden_states = True)
model.to(device)
train_hidden_states = []
model.eval()
for batch in train_dataloader:
b_input_ids = batch[0].to(device)
b_input_mask = batch[1].to(device)
with torch.no_grad():
output = model(b_input_ids,
token_type_ids=None,
attention_mask=b_input_mask,
)
hidden_states = output[2][12]
train_hidden_states.append(hidden_states)
这里我试图获取train_dataloader中数据的Bert模型的最后一层嵌入。
问题是 CUDA 在 14 个批次后内存不足。
我尝试清空缓存,但它只降低了一点点 GPU 使用率。
with torch.cuda.device('cuda:0'):
torch.cuda.empty_cache()
可能是什么问题?
您正在 train_hidden_states
列表中的 GPU 上存储张量。您可以在推送到列表 train_hidden_states.append(hidden_states.cpu())
.
之前移动到 CPU
device = torch.device("cuda:0")
model = BertModel.from_pretrained("bert-base-uncased", output_hidden_states = True)
model.to(device)
train_hidden_states = []
model.eval()
for batch in train_dataloader:
b_input_ids = batch[0].to(device)
b_input_mask = batch[1].to(device)
with torch.no_grad():
output = model(b_input_ids,
token_type_ids=None,
attention_mask=b_input_mask,
)
hidden_states = output[2][12]
train_hidden_states.append(hidden_states)
这里我试图获取train_dataloader中数据的Bert模型的最后一层嵌入。
问题是 CUDA 在 14 个批次后内存不足。
我尝试清空缓存,但它只降低了一点点 GPU 使用率。
with torch.cuda.device('cuda:0'):
torch.cuda.empty_cache()
可能是什么问题?
您正在 train_hidden_states
列表中的 GPU 上存储张量。您可以在推送到列表 train_hidden_states.append(hidden_states.cpu())
.