大数据及机器学习带 GPU 必须干的第一件事_机器学习用显卡
首先要明白什么是 smi?它的英文全称是 System Management Interface。所以我们可以通俗点叫它 NVIDIA 系统管理接口或界面 (nvidia-smi) ,它是一个命令行实用程序,基于 NVIDIA 管理库 (NVML) ,旨在帮助管理和监控 NVIDIA GPU 设备。所以如果你没有支持 nvidia-smi,那么所有 N卡相关的 GPU 都基本不能使用。那 NVML
import torch
# 检查是否有CUDA支持
if torch.cuda.is_available():
print("CUDA支持可用")
else:
print("CUDA支持不可用")
注意事项,这里没有讲太多,因为不讲库安装,这里提个醒,pytorch 需要注意一下关键字:
类似 torch-2.1.2+cu118 这样的才是支持 GPU,而 torch-2.1.2 是没有 !
4.2、使用 tensorflow 框架
import tensorflow as tf
# 获取可见的GPU设备列表
gpu_devices = tf.config.experimental.list_physical_devices('GPU')
if gpu_devices:
print("GPU支持可用")
else:
print("GPU支持不可用")
五、扩展知识
5.1、什么是 nvidia-smi 命令行程序
首先要明白什么是 smi?它的英文全称是 System Management Interface。
所以我们可以通俗点叫它 NVIDIA 系统管理接口或界面 (nvidia-smi) ,它是一个命令行实用程序,基于 NVIDIA 管理库 (NVML) ,旨在帮助管理和监控 NVIDIA GPU 设备。
所以如果你没有支持 nvidia-smi,那么所有 N卡相关的 GPU 都基本不能使用。
那 NVML 又是什么?它的英文全称是 NVIDIA Management Library。它基于 C 的 API,用于监控和管理 NVIDIA GPU 设备的各种状态。它提供对通过 nvidia-smi 公开的查询和命令的直接访问。NVML 的运行时版本附带 NVIDIA 显示驱动程序,SDK 提供相应的标头、存根库和示例应用程序。每个新版本的 NVML 都向后兼容,旨在成为构建第三方应用程序的平台。
5.2、CPU 与 GPU 在开发及应用中的区别
在机器学习中,CPU(中央处理器)和 GPU(图形处理器)都可以用于训练和推理模型,但它们在性能和适用场景上有所不同。以下是 CPU 和 GPU 在机器学习中的主要区别:
5.2.1、并行处理能力
CPU | CPU 通常有较少的核心(如 2 到 16 个),适合处理顺序任务和复杂的逻辑运算。 |
GPU | GPU 拥有数百到数千个较小的核心,适合大规模并行计算,如矩阵运算和向量运算。 |
5.2.2、内存带宽
CPU | CPU 的内存带宽相对较低,访问内存的延迟较高。 |
GPU | GPU 具有更高的内存带宽,可以快速访问大量数据,适合处理大规模数据集。 |
5.2.3、计算速度
CPU | CPU 在处理复杂的逻辑运算和分支预测方面表现出色,但在大规模并行计算方面较慢。 |
GPU | GPU 在大规模并行计算方面表现出色,特别适合矩阵运算和卷积等操作,可以显著加速机器学习的训练和推理过程。 |
5.2.4、编程模型
CPU | 使用传统的编程语言和库,如 C++、Python 等,编程模型相对简单。 |
GPU | 需要使用特定的编程框架和库,如 CUDA(针对 NVIDIA GPU)或 OpenCL,编程模型相对复杂,需要考虑并行编程和内存管理。 |
5.2.5、成本和功耗
CPU | 相对便宜,功耗较低。 |
GPU | 通常比 CPU 更昂贵,功耗较高,需要额外的散热措施。 |
5.2.6、适用场景
CPU | 适合处理较小规模的数据集、复杂的逻辑运算以及部署在资源受限的环境中。 |
GPU | 适合处理大规模数据集、计算密集型任务(如深度学习)以及需要实时性能的应用场景。 |
在实践中,许多机器学习任务,特别是深度学习,都倾向于使用 GPU 来加速训练和推理过程。然而,对于某些特定的任务和场景,如部署在嵌入式设备或边缘计算中,CPU 仍然是一个可行的选择。此外,一些机器学习框架和库,如 TensorFlow 和 PyTorch,提供了同时支持 CPU 和 GPU 的灵活性,可以根据需求和可用资源进行选择。
5.3、什么是 CUDA?
CUDA(Compute Unified Device Architecture)是由 NVIDIA 开发的一个并行计算平台和编程模型,旨在利用 NVIDIA GPU 的并行处理能力来加速计算密集型任务。它允许开发者使用类似于 C/C++ 的语言来编写能够在 GPU 上运行的程序,从而大大提高计算性能。
CUDA 的出现极大地推动了 GPU 计算的发展,使得开发者能够更容易地利用 GPU 的并行处理能力来加速计算密集型任务。它已经成为了许多高性能计算和机器学习框架的重要组成部分,如 TensorFlow、PyTorch 等。然而,需要注意的是,CUDA 仅支持 NVIDIA GPU,对于其他厂商的 GPU,需要使用其他编程模型和框架,如 OpenCL 等。
六、参考资料
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
取](https://bbs.csdn.net/topics/618545628)**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
更多推荐
所有评论(0)