可随意转载Update2024.11.10

一、背景

在多智能体强化学习平台SMAC上,需要用Linux运行环境并且需要驱动显卡来跑星际争霸2的QMIX算法。为了满足需求,需要制作Win10+Ubuntu18.04 双系统。

二、操作系统安装

  1. 安装Win10,预留一块空磁盘给Ubuntu
  2. 从网易镜像站下载Ubuntu18.04的iso
  3. 制作启动U盘,注意:用默认MBR方式
  4. 安装Ubuntu,注意:选择与windows共存方式
  5. 安装Ubuntu中文输入法

三、Ubuntu中GPU安装

1. 安装30系列显卡驱动

1.修改python版本到3:/usr/bin/python软链接到python3:

sudo ln -s python3.7 python

2.可选步骤:

sudo apt-get install python3-distutils

3.下载最新版pip:

$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py   # 下载安装脚本
$ sudo python get-pip.py    # 运行安装脚本

使用阿里云的pip源。

安装最新显卡驱动

# 卸载当前驱动
sudo apt purge *nvidia*
# 重启!!!
# 安装新驱动
sudo apt install nvidia-driver-xxx

注意:显卡驱动版本跟cuda版本没有严格对应关系,可以安装高版本驱动。

注意:ubuntu18.04推荐的显卡驱动版本号:470 有严重问题,如果不慎安装了这个版本,它会安装一个新的Linux内核,导致ubuntu18.04无法联网。解决方法:操作系统启动时进入GRUB高级选项,选中之前的Linux内核版本启动,然后彻底卸载有问题的Linux内核和470版本的显卡驱动,升级到更高的显卡驱动版本。

2. 安装CUDA

执行下面命令安装cuda11.2,强制下一步,不安装显卡驱动

wget https://developer.download.nvidia.com/compute/cuda/11.2/Prod/local_installers/cuda_11.2.xxx_linux.run
sudo sh cuda_11.2.xxx_linux.run

安装结果日志如下:

# 不装驱动,直接装cuda11.2
ouyang@ouyang-ubuntu:~/software$ sudo sh cuda_11.2.xxx_linux.run
[sudo] password for ouyang: 
===========
= Summary =
===========

Driver:   Not Selected
Toolkit:  Installed in /usr/local/cuda-11.2/
Samples:  Installed in /home/ouyang/, but missing recommended libraries

Please make sure that
 -   PATH includes /usr/local/cuda-11.2/bin
 -   LD_LIBRARY_PATH includes /usr/local/cuda-11.2/lib64, or, add /usr/local/cuda-11.2/lib64 to /etc/ld.so.conf and run ldconfig as root

To uninstall the CUDA Toolkit, run cuda-uninstaller in /usr/local/cuda-11.2/bin

Please see CUDA_Installation_Guide_Linux.pdf in /usr/local/cuda-11.2/doc/pdf for detailed information on setting up CUDA.
***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 460.00 is required for CUDA 11.2 functionality to work.
To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
    sudo <CudaInstaller>.run --silent --driver

3.安装cudnn

安装cuda11.2对应的cudnn版本8.x,可加速显卡的计算速度。

sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/

按第5步日志信息配置PATH和LD_LIBRARY_PATH

注意:如果报collections_abc错误,请pip卸载包six再重新安装。

3.1 安装多版本cuda

有时候我们会依赖(学习)别人的项目,这个时候为了避免麻烦最好安装别人指定的版本。

多版本安装建议

删除 /usr/local/cuda 的软链接,避免影响先安装的cuda版本(注意环境变量一律依赖软链接)

在官网找到cuda10.2并下载它和它的补丁文件

执行命令安装cuda10.2, 注意取消显卡驱动选项(不安装显卡驱动)

重新建立软链接/usr/local/cuda到cuda10.2上

执行命令安装cuda10.2 的补丁

安装cudnn :解压缩并复制到cuda相应的目录

动态配置

# 在/user/local/ 下面根据情况建立软链cuda,指向不同的cuda版本

# 修改/etc/ld.so.conf.d
ouyang@ouyang-ubuntu:/etc/ld.so.conf.d$ cat cuda.conf 
/usr/local/cuda/targets/x86_64-linux/lib

# sudo ldconfig

这样配置的话,当前版本是软链指向的版本,切换起来相当方便。

四、Ubuntu 升级

Ubuntu18.04 版本太旧了,可以直接升级到20.04。

4.1 查看当前ubuntu版本

cat /etc/lsb-release
# DISTRIB_ID=Ubuntu
# DISTRIB_RELEASE=18.04
# DISTRIB_CODENAME=bionic
# DISTRIB_DESCRIPTION="Ubuntu 18.04.6 LTS"

备份自己的数据。

4.2 更新ubuntu18.04所有软件源和库

sudo apt upgrade
sudo apt dist-upgrade
sudo apt full-upgrade
sudo apt update

查看安装的第三方软件,只有全部更新成功后方可升级系统

sudo apt list --upgradable

如果升级不了,先卸载减少升级的麻烦。

4.3 下载系统更新管理器

sudo apt install update-manager

检查更新

# 这个命令只是检查,不会真的更新
sudo do-release-upgrade -c

4.4 执行更新

# 需要20分钟
# 依赖python和python3,所以它们要弄好,还原成原装系统的版本,比如把ubuntu18.04的默认python恢复成python3.6
sudo do-release-upgrade

执行下面命令,检查更新是否成功

cat /etc/lsb-release

五、安装PaddlePaddle

安装PaddlePaddle,并运行下面的命令检查安装:

paddle.utils.run_check()

8. parl有可能会报不能用GPU版本,其实没问题。请看issue

六、疑难问题

显卡驱动安装不了怎么办?

桌面系统如:XServer,KDM,lightdm可能会导致最新的显卡驱动安装失败,可以通过下面两个日志定位

vim /var/log/cuda-installer.log
vim /var/log/nvidia-installer.log

如果发生上述情况,请切换到Ubuntu18.04的命令行,执行 sh cuda_11.7.0_515.43.04_linux.run 即可。

pytorch安装总是安装CPU版本,即使强制写了cuxx也不行,有多种原因的解决办法

  1. 如果是conda安装方式,先conda uninstall pytorch-mutex再conda安装pytorch

2. 是因为清华源配置问题。解决方法是先安装好环境,最后再安装GPU版本的PyTorch。

3. 还有一种简单的办法就是不用清华源(不一定有效)

安装xformers会更新torch版本

xformers对在小显存上训练模型尤为重要,但是安装xformers会更新当前环境的torch版本,这不能接受。解决方案是本地编译。编译过程中遇到的问题有:

  1. ninja包没有安装

2. 设置环境变量MAX_JOBS的值(调低)

docker怎么配置代理?

越来越多的机器学习算法依赖docker镜像快速部署,以下链接详细讲解了如何配置docker的proxy。