首页 > 解决方案 > 我应该运行一个单独的线程来将模型保存在 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的文档,但没有找到我想要的。

标签: pythonpython-3.xpython-multithreadingpytorch

解决方案


这取决于您的模型大小。如果您的 IO 速度较慢且模型较大,则可能需要一些时间。但是通常的 FS 缓存足够大,可以存储整个模型。


推荐阅读