Arch Linux安装机器学习相关软件:Opencv, Cuda, CUDNN

安装CUDA及Tensorflow

yay -S --needed --noconfirm cuda cudnn cuda-toolkit python-tensorflow-cuda
yay -S --needed --noconfirm optimus-manager optimus-manager-qt

我使用的电脑是2020 年的HP OMEM, 带有Intel集成显卡与Nvidia2070,需要使用optimus-manager切换显卡,如果你只有一个显卡可以不安装它。

如果是双显卡,需要运行optimus-manager-qt,通过状态栏图标切换为Nvidia显卡。

测试tensorflow是否可以使用GPU:

import tensorflow as tf
tf.test.is_gpu_available()

安装opencv

  • 安装依赖包nvidia-sdk。安装前需要先下载Video Codec SDK。将下载的文件放在nvidia-sdk目录,再安装例如:
    git clone --depth=1 https://aur.archlinux.org/nvidia-sdk.git
    cd nvidia-sdk
    # 下载Nvidia Video SDK
    # ...
    makepkg -si
    
  • 然后使用yay安装opencv-cuda,这个过程会比较久,
    # 如果已经装有opencv先删除
    yay -R opencv
    yay -S --needed --noconfirm opencv-cuda
    

如果中途失败,为避免重新编译,可以进入yay缓存目录手动安装:

cd ~/.cache/yay/opencv-cuda/
makepkg -si

测试是否安装成功:

import cv2
cv2.cuda.getCudaEnabledDeviceCount() > 0

Tensorflow OOM等问题

  • 在训练前提示系统RAM不够,这种情况一般Python进程会直接被杀死,命令行里只会收到Killed提示,
    • 如果你还没有配置swap分区,建议配置
    • 减小训练参数max_queue_size,默认为10
  • 训练时提示GPU OOM,可以使用下面的配置配置训练时使用的最大显存:
    from tensorflow.compat.v1 import ConfigProto
    from tensorflow.compat.v1 import InteractiveSession
    cf = ConfigProto()
    cf.gpu_options.allow_growth = True
    cf.gpu_options.per_process_gpu_memory_fraction=0.7
    session = InteractiveSession(config=cf)
    

后记

在使用optimus-manager前,我打算用nvida-setting切换显卡,结果修改了创建了Xorg.conf文件导致系统无法进入图形界面,删除/etc/X11/xorg.conf后解决。