当前位置:首页 > 物联网 > 区块链
[导读] 如果没有 GPU,现代深度学习是不可能发展到今天的水平的。即使是 MNIST 数据集上的简单示例算法在 GPU 和 CPU 上运行速度的差别也有 10-100 倍。但是,当你没有优化所有设置时,

如果没有 GPU,现代深度学习是不可能发展到今天的水平的。即使是 MNIST 数据集上的简单示例算法在 GPU 和 CPU 上运行速度的差别也有 10-100 倍。但是,当你没有优化所有设置时,GPU 空闲的算力该作何用?

既然拥有了强大的计算设备,我们不免会考虑到虚拟货币挖矿。事实上这并不是很难,你需要的只是注册一个钱包,选择一种货币,设置好挖矿软件然后运行即可。只需要 Google 一下「如何用 GPU 开始挖矿?」,你就能看到大量介绍性文章手把手地教你如何操作。

优化效率

在本文中,我们需要加入另一个问题:如何让挖矿变得更加方便、自动化,同时在我需要让计算机全力运行深度学习模型时不让工作受到打扰。理想的解决方案是让计算机能够即时检查 GPU 的资源占用,当没有进程使用的时候自动开始挖矿;而在 TensorFlow、PyTorch 或其他工具需要开始计算的时候,监视器会发出命令让计算机立即停止挖矿。

这个问题应该很好解决,但我至今未在网上发现类似的东西,所以我自己尝试写了一个 GPU 监视程序。它不仅适用于挖矿任务,而且还可以用于其他各种任务。

NOTE. 在开始之前,你必须明白:希望你不要把这种计算资源优化方法用在办公室的计算机上,本人对于任何滥用造成的后果概不负责。

先决条件

首先,我的项目 gpu_mon 以及源代码已经发布在 GitHub 上了:https://github.com/Shmuma/gpu_mon

它由 Python 3 编写,其后没有标准库之外的依赖库,但它需要运行在 Linux 系统上,所以如果你的机器是 Windows 系统的话,抱歉了:)

gpu_mon 的运行逻辑如上所述:它会定期检查 GPU 的负载,如果没有进程使用的话,它会自动运行你在 config 文件中选择的程序。如果有其他程序打开了 GPU,指定程序会被自动停止以释放资源。所以在设置完以后,你只需要打开监视程序,随后像往常一样使用即可,从运行挖矿程序到全速运行深度学习模型之间仅有几秒钟的转换时间。

为了获取接入 GPU 设备的进程列表(假设是/dev/nvidia*),我们使用了 fuser 命令行工具。在基于 debian 的发行版上(如 ubuntu 或 debian),工具是由 psmisc 工具包提供的——它是系统安装的一部分,所以没有特殊的资源库需要安装。如果你的系统中没有 fuser(你可以通过在 shell 上运行「which fuser」命令来进行检查),则你需要事先安装一下。

调试

整个项目的配置都是在一个单独的配置文件中完成的,它是 ini 文件格式,存在于~/.config/gpu_mon.conf 目录中。示例配置文件如下所示,同时在 GitHub 中也可以找到。

配置文件包含四个部分:

1.默认全局设置 [defaults]。在这里只有一个选项,它指定监视软件对 GPU 设备资源用量的检查频率。默认情况下,每十秒钟检测系统中的所有 GPU 一次。

2.GPU 设置可以用 gpu-前缀的方式指定任意 GPU。你也可以用 ID 将不同的 GPU 分组(/dev/nvidiaX 设备文件上的整数)。对于每个 GPU 组你都可以设置一个程序列表,其中列出不会抢占挖矿任务的程序。这样我们就可以应对 nvidia-smi 这样的工具了——它会使用 GPU 设备,但不应该妨碍挖矿。

3.挖矿进程配置部分,可以使用 process-前缀的方式指定一个或多个。对于每个项目来说你可以指定需要运行的挖矿程序,程序所在的目录,限制挖矿程序利用 GPU 资源的程度(这是通过导出 CUDA_VISIBLE_DEVICES 环境来完成的),日志文件名称以及挖矿程序输出。

4.TTY 监控部分,他可以让你选择伪终端监控,优先于挖矿程序。在默认情况下,此选项是关闭的。

