首页 > 解决方案 > 如何使用两个 aws ec2 实例(1 个 gpu 和 1 个 cpu 实例)和一个存储来(运行代码、存储/共享文件)并降低成本

问题描述

我的团队正在使用一个 gpu 实例来运行基于机器学习 tensorflow 的 yolo 计算机视觉应用程序,并将其用于训练机器学习模型。它每小时花费 7 美元,并且有 8 个 gpu。试图降低它的成本。我们需要 8 个 gpu 来加快训练速度,有时很多人可以同时使用不同的 gpu。

对于我们的用例,我们有时在一个月的至少 1-2 周内根本不使用 gpu (8 gpus)。但是在这段时间内可能会使用 gpu,但也可能不会。所以我想知道是否有一种方法可以在不需要 gpu 时通过低成本 cpu 实例编辑代码并执行所有 cpu 密集型操作。并且仅在需要时打开 gpu 实例使用它,然后在工作完成时停止它。

我曾想过使用 efs 将代码放在共享文件系统上,然后从那里运行,但我读了一篇文章(https://www.jeffgeerling.com/blog/2018/getting-best-performance-out-amazon-efs)它写道,我永远不应该从基于网络的驱动器运行代码,因为速度会变得非常慢。所以我不知道从 efs 文件系统运行机器学习应用程序是否好。我正在考虑在 efs 中的文件夹上创建虚拟环境,但我认为这不是一个好主意。

谁能提出实现这一目标并降低成本的好方法。如果您建议使用我考虑过的 gpu 数量较少的实例,但我们有时需要 8 个 gpu 来进行更快的训练,但我们在 1-2 周内根本不使用 gpu,但仍然会产生成本。

请就如何在不使用现货或预留实例的情况下为此用例实现低成本提出建议。提前致谢

标签: amazon-web-servicesamazon-ec2amazon-efsdeep-learning-ami

解决方案


一些想法:

  • GPU 实例现在允许休眠,因此在启动您的 GPU 时选择新的停止实例行为“休眠”,这将让您将其关闭 2 周,但如有必要,可以快速启动它
  • 如果您只有一个实例,请考虑使用 EBS 进行具有大量预置 iops 的数据存储,以便快速将数据移入/移出您的实例
  • 或者,将您的模型移至 Sagemaker,以确保您只在积极训练模型时为使用 GPU 付费
  • 如果您正在应用您的模型(推理),则将该工作负载移至廉价实例。经过训练的 yolo 模型可以在非常小的 CPU 实例上运行推理,而这部分工作负载根本不需要 GPU。

推荐阅读