我正在使用 AWS 在自定义数据集上训练 CNN。我启动了 p2.xlarge 实例,将我的 (Python) 脚本上传到虚拟机,然后通过 CLI 运行我的代码。
我使用 Python3(CUDA 10.0 和 Intel MKL-DNN)激活了 TensorFlow(+Keras2) 的虚拟环境,这是 AWS 的默认选项。
我现在正在运行代码来训练网络,但感觉 GPU 没有“激活”。训练的速度与我使用 CPU 在本地运行时一样快(慢)。
这是我正在运行的脚本:
https://github.com/AntonMu/TrainYourOwnYOLO/blob/master/2_Training/Train_YOLO.py
我还尝试通过将
with tf.device('/device:GPU: 0'):
放在解析器后面(第 142 行)并缩进下面的所有内容来更改它。然而,这似乎并没有改变任何事情。
有关如何激活 GPU(或检查 GPU 是否已激活)的任何提示?
查看此答案以列出可用的 GPU。
from tensorflow.python.client import device_lib
def get_available_gpus():
local_device_protos = device_lib.list_local_devices()
return [x.name for x in local_device_protos if x.device_type == 'GPU']
import torch
print(torch.cuda.is_available())
print(torch.cuda.current_device())
最终还是和我的tensorflow包有关!我必须卸载tensorflow并安装tensorflow-gpu。之后GPU会自动激活。
选项 1) 预装驱动程序,例如“AWS 深度学习基础 GPU AMI (Ubuntu 20.04)”
此 AMI 记录在:https://aws.amazon.com/releasenotes/aws-deep-learning-base-gpu-ami-ubuntu-20-04/,并且可以在 AWS EC2 Web UI Launch 上找到例如,通过在“快速入门 AMI”部分下搜索“gpu”(顺便说一句,他们的搜索非常糟糕)。我相信它是由亚马逊维护的。
我已经在
g5.xlarge
上进行了测试,记录在:https://aws.amazon.com/ec2/instance-types/g5/,我相信这是目前可用的最强大的单 Nvidia GPU 机器(Nvidia A10G) )截至 2023 年 12 月。请务必使用美国地区,因为那里更便宜,us-east-1
(北弗吉尼亚州)是我检查时最便宜的地区之一,为 1.006 美元/小时,因此对于大多数人来说,这一成本可以忽略不计。发达国家。只要确保每次关闭虚拟机就不会继续付费!!!
另一个可行的替代方案是
g4dn.xlarge
,它是最便宜的 GPU 机器,us-east-1
上每小时 0.526 美元,并且运行 Nvidia T4,但我认为它没有什么意义,因为它只是价格的一半最强大的 GPU 选择,那么为什么不选择最强大的 GPU,它可以通过加快此类交互式实验的速度来节省您的一些宝贵时间呢?这应该只是优化部署成本时的一个考虑因素。
此外,要访问
g5.xlarge
,首先您必须请求将 vCPU 限制增加到 4,如下所示: 您请求的 vCPU 容量超过当前 vCPU 限制 0,因为 GPU 机器似乎都需要至少 4 个 vCPU,这太烦人了。
最终获得实例和图像后,运行:
nvidia-smi
只需工作并返回:
Tue Dec 19 18:43:59 2023
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.104.12 Driver Version: 535.104.12 CUDA Version: 12.2 |
|-----------------------------------------+----------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+======================+======================|
| 0 NVIDIA A10G On | 00000000:00:1E.0 Off | 0 |
| 0% 18C P8 9W / 300W | 4MiB / 23028MiB | 0% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+
+---------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=======================================================================================|
| No running processes found |
+---------------------------------------------------------------------------------------+
这意味着驱动程序正在工作,从那时起我设法运行几个使用 GPU 的软件并观察
nvidia-smi
显示 GPU 使用率上升。
文档页面还链接到:https://docs.aws.amazon.com/dlami/latest/devguide/gs.html这是出现的所谓“AWS深度学习AMI”(DLAMI)的指南是 AWS 精选的深度学习 AMI 变体,但不幸的是,其中记录的许多变体使用 Amazon Linux(基于 RPM)而不是 Ubuntu。
启动它的示例 AWS CLI 是:
aws ec2 run-instances --image-id ami-095ff65813edaa529 --count 1 --instance-type g5.xlarge \
--key-name <yourkey> --security-group-ids sg-<yourgroup>
选项 2) 在基本 Ubuntu 映像“Ubuntu Server 22.04 LTS (HVM)”上自行安装驱动程序
此选项会增加额外的安装时间,但它的优点是为您提供更新的 Ubuntu 并更好地了解映像包含的内容。 Ubuntu 22.04 上的驱动程序安装非常简单,所以这绝对是一个可行的选择。
只需选择 Amazon 在启动实例时建议的第一个 Ubuntu AMI 并运行:
sudo apt update
sudo apt install nvidia-driver-510 nvidia-utils-510
sudo reboot
从那里开始
nvidia-smi
,其他一切都可以在g5.xlarge
上运行。
相关问题:https://askubuntu.com/questions/1397934/how-to-install-nvidia-cuda-driver-on-aws-ec2-instance