我想在PyTorch中的模型中交替进行推理和训练,但是我需要在推理过程中对其进行修改,对此我有一些疑问。
我可以通过调用model.to('cpu')从gpu卸载模型,进行修改后的副本(并在gpu上运行),然后通过调用model.to('将原始文件移回gpu gpu')?换句话说,移动模型gpu-> cpu-> gpu是无损操作吗?传递给优化器的参数会怎样?我不想失去优化器状态
复制内存模型的最佳方法是什么?我可以先保存它,然后重新加载副本,但是不确定是否仅出于复制的需要。
如果我想以一半的精度运行推理(在这种情况下,速度要快2倍以上),我可以将模型更改为一半然后再改回吗?那是无损的吗? (该模型是否保留所有内容的全精度副本,还是将权重替换为适当的半精度?)
该模型类似于ResNet50。两种型号的GPU内存不足:)
答案 0 :(得分:1)
“复制内存模型的最佳方法是什么?我可以保存它,然后重新加载副本,但不确定是否仅需要复制它。”
您可以使用以下方式复制模型:
import copy
...
best_model = copy.deepcopy(model)
使用best_model,您可以将其保存到磁盘或加载到其他模型中,等等