使用R在AWS Batch中运行多节点并行作业

0

【以下的问题经过翻译处理】 我正在尝试在AWS Batch中构建一个运行R脚本的多节点并行作业。我的R脚本独立地为多个用户运行几个统计模型。因此,我希望将此作业分割并分发到一组几个服务器的群集上以加速执行。 我的问题是更好地了解其架构。我的理解是,在某些地方,我必须准备使用推送到ECR的Docker镜像的R应用程序代码的容器化版本。

我的问题是: 并行逻辑应该放在R代码内部,同时使用相同的镜像吗?如果是的话,Batch如何知道如何拆分我的作业(分成多少块)?R代码中的for循环足够了吗? 还是我应该在Dockerfile中的某个地方定义并行逻辑,说container1运行用户1-5的模型,container2运行用户6-10的模型,等等..?

profile picture
专家
已提问 8 个月前53 查看次数
1 回答
0

【以下的回答经过翻译处理】 使用R和AWS Batch的分布式计算支持,可以实现在AWS Batch中运行多节点并行作业。 要将R应用程序代码放置在容器中,可以使用Docker镜像并将其推送到Amazon Elastic容器注册表(ECR)。一旦镜像在ECR中可用,就可以使用它来创建AWS Batch中的作业定义。 关于并行逻辑,可以将其放置在R代码中。您可以使用R内置的并行处理库,例如'parallel'或'foreach',将作业拆分为块并并行运行它们。例如,您可以使用'foreach'软件包定义并行循环,以并行运行不同用户的模型。在这种情况下,您不需要在Dockerfile中定义并行逻辑。 要定义作业将被分割成多少块,可以使用'registerDoParallel'函数指定并行工作者的数量。您还可以在作业定义中设置为容器分配的vCPU数量。 AWS Batch将根据等待执行的作业数和可用实例数自动缩放实例数。您还可以配置计算环境中的实例数。 总之,您可以将并行逻辑放置在R代码中,并使用相同的镜像创建作业定义。AWS Batch将根据R代码中指定的并行工作者和为容器分配的vCPU数量自动将作业分成块。

profile picture
专家
已回答 8 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则