我有一个持久的服务器,它不可预测地接收来自用户的新数据,需要大约10个GPU实例来处理大约5分钟的问题,然后我将答案发送给用户。服务器本身是一个廉价的、始终持久的单CPU Google Cloud实例。当用户请求进入时,我的代码启动我的10个已创建但已停止的Google Cloud GPU实例
gcloud compute instances start (instance list)
在极少数情况下,如果停止的实例不存在(有时它们会被擦除),则会检测到这些实例并使用
gcloud beta compute instances create (...)
这个系统运行得很好。我唯一的抱怨是,即使创建了但停止的实例,在我的GPU代码最终开始运行之前,启动时间大约是5分钟。其中大部分只是实例本身启动其Ubuntu主机并调用我的代码的时间。Ubuntu启动GPU的延迟只有10秒左右。
我怎样才能减少这个5分钟的延迟?我想大部分原因是Google不得不将4 4GB的实例数据复制到目标机器上,但(vanilla) Ubuntu的启动时间可能会增加1分钟。我甚至不确定我是否可以独立地量化这两个数字,我只能测量从启动到代码开始响应的3-7分钟的组合延迟。
我不认为Ubuntu操作系统的启动时间是造成启动延迟的主要原因,因为我在一台实际的机器上使用相同的Ubuntu和相同的GPU,从poweron启动开始,它在46秒内开始运行我的GPU代码。
我的目标是尽快将结果返回给我的用户,而5分钟的启动延迟是一个瓶颈。
创建一个更小的实例大小,比如2 2GB会有帮助吗?我还能做些什么来减少延迟?
https://stackoverflow.com/questions/51317053
复制相似问题