amazon-web-services - 如何使用两个 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,但仍然会产生成本。
请就如何在不使用现货或预留实例的情况下为此用例实现低成本提出建议。提前致谢
解决方案
一些想法:
- GPU 实例现在允许休眠,因此在启动您的 GPU 时选择新的停止实例行为“休眠”,这将让您将其关闭 2 周,但如有必要,可以快速启动它
- 如果您只有一个实例,请考虑使用 EBS 进行具有大量预置 iops 的数据存储,以便快速将数据移入/移出您的实例
- 或者,将您的模型移至 Sagemaker,以确保您只在积极训练模型时为使用 GPU 付费
- 如果您正在应用您的模型(推理),则将该工作负载移至廉价实例。经过训练的 yolo 模型可以在非常小的 CPU 实例上运行推理,而这部分工作负载根本不需要 GPU。
推荐阅读
- ios - React Native 中的 Xcode 项目在哪里?
- java - 如何使 Spring Boot 支持基于 Java 的语言?
- paypal - 非主要收款人未收到付款
- python - 按标签对多索引数据帧进行分组以计算平均值
- java - 如何将带有页码的目录添加到 RTF
- java - 当我调用spring data JPA分页查询时,抛出'PageImpl:找不到合适的构造函数,无法反序列化'
- java - JAVA CardView 在 SDK 版本 28 中消失
- php - 尝试按日期对一系列 WordPress 帖子进行排序,最后使用空值
- java - 与 jdbc 相比,Hibernate(PostgreSQL)外键上的慢速选择查询 WHERE 子句
- javascript - 力有向图的链接端点总是粘在矩形节点的左角