作者:Victor Sonck,ClearML 开发者倡导者
ClearML 是一个开源的 MLOps 平台,我们很喜欢过去几年围绕我们建立起来的社区。在这篇文章中,我们将概述 ClearML 代码库的结构,以便您知道当您想为我们的社区贡献力量时该怎么做。
更喜欢观看视频?点击下方
首先要做的是。让我们看看我们的 GitHub 页面和相应的代码库。稍后,我们将详细介绍最重要的几个。
最重要的代码库当然是 ClearML SDK。它包含了所有可以在您自己的机器上运行的东西,比如实验管理器、数据版本控制工具、自动化等等。
接下来,SDK 需要与某种后端进行通信,后端将存储我们所有的信息、模型和数据,以便以某种方式进行可视化。clearml-server 代码库包含后端代码,clearml-web 代码库包含 Web UI。
clearml-server 不要与 clearml-serving 混淆。clearml-serving 是我们自定义的模型服务引擎所在地,您可以使用它将任何模型变成一个 API,并提供 CLI 部署、自动伸缩和模型监控功能。这是我们最新的项目,快去看看吧!
然后是 clearml-agent 代码库。它包含了在任何远程机器上运行实验所需的所有代码。它还与后端服务器通信以拉取它应该处理的任务。
最后,没有好的文档,任何好的开源工具都无法存在。我们的文档网站(托管在 clear.ml/docs 下)就是从这个代码库构建的。
我们的其他代码库则更加专业化,比如用于在 Kubernetes 上运行所有内容的 Helm Charts,一些 ClearML GitHub actions 示例,或者 clearml-blogs 代码库,其中包含我们博客文章中的示例代码。
如何贡献
好的,好的,内容很多。但是您究竟如何才能为这些代码库中的任何一个贡献力量呢?您最佳的贡献选择是文档和 SDK。
首先,提交 issues 和 PR 是最直接的贡献方式,而最简单的入门方式是文档。
如果您发现拼写错误或其他错误,您可以轻松编辑 markdown 文件并提交 PR。或者您创建了一个简单的测试来检查某些内容?将其添加为示例!一个文档 PR 总是能让我们开心一整天。
如果有什么不清楚的地方,或者可以用更好的方式解释,请随时提交 issue 与我们讨论问题!我们总是乐于集思广益。
其次,您甚至不必触碰我们的代码库就可以提供帮助。将 ClearML 添加为其他代码库上的日志记录器扩展同样很有价值。
许多机器学习项目,如 Huggingface、YOLOv5 或 spaCy,都内置了对第三方实验管理器的支持。将 ClearML 添加为外部日志记录器通常不是很困难,这是对开源贡献和 ClearML 使用的一个很好的实践。只要维护者愿意接受,请随意将 ClearML 添加到您喜欢的机器学习代码库中。
第三种贡献方式是参与 SDK 的工作,但这需要更多一点解释:ClearML SDK
首先,您可以通过分享您出色的示例来提供帮助。比如说您构建了一个非常酷的流水线,或者您有使用 clearml-data 的特殊方式。通过将其添加到 examples 文件夹中,展示给全世界!
除了示例之外,您还可以编写一个 binding。实验管理器会自动集成许多外部库,为此,每个受支持的库都有一个称为 binding 的东西。
一个 binding 本质上是说:如果用户脚本中导入了此外部库,则将其最有趣的功能替换为我们自己的版本。每个被修补的功能将首先调用原始库函数,然后在其之上添加一些 ClearML 记录魔法。
在此示例中,我们将覆盖 save 函数,首先调用原始 save,然后将其报告为当前任务上的 ClearML 输出模型,最后返回原始函数本身的输出。这很酷,对吧?尝试扩展现有的 binding 或为您喜欢的库创建一个新的 binding 吧!
您还可以添加自定义超参数搜索算法,例如,或在 automations 文件夹中添加自定义自动化。
最后,如果您认为应该添加或删除某些 arguments,可以在 CLI 文件夹中找到命令行工具,或者如果您想添加自定义元数据跟踪等很棒的功能,可以在此处找到 clearml-data。
全世界的人都在使用 ClearML。我们是一个小团队,因此很难涵盖每一个用例并测试每一个场景。感谢像您这样的社区成员,我们才能真正打造出人们想要使用的产品。非常感谢您的贡献!
立即开始
通过使用我们的免费层级服务器或自行托管来开始使用 ClearML。在此阅读我们的文档。要了解有关 ClearML 的更多信息,请访问:https://clearml.org.cn。
如果您需要扩展您的 ML 流水线和数据抽象,或者需要无与伦比的性能和控制,请申请演示。