当前位置:首页 > 物联网 > 区块链
[导读] 如果没有 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                     

多用户

如果 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%。

链接:https://mega.nz/#!4iIClQ4D!tbff8HgrT5Pii8yMDXf9eZd5yFSrwOALHnjsaW7NlWU

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

赚钱与否?

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

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

本文中,小编将对机器学习予以介绍,如果你想对它的详细情况有所认识,或者想要增进对它的了解程度,不妨请看以下内容哦。

关键字: 机器学习 深度学习

随着信息技术和算法研究的不断深入,人工智能(Artificial Intelligence, AI)已逐渐从理论构想走向现实应用,并在全球范围内引发了科技革命。当前阶段的人工智能正处于一个快速发展且日益成熟的时期,我们将...

关键字: 人工智能 深度学习

随着信息技术的飞速发展,人工智能(Artificial Intelligence, AI)作为一门综合了计算机科学、数学、统计学、认知科学和神经科学等多个学科知识的前沿技术领域,正以前所未有的速度改变着世界。本文将系统梳...

关键字: 人工智能 深度学习

3月20日消息,全球最强AI芯片GB200横空出世,使得这届GTC 2024大会热度空前,也让英伟达创始人兼CEO黄仁勋再一次成为全球焦点人物。

关键字: 英伟达 GPU 芯片

The Weather Company 和台湾气象部门成为首批采用全新 Earth-2 云 API 的机构,使用 AI 加速全球气候和天气高分辨率模拟和可视化,突破性地实现 2 公里尺度

关键字: AI 数字孪生 GPU

3月19日消息,在英伟达年度 GTC 开发者大会上,黄仁勋宣布推出推出了Project GR00T人型机器人项目,其中就包括全球首款人型机器人基础模型。

关键字: 英伟达 GPU 芯片

3月19日消息,在英伟达GTC 2024大会上,英伟达CEO黄仁勋宣布推出新一代GPU Blackwell。

关键字: 英伟达 GPU 芯片

基于先进的 NVIDIA 网络、NVIDIA 全栈 AI 软件和存储技术,可将集群中 Grace Blackwell 超级芯片的数量扩展至数万个,通过 NVIDIA NVLink可将多达 576 块 Blackwell...

关键字: 生成式 AI 超级计算 GPU

NVIDIA cuLitho 可将半导体制造中高度计算密集型的工作负载加快 40-60 倍,并为业界带来全新的生成式 AI 算法

关键字: 生成式 AI 半导体 GPU

全新 NVIDIA NIM 和 GPU 加速的微服务专为生物、化学、影像和医疗数据开发,并在 NVIDIA DGX 云中运行

关键字: 生成式 AI GPU 数字医疗
关闭
关闭