首页 > 解决方案 > 将 PyTorch 模型部署到 GCP 导致超出内存限制

问题描述

我已经使用使用 PyTorch的 transformer-lm训练了一个语言模型。我想将生成的模型作为 Cloud Function 部署到 Google Cloud Platform。Cloud Functions 的内存限制为 2 GB。

问题是加载模型会导致错误,因为使用了太多内存(超出了内存限制)。model.pt 文件为 1.32 GB,我使用

torch.load(model_path / 'model.pt', map_location='cpu')

加载模型。有没有办法 i) 压缩模型?ii) 不立即加载完整模型?或任何其他使其在 GCP 上运行的可能性?

标签: google-cloud-platformgoogle-cloud-functionspytorch

解决方案


Cloud Functions在触发时运行自己的服务器实例。如果一段时间后未使用调用的函数,则终止该实例。但是,如果您在实例仍在运行时再次调用它,则将再次使用同一个实例以及执行环境中的元素。这可能会导致您的函数崩溃。

为了避免这种情况,您可能需要实现一个垃圾收集器。在 Python 中,您可以使用gc模块。特别是可以尝试gc.collect()清除内存的功能。


推荐阅读