Skip to main content

ClearML 自动扩展器

视频教程


你好,欢迎来到ClearML。在这个视频中,我们将深入一些更高级的内容,并介绍自动扩展器,这是构建你自己的ClearML代理群的最简单方法。

数据科学在计算资源需求方面本质上非常不一致。有时你只是在研究论文,完全不需要计算资源,而有时你却在让16个GPU全力运转,还希望有更多。特别是在运行超参数优化或管道时,短时间内拥有一些额外的硬件会非常方便。

远程机器很容易从任何云提供商那里获得,而且你只需为你使用它们的时间付费……只要你记得在使用完后关闭它们。说真的,我敢肯定至少有30%的GPU使用是因为人们忘记关闭他们的远程机器。

无论如何,这就是自动扩展器为你做的事情:在你需要的时候启动尽可能多的机器,并在你不需要的时候自动关闭它们。

一旦自动扩展器部署完成,您就可以像我们在之前的视频中看到的那样,将实验添加到队列中。一旦检测到队列中有实验,自动扩展器将自动启动新的远程机器,并将它们转换为ClearML代理,这些代理将为您运行实验。无需摆弄远程SSH,无需Docker容器,也无需担心关闭——自动扩展器会为您处理这一切。

你也可以对队列进行一些高级操作。创建任意数量的队列,并且你可以指定哪种类型的远程机器应该服务于哪个队列。想象一下,如果你有一个CPU队列和一个GPU队列,你只需要将你的实验放入正确的队列中,你就知道将会有哪种类型的机器来运行它。

显然,您也可以通过限制一次可以启动的机器数量来配置最大预算,这样您就不会产生意外的费用。

既然理论部分已经处理完毕,让我们来看看如何在ClearML上设置自动扩展器。

要启动自动扩展器,请访问app.clear.ml并打开应用程序页面。在那里,您会找到每个大型云提供商的自动扩展器。以这种方式启动自动扩展器需要ClearML Pro,但它足够便宜,以至于忘记关闭远程GPU机器3天的费用比一年的ClearML Pro还要高,所以…

我们将在本视频中介绍AWS向导,但其他自动扩展器的设置非常相似。首先是您选择的云提供商的凭据,请确保分配了正确的访问权限,因为自动扩展器将使用这些凭据来启动机器并在它们空闲时再次关闭它们。

自然地,您希望代理能够运行您的原始代码,因此我们还需要提供我们的git凭据。这通过使用git应用程序令牌作为密码来实现,您可以在下面的描述中找到如何生成此类令牌。

如果你是从笔记本运行的,不用担心!即使使用实验管理器跟踪的笔记本也可以在远程机器上重现!

最后一个重要的大设置当然是我们想要启动哪种类型的机器。

具体细节将很大程度上取决于您最终使用的云平台,但一般来说,您主要需要提供想要运行的机器类型(即CPU核心数量、RAM和GPU的数量)。每个云提供商都有不同的选项和命名方案,但这里总会有一个方便的工具提示,引导您查看相关文档。

一旦你决定了机器的细节,你也可以在这里输入你希望这些机器监听的队列,就像我们在视频的第一部分讨论的那样。你还必须指定允许同时运行的这些机器的最大数量,以便你可以控制预算。

你可以根据需要添加任意数量的这些机器类型。最后,还有一些更高级的配置设置,你可以在下面链接的文档中了解更多。

填写完所有这些设置后,我们现在启动自动扩展器,这样我们就可以看到它实际上是如何工作的。

我们立即进入自动扩展器仪表板,可以看到正在运行的机器数量、闲置的机器数量、每个队列可用的机器数量以及所有自动扩展器日志。目前我们没有任何机器在运行,因为我们的队列是空的。

所以如果我们去我们的一个项目,克隆这些任务在这里,然后将它们加入CPU队列,并在这里也克隆这个任务。我们可以像之前看到的那样编辑参数,甚至可以更改它应该在哪个容器中运行。然后我们将其加入GPU队列,我们现在应该看到自动扩展器开始起作用了。

自动扩展器已经检测到队列中的任务,并已开始启动远程机器来处理它们。我们可以在自动扩展器仪表板中跟踪这个过程。

一旦机器启动,ClearML代理将注册为Workers and Queues标签中的可用工作者。从这里开始,它们的行为就像我们之前见过的任何其他代理一样。

最后,当所有任务完成且远程机器空闲时,它们将自动关闭,工作列表将再次为空。

你可以看到,当这个功能与例如超参数优化或一次启动大量任务的管道结合时,非常强大。显然,它可以作为访问远程计算的主要方式,但甚至可以作为你已经在本地拥有的机器之上的额外层,以应对例如需求激增的情况。当你不用它时,你不需要支付费用,所以没有理由不一直运行它。

立即免费开始使用 app.clear.ml,如果您想通过自动化繁琐的工作来节省一些金钱和精力,可以开始使用 ClearML Pro 启动远程机器。如果您在此过程中遇到任何问题,请加入我们的 Slack 频道,我们会帮助您解决问题。