机器学习 使用GPU

机器学习 使用GPU

机器学习最近引起了更多的关注。GPU(有时称为“图形处理单元”)是专门的计算系统,可以连续处理大量的数据。因此,GPU是机器学习应用的理想平台。本文将介绍如何入门,并探讨GPU在机器学习中的几个优点。

使用GPU的好处

由于以下因素,GPU是加速机器学习工作负载的有效工具-

  • 并行处理-通过GPU的同时多任务处理特性,可以实现大规模机器学习方法的并行化。因此,复杂的模型训练时间可以从几天缩短到几小时甚至几分钟。

  • 高内存带宽-由于GPU的内存带宽比CPU高,因此可以更快地在GPU内存和主存储器之间传输数据。这将节省机器学习模型的训练时间。

  • 成本效益-廉价的GPU能够执行需要大量CPU的工作。

您有几种选择可以访问专用GPU。您可以使用具有专用GPU的本地计算机立即进行机器学习任务。但是,如果您更愿意使用基于云的解决方案,像Google Cloud、Amazon AWS或Microsoft Azure这样的服务提供GPU实例,可以在任何地方轻松设置和使用。

设置GPU

在使用GPU进行机器学习之前,需要进行一些设置-

GPU硬件 - 要开始使用GPU进行机器学习,需要一块GPU。由于其出色的性能和与知名机器学习框架(如TensorFlow、PyTorch和Keras)的兼容性,NVIDIA GPU是机器学习社区中使用最广泛且最受欢迎的GPU。如果您还没有GPU,云服务公司如AWS、Google Cloud或Azure提供GPU租赁服务。

驱动程序和库 - 在获得硬件后,需要安装适当的驱动程序和库。用于机器学习的GPU加速所需的驱动程序和库是由NVIDIA提供的CUDA工具包的一部分。还必须安装所需机器学习框架的GPU版本。

验证设置 - 在安装后运行一个快速的机器学习程序,并确保GPU被用于计算,以确认您的配置。

使用GPU进行机器学习

配置完成后,您的GPU已经准备好用于机器学习。您应该执行以下操作-

导入必要的库 - 为了使用GPU进行机器学习,需要导入适当的库来实现GPU加速。以TensorFlow为例,使用tensorflow-gpu库而不是标准的TensorFlow库。

定义模型 - 导入所需的库后,必须定义机器学习模型。可以使用神经网络、决策树和其他允许GPU加速的机器学习算法作为模型。

编译模型 - 在构建模型之后,您必须通过定义指标、优化器和损失函数来编译它。此外,在此阶段还必须指定输入形状、输出形状和模型的隐藏层数量。

拟合模型 - 一旦模型构建完成,您可以通过确定批处理大小、轮数和验证拆分来将数据拟合到模型中。如果要使用 CPU 或 GPU 进行计算,还必须额外提及。将 “use_gpu” 选项设置为 “True”,可以使用 GPU。

评估模型 – 在对模型进行适配后计算准确率、精确率、召回率和 F1 得分,可以评估其性能。多个绘图库,包括 matplotlib 和 sea born,也可以用于可视化结果。

使用 GPU 在 Google Colab 中的代码示例

Google Colab 允许您为训练机器学习模型选择 CPU 或 GPU。您可以在运行时部分找到它并更改运行时选项。因此,您可以选择在运行时使用 GPU。

机器学习 使用GPU

在谷歌Colab中选择GPU

机器学习中的GPU

import tensorflow as tf
from tensorflow.keras import datasets, layers, models

# Load the CIFAR-10 dataset
(train_images, train_labels), (test_images, test_labels) = datasets.cifar10.load_data()

# Normalize pixel values to be between 0 and 1
train_images, test_images = train_images / 255.0, test_images / 255.0

# Define the model architecture
model = models.Sequential([
   layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)),
   layers.MaxPooling2D((2, 2)),
   layers.Conv2D(64, (3, 3), activation='relu'),
   layers.MaxPooling2D((2, 2)),
   layers.Conv2D(64, (3, 3), activation='relu'),
   layers.Flatten(),
   layers.Dense(64, activation='relu'),
   layers.Dense(10)
])

# Compile the model
model.compile(optimizer='adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
   metrics=['accuracy'])

# Train the model using the GPU
with tf.device('/GPU:0'):
   history = model.fit(train_images, train_labels, epochs=10,
   validation_data=(test_images, test_labels))

输出

Downloading data from https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz
170498071/170498071 [==============================] - 5s 0us/step
Epoch 1/10
1563/1563 [==============================] - 74s 46ms/step - loss: 1.5585 - accuracy: 0.4281 - val_loss: 1.3461 - val_accuracy: 0.5172
Epoch 2/10
1563/1563 [==============================] - 73s 47ms/step - loss: 1.1850 - accuracy: 0.5775 - val_loss: 1.1289 - val_accuracy: 0.5985
Epoch 3/10
1563/1563 [==============================] - 72s 46ms/step - loss: 1.0245 - accuracy: 0.6394 - val_loss: 0.9837 - val_accuracy: 0.6557
Epoch 4/10
1563/1563 [==============================] - 73s 47ms/step - loss: 0.9284 - accuracy: 0.6741 - val_loss: 0.9478 - val_accuracy: 0.6640
Epoch 5/10
1563/1563 [==============================] - 72s 46ms/step - loss: 0.8537 - accuracy: 0.7000 - val_loss: 0.9099 - val_accuracy: 0.6844
Epoch 6/10
1563/1563 [==============================] - 75s 48ms/step - loss: 0.7992 - accuracy: 0.7182 - val_loss: 0.8807 - val_accuracy: 0.6963
Epoch 7/10
1563/1563 [==============================] - 73s 47ms/step - loss: 0.7471 - accuracy: 0.7381 - val_loss: 0.8739 - val_accuracy: 0.7065
Epoch 8/10
1563/1563 [==============================] - 76s 48ms/step - loss: 0.7082 - accuracy: 0.7491 - val_loss: 0.8840 - val_accuracy: 0.6977
Epoch 9/10
1563/1563 [==============================] - 72s 46ms/step - loss: 0.6689 - accuracy: 0.7640 - val_loss: 0.8708 - val_accuracy: 0.7096
Epoch 10/10
1563/1563 [==============================] - 75s 48ms/step - loss: 0.6348 - accuracy: 0.7779 - val_loss: 0.8644 - val_accuracy: 0.7147

计算是在GPU上进行的,借助于tf.device(‘/GPU:0’)上下文管理器。

结论

通过使用GPU进行机器学习,可以显著提高模型的性能,并将训练时间从几天缩短到几小时甚至几分钟。在利用GPU进行机器学习之前,您必须首先通过安装所需的驱动程序和库,检查配置,然后进行配置。这将减少运行时间并使代码执行更快。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程