【问题标题】:Deploy PyTorch model to GCP resulting in memory limit exceeded将 PyTorch 模型部署到 GCP 导致超出内存限制
【发布时间】:2019-10-12 06:36:16
【问题描述】:

我已经使用 transformer-lm 训练了一个使用 PyTorch 的语言模型。我想将生成的模型作为 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-platform google-cloud-functions pytorch


    【解决方案1】:

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

    为了避免这种情况,您可能需要实现一个垃圾收集器。在 Python 中,您可以为此使用 gc module。具体可以试试gc.collect()函数清空内存。

    【讨论】:

    • 不幸的是,gc.collect 没有帮助;即使只运行一次,该函数也会崩溃
    • 在这种情况下,我建议您在本地测试您的代码以获取 memory leaks/spikes。你可能想看看这个关于 Python 内存泄漏的post
    • 请记住,云函数用于编写简单的、单一用途的函数,这些函数附加到从您的云基础设施和服务发出的事件上。对于更复杂的功能,您可能需要使用 Google App EngineGoogle Compute Engine
    猜你喜欢
    • 1970-01-01
    • 2020-05-23
    • 1970-01-01
    • 1970-01-01
    • 2021-04-06
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多