跳到内容

用于管理分布式机器学习工作负载的独占GPU访问的工具

许可证

通知 您必须登录才能更改通知设置

rosisz/TensorHive公司

存储库文件导航

TensorHive公司

TensorHive是一个开源工具,用于管理分布式主机上多个用户使用的计算资源。它侧重于为机器学习工作负载授予对GPU的独占访问权限,包括预订,监测作业执行模块。

它的设计简单性、灵活性和配置友好性记住。


主要特点:

GPU预订日历

每列表示给定日期GPU的所有预订事件。为了进行新的预订,只需用鼠标点击并拖动,选择GPU,添加一些有意义的标题,还可以选择调整时间范围。如果我们的基础设施中有许多主机和GPU,您可以使用我们简化的水平日历快速确定空时隙,并筛选出已预留的GPU。形象

从现在开始,只有您的进程才有资格在保留的GPU上运行TensorHive会定期检查是否有其他用户违反了它。他们会收到有关其所有PTY的警告的垃圾邮件,每隔一段时间就会发送一封电子邮件,另外还会通知管理员(这取决于配置)。

端子警告 电子邮件警告 管理员警告
形象 形象 形象

基础设施监控仪表板

可在节点概述选项卡中监控可访问的基础设施。示例屏幕截图:在这里,您可以添加新的手表、选择指标并监视正在进行的GPU进程及其所有者。

形象

作业执行

多亏了作业执行模块中,可以为要在任何配置的节点上运行的任务定义命令。您可以手动管理它们、设置特定的生成/终止日期或将作业添加到队列中,以便它们自动执行未保留所需资源时。命令在中运行屏幕会话,所以在他们运行时附加到它是小菜一碟。

它提供了一个简单但灵活的(框架-认知)命令模板机制将帮助您自动化多节点培训。此外,专门的模板有助于为所选的众所周知的框架方便地设置适当的参数。示例目录中,您将找到使用作业执行各种模块框架(包括TensorFlow和PyTorch)和计算环境。

形象

TensorHive要求想要使用此功能的用户必须在其~/.ssh/授权密钥在所有要连接的节点上。


用例

我们的目标是为ML工程师在使用远程机器进行神经网络训练时经常需要解决的痛苦问题提供解决方案。

如果以下配置文件中描述的任何内容与您匹配,您应该考虑使用TensorHive:

  1. 你是一个管理员,负责管理安装了功能强大的GPU的集群(或多个服务器)。
  • 😠 用户多于资源,因此他们必须竞争
  • 🎤 用户需要独占访问到GPU,而不是排队系统
  • 🔮 您需要控制组织中哪些项目消耗的计算能力最大
  • 🌊 其他流行的工具只是过火,目的不同,或者需要花费大量时间阅读文档、安装和配置(Grafana、Kubernetes、Slurm)
  • 🐧 使用您的基础设施的人只需要一个界面来处理与管理计算基础设施相关的所有事情:监视、预订日历和调度分布式作业
  • 💥 不能冒险通过在每台机器上安装软件来破坏敏感配置,而应该选择可以从一个位置进行管理的集中式解决方案
  1. 你是一个独立用户他可以访问分散在多台机器上的强大GPU。
  • 〽️ 考虑到批量大小、主机到设备的数据传输等因素,您希望保持较高的GPU利用率,如gpu实用程序,内存实用程序,已用内存(_U)非常适合这个目的
  • 📅 使用日历可视化培训实验的名称有助于跟踪项目进展情况
  • 🐍 无论框架是什么,启动分布式培训对您来说都至关重要
  • 😵 管理所有分布式训练实验的训练命令列表会让你抓狂
  • 💤 记住在睡觉前手动启动训练不再有趣

TensorHive的优势

0️⃣ 无人机安装和配置示例苏多要求

1️⃣ 用户可以通过提前预订特定时间范围的GPU保留机制

     ➡️ 不再因规则而沮丧:先到先得“丛林法则”.

2️⃣ 用户可以准备和安排要在选定的GPU和主机上运行的自定义任务(命令)

     ➡️ 自动化和简化分布式培训-“一键控制全部”

️⃣ 从所有配置的主机收集所有有用的GPU指标在一个仪表板中

     ➡️ 不再手动登录到每台机器,以检查GPU当前是否正在使用

4️⃣ 可以向特定用户或组授予对特定GPU或主机的访问权限

     ➡️ 可以很容易地根据组织中工作组的当前需求调整基础结构的划分

5️⃣ 没有活动GPU保留时自动执行排队作业

     ➡️ 不紧急的作业可以添加到队列中,稍后自动执行


入门

前提条件

  • 所有节点都必须可以通过SSH访问,无需密码,使用SSH基于密钥的身份验证(如何设置SSH密钥-在中进行了解释快速启动部分)
  • 仅支持NVIDIA GPU(依赖于英维迪亚·斯密命令)
  • 目前,TensorHive假定所有想要注册到系统中的用户必须在TensorHive管理员配置的所有节点上具有相同的UNIX用户名(与独立开发人员无关)
  • (可选)我们建议在单独的用户帐户上安装TensorHive(例如张量蜂窝)并将此用户添加到tty公司系统组。

安装

通过pip
pip安装tensorhive
来源

(可选)出于开发目的,我们鼓励使用virtualenv、Anaconda等与当前的python包分离。

git克隆https://github.com/rocisz/TensorHive.git&& 光盘TensorHive公司pip安装-e.

TensorHive已经提供了最新的web应用程序构建,但如果您修改了源代码,可以使用制作应用程序。有关更多有用的命令,请参阅生成文件.使用测试的生成节点v14.15.4净现值6.14.10

基本用法

快速启动

这个初始化命令将指导您完成基本配置过程:

张量蜂窝初始化

您可以使用检查与已配置主机的连接测试命令。

张量蜂窝试验

(可选)如果您想允许UNIX用户自己设置TensorHive帐户并运行分布式程序通过作业执行模块,使用钥匙命令为TensorHive生成SSH密钥:

张量配置单元密钥

现在您应该准备好启动TensorHive实例了:

张量蜂窝

可以通过绿色突出显示的URL访问Web应用程序和API文档(按住Ctrl键并单击以在浏览器中打开)。

高级配置

您可以通过INI配置文件(将在张量蜂窝初始化):

~/.config/TensorHive/hosts_config.ini~/.config/TensorHive/main_config.ini~/.config/TensorHive/mailbot_config.ini
(参见示例)

主机_配置.ini 主配置ini 邮箱配置ini


反向代理设置

通过反向代理服务TensorHive需要在[应用程序接口]第节,共节主配置ini,包括url模式,url主机名,url端口url前缀.

(参见示例)

假设WebApp在本地提供http://localhost:5000(本地主机:5000),上的APIhttp://localhost:1111我们想在公开场合为TensorHive服务https://some-server/tensorhive在这种情况下主配置ini:

url_schema=httpsurl_hostname=some服务器url_port=443url_prefix=张量蜂窝/api

应与类似于以下nginx示例的反向代理一起使用:

位置/张量蜂窝{proxy_set_header X-Real-IP$remote_addr;proxy_set_header主机$Host;proxy_set_header X-Forwarded-Host$Host:$server_port;proxy_set_header X-Forwarded-Server$host;$proxy_add_X_Forwarded_f的proxy_set_header X-Forwarded-For;add_header“Access-Control-Allow-Origin”“*”;add_header“Access-Control-Allow-Credentials”“true”;add_header“Access-Control-Allow-Methods”“GET,POST,OPTIONS”;add_header“Access-Control-Allow-Headers”“DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type”;代理程序(_P)http://localhost:5000/tensorhiveproxy_set_header SCRIPT_NAME/tensorhive;}位置/张量蜂窝/api{proxy_set_header X-Real-IP$remote_addr;proxy_set_header主机$Host;proxy_set_header X-Forwarded-Host$Host:$server_port;proxy_set_header X-Forwarded-Server$host;$proxy_add_X_Forwarded_f的proxy_set_header X-Forwarded-For;add_header“Access-Control-Allow-Origin”“*”;add_header“Access-Control-Allow-Credentials”“true”;add_header“Access-Control-Allow-Methods”“GET,POST,OPTIONS”;add_header“Access-Control-Allow-Headers”“DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type”;代理程序(_P)http://localhost:1111}

引用

如果您在科学出版物中使用TensorHive,我们将不胜感激:

@文章{JMLR:版本22:20-225,作者={Pawe Ro shi ciszewski和Micha Martyniak以及Filip Schodowski},标题={TensorHive:分布式机器学习工作负载的独占GPU访问管理},杂志={机器学习研究杂志},={2021},体积={22},={215},={1-5},网址={http://jmlr.org/papers/v22/20-225.html}}

贡献和反馈

我们会的❤️ 收集您的观察结果、问题和拉取请求!

请随意报告任何配置问题,我们将帮助您.

目前,我们正在收集用户的实际基础设施保护场景,以提取并进一步支持最常见的TensorHive部署。

如果您考虑成为贡献者,请查看标记为好的第一期需要帮助.

信用

项目创建和维护人:

主要贡献者:

TensorHive在双方的联合项目中得到了大力支持语音实验室.ai冈斯克理工大学标题:“探索和选择方法使用多个GPU并行化神经网络训练”。

许可证

Apache许可证2.0