如何使用两个 aws ec2 实例(1 个 gpu 和 1 个 cpu 实例)和一个存储(运行 代码,store/share 文件)并降低成本

how to use two aws ec2 instances(1 gpu and 1 cpu instance) with one storage to(run code, store/share files) & reduce cost

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

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

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

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

请就如何在不使用 spot 或预留实例的情况下为此用例实现低成本提出一种方法。 提前致谢

一些想法:

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

为了降低推理成本,您可以使用支持按使用量付费功能的 Elastic Inference:

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-inference.html