google-cloud-platform - 将 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 上运行的可能性?
解决方案
Cloud Functions在触发时运行自己的服务器实例。如果一段时间后未使用调用的函数,则终止该实例。但是,如果您在实例仍在运行时再次调用它,则将再次使用同一个实例以及执行环境中的元素。这可能会导致您的函数崩溃。
为了避免这种情况,您可能需要实现一个垃圾收集器。在 Python 中,您可以使用gc模块。特别是可以尝试gc.collect()
清除内存的功能。
推荐阅读
- java - 仅在特定片段处添加工具栏菜单
- python - 将数据框单元格乘以矩阵值的问题
- sql - 如何在 PostgreSQL 中编写选择查询以遍历选择查询返回的数组
- python - 获取 NameError:Vapoursynth/Python 中未定义名称“视频”
- oracle - 如何使用 curl 在 Oracle Apex 中提交页面
- jira - 在 JIRA 中返回没有父级的问题的查询
- rxjs - RxJS:使用自定义逻辑匹配两个可观察对象
- ios - 越野车 UI 表格视图
- python - 解析 PDF 时忽略表格
- java - 你应该如何在 Java 中处理 MongoDB 异常?