python - 我应该运行一个单独的线程来将模型保存在 Pytorch 中吗
问题描述
考虑PyTorch Imagenet 示例中的以下片段(请注意“ #AREA OF INTEREST ”):
try:
for epoch in range(1, args.epochs+1):
epoch_start_time = time.time()
train()
val_loss = evaluate(val_data)
# Save the model if the validation loss is the best we've seen so far.
if not best_val_loss or val_loss < best_val_loss:
# AREA OF INTEREST ##########
with open(args.save, 'wb') as f:
torch.save(model, f)
#############################
best_val_loss = val_loss
else:
# Anneal the learning rate if no improvement has been seen in the validation dataset.
lr /= 4.0
问题是:我应该运行一个单独的线程来保存模型以节省时间,还是我过度杀伤了这个过程?即,不值得运行单独的线程吗?我检查了torch.save的文档,但没有找到我想要的。
解决方案
这取决于您的模型大小。如果您的 IO 速度较慢且模型较大,则可能需要一些时间。但是通常的 FS 缓存足够大,可以存储整个模型。