我有一个docker文件,它描述了安装了pandas
,sklearn
等安装的经典数据科学机器,我想通过谷歌容器从谷歌云机器实例化它当某个通知到达时,给它我的python包和一些参数作为参数。
我必须在100个不同的数据集上运行我的python包,使用不同的访问键等...我的梦想是通过谷歌容器实例化我的docker文件的100个实例,并用我的100个不同的数据集和参数提供它们,所以他们可以非常快地产生产出。
另一种选择是实例化我的docker文件的一个实例,并逐个为每个数据集和参数提供一个实例,但这看起来要长得多。
我的问题是:
1-这些解决方案中的一个比另一个更可行或更现实吗?
2-是否有第三种解决方案以智能方式实例化此docker文件,以便快速进行计算而不是昂贵?
答案 0 :(得分:1)
两种解决方案都可以正常工作,您只是在询问是否应该并行化您的问题(这主要取决于您)。
如果要并行运行工作负载,则需要更多计算资源。如果您希望能够并行按需运行它(当信号到达时),您将需要准备好这些资源(空闲)或动态实例化它们(这比你更便宜)只在你使用它时支付计算费用。)
您可以让控制器进程接受信号,扩展(或创建)Google Container Engine群集以获得所需数量的节点,然后将N个pod提交给系统以执行您的工作。每个pod都可以使用环境变量进行参数化(您需要动态合成这些变量)。然后收集输出并在完成后缩小(或删除)群集。
答案 1 :(得分:0)
您可以利用Kubernetes。 Kubernetes是一个开源容器集群管理器。它在一组节点实例中调度任意数量的容器副本。主实例公开Kubernetes API,通过该API定义任务。 Kubernetes在节点上生成容器来处理定义的任务。
可以根据需要动态修改容器的数量和类型。每个节点实例上的代理(kubelet)监视容器,并在必要时重新启动它们。
Kubernetes针对Google Cloud Platform进行了优化,但可以在任何物理或虚拟机上运行。