以下是我在一台双 GPU 设备上的挖矿设置文件:

[defaults]

; how frequently perform GPU open and tty checks

interval_seconds=10

; configuration of GPUs to monitor for external program access. It could be several such secTIons

[gpu-all]

; list of comma-separated gpu indices or ALL to handle all available gpus

gpus=ALL

; comma-separated list of programs which can access gpu and should be ignored

ignore_programs=nvidia-smi

; program which will be started on gpu during idle TIme

[process-0]

dir=/tmp

cmd=/var/bin/miner

; list of gpu indices or ALL to handle all available gpus. If not ALL, CUDA_VISIBLE_DEVICES will be set

gpus=0

log=/var/log/miner-0.log

[process-1]

dir=/tmp

cmd=/var/bin/miner

; list of gpu indices or ALL to handle all available gpus. If not ALL, CUDA_VISIBLE_DEVICES will be set

gpus=1

log=/var/log/miner-1.log

; configuraTIon of tty monitoring

[tty]

enabled=False

该工具的设置可以允许我们控制系统中每个 GPU 和每个单独进程的计算资源占用。所以我们可以让深度学习进程只占用第一块 GPU(通过导 CUDA_VISIBLE_DEVICE=0),而不打扰第二块 GPU 上的挖矿进程。但如果我们想要充分释放资源,两块 GPU 上的挖矿程序都会被关闭。

正如之前所说的,一切都是透明的,你不应在开启/关闭挖矿程序上耗费精力,只需要专注于 TensorFlow 和 PyTorch 上的优化即可。现在,你可以开始使用 gpu_mon,获取利润了!

自动开始 GPU_MON

为了让 gpu_mon 不会打扰到自己,我们需要确保它会在系统启动后自动在后台运行。有很多工具都可以做到这点,但我更喜欢 supervisord,它是一个小型进程,会自动检查正在运行的程序,如果发现未响应会自动重启程序。为了开启 gpu_mon 的工作,安装 supervisord,在/etc/supervisor/conf.d/gpu_mon.conf 进行好设置就足够了。

下面是我的设置:

[program:gpu_mon]

command=/usr/bin/python3 /gpu_mon/gpu_mon.py

user=

environment=HOME=,USER=

autostart=true

autorestart=true

就是这样,随后你就可以重启 supervisord,然后检查 gpu_mon 是否启动了(命令:supervisorctl status gpu_mon),得到的回复应该像这样:

root@gpu:/etc/supervisor/conf.d# supervisorctl status gpu_mon

gpu_mon RUNNING pid 1526, upTIme 57 days, 18:14:27

多用户

如果 gpu_mon 被一个用户开启,而另一个或多个用户开始调用深度学习软件,则 gpu_mon 无法关闭挖矿程序。这是因为 fuser 命令受到安全限制——它无法向其他用户的进程展示正在运行的进程。如果你在多用户的情况下仍然需要 gpu_mon(还请注意不要使用公用电脑做这种事),你有如下两种选择:

给 gpu_mon 以 root 权限,这在任何情况下都不是推荐的方式。

给 fuser 二进制文件加入 SUID bit。在 Ubuntu 发行版中,我们可以通过运行命令 chmod+s/bin/fuser 来完成,它可以有效地让所有用户访问文件,通过 SUID bit,二进制文件是以文件拥有者证书的形式启动的,即使它是由其他用户启动的。但这仍然需要你开启 root 权限。

挖哪种虚拟货币?

目前,市面上存在多种虚拟货币,这要归功于比特币今年的繁荣。我个人最喜欢的是基于 equihash 的货币,像 ZCash 和 Komodo——它们都可以使用一种程序来挖矿。我是用 EWBF 挖矿程序的修订版来做这个工作,它要比原版快上 10%。

正如前文所述,gpu_mon 本身不会挖矿,它只会跟踪 GPU 进程,所以你可以使用任何 CUDA 优化的挖矿程序。

赚钱与否?

当然赚钱,但是不要指望使用一块英伟达 GTX 1080 就能赚来百万美元,虚拟货币的复杂性正在增长,但挖矿收入减去电费以后仍然是正数,所以何乐而不为呢?

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