[software development] 速通deepin系统cuda+pytorch安装!V20.9亲测有效,23应该也能用
Tofloor
poster avatar
郭紫辰Skyler
deepin
2024-01-16 14:25
Author

对于一个Python数据分析师来说,能够在重装系统时稳定配置出所需环境是极其重要的。拿我举例,我所使用的技术主要依赖于python、anaconda、以及支持cuda的pytorch环境,总之大概就是这一类。

在deepin当中,要以最快速度从零开始配置一个上述环境,实际上也并不难(只需要连续踩坑10天就能摸索出来了o(TωT)o ),这里就给大家介绍一下我摸索出来的方法~ 该方法的优势主要在于,它不仅完美支持cuda+pytorch,而且装有nvcc这个cuda平台变异所需的环境,因此可以轻松支持flash_attention、大语言模型如modelscope、transformers上公开的各类GPT。而且,相对来说nvidia cuda toolkit的安装包、anaconda环境都比较独立,不会与系统内文件混为一团扰乱依赖项。

话不多说,我们直接上步骤。

【1】先给u盘写入系统。

diskutil list

通过上述磁盘列表,判断我的usb所在的盘符为/dev/disk4

diskutil unmountDisk /dev/disk4
sudo dd if=deepin-desktop-community-20.9-amd64.iso of=/dev/disk4 bs=2m

等待时可以打开资源管理器之类,确认磁盘正在写入

安装过程中,我选择的是5.15版本内核。为了后续操作不发生冲突,保险起见,不要集成闭源驱动!!
安装后,优先检查有线网无线网是否都有驱动。如果网卡没有驱动,那还是建议换一个linux原生支持的网卡。还好我的BCM4360网卡是deepin V20.9原生支持的。

【2】为了用GPU加速,需要安装nvidia-cuda-toolkit。

这里我讲一下,我个人的理解是:n卡的计算需要一个驱动,驱动程序提供了一些函数接口。而cuda、pytorch等等实际上是在操作这个驱动程序提供的函数,并不直接操作显卡pcie接口之类的。
不知道这个理解是否准确,但我亲测一个驱动可以同时让pytorch-cuda12.1和我的nvidia-cuda-toolkit-12.3编译出来的程序运行正常。
现在的pytorch最新的pip安装包含有独立的cuda环境版本,所以,系统里安装的驱动、以及对应的nvidia-cuda-toolkit,感觉可以有一些版本号上的差异。nvidia显卡驱动向下兼容,所以版本越高越好。

!!注意!!我们直接下载 nvidia-cuda-toolkit ,这里包含了正确的显卡驱动版本。直接选到你显卡支持的最新版本下载。
请访问这个网址下载 cuda toolkit: https://developer.nvidia.com/cuda-downloads
进入之后,选择Linux - x86_64 - 随便选distro - 随便选版本 - runfile (local)
之所以随便选,因为runfile的下载链接文件都是一样的,这个全部linux都通用。所以deepin也能用,没必要非得用麒麟OS。

先下载对应的run文件。
cd 到下载文件夹
wget https://developer.download.nvidia.com/compute/cuda/12.3.2/local_installers/cuda_12.3.2_545.23.08_linux.run

接下来为了保险,需要禁用nouveau
sudo deepin-editor /etc/modprobe.d/blacklist.conf
或者 sudo nano /..../blacklist.conf sudo vim /..../blacklist.conf都可以,只要文本编辑器都行。
然后将以下内容复制到/etc/modprobe.d/blacklist.conf文件中:
blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off

然后终端执行如下命令:
sudo update-initramfs —u
重启系统,再次进入系统,可能会发现分辨率异常。(不能保证会出现异常,如果你的分辨率异常就说明成功禁用nouveau驱动)

sudo apt update
sudo apt autoremove nvidia

然后,进入ctrl+alt(option)+F2(fn+F2)超级终端进行组装。
sudo service lightdm stop
sudo chmod a+x cuda_12.3.2_545.23.08_linux.run
sudo sh cuda_12.3.2_545.23.08_linux.run
(这一步首次运行后会卡一段时间。安装组件中千万别选NVIDIA-fs,否则会fail。打叉表示选中。)

安装好之后,必须要把PATH、LD_LIBRARY_PATH都添加进系统path中。
sudo nano /etc/ld.so.conf
在文件中添加一行 /usr/local/cuda-12.3/lib64
然后ctrl+x退出,Y,enter。
sudo ldconfig # 必须执行,不然上述修改无效

然后
sudo nano ~/.profile
添加 export PATH=/usr/local/cuda-12.3/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.3/lib64:$LD_LIBRARY_PATH
sudo reboot
这样NVIDIA cuda工具包、以及显卡驱动就装好了。 (部分指令参考了: blog.csdn.net/RKCHEN01/article/details/104826736/ )

【3】安装工作依赖项。

以下只是我的工作依赖项,简单列一下:
(1)应用商店安装搜狗输入法
(2)安装anaconda
从官网下载linux版本安装包后,千万不要用sudo,必须不带su权限。
bash anadonda.sh
记得要同意让anaconda修改各种终端entry!!(一路yes就行)
(3)安装pycharm(或vscode),从应用商店安装即可
(4)安装syncthing
应用商店居然有syncthing,可以在开始菜单找到Syncthing右键设置自启动。
注意记得设置开机自启动Syncthing。

(可选)(5)可尝试安装git[必须是2.35左右的版本,不然根本没法make]和git-lfs。
sudo apt-get install build-essential
sudo apt-get install libcurl4-openssl-dev
sudo apt-get install libexpat1-dev
sudo apt-get install tcl-dev
sudo apt-get install gettext
然后从git-scm下载一个2.35.8的git版本,然后cd进文件夹,
make
make install
就完事了。git-lfs具体教程就不详细讲了,也不难

(6)安装好anaconda,可以用pip安装一些依赖项
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip install pulp python-docx

以及pytorch cuda版本。
pip3 install torch torchvision torchaudio
(对应的命令,请务必去pytorch官网上寻找最新版cuda版pytorch命令!)

pip install adabelief-pytorch

【4】安装modelscope等等
我使用的是通义千问1.8B模型。具体教程如下
https://modelscope.cn/models/qwen/Qwen-1_8B-Chat/summary

pip install transformers==4.32.0 accelerate tiktoken einops scipy transformers_stream_generator==0.0.4 peft deepspeed

git clone --recursive https://github.com/Dao-AILab/flash-attention
cd flash-attention && pip install .

下方安装可选,安装可能比较缓慢。

pip install csrc/layer_norm
pip install csrc/rotary

↑上述clone不下来的话,可以找一个能clone下来的环境,然后把里面的内容打包好上传到机器里面再install。

【5】增加swap,防止爆内存
↓ 以下代码可以增加300GB swap空间。(如果想要128G,可以把count参数改为128M)
dd if=/dev/zero of=/media/infinite-loop/data2disk/swapfile.img bs=1024 count=300M
echo 'your_password' | sudo --stdin mkswap /media/infinite-loop/data2disk/swapfile.img
echo 'your_password' | sudo --stdin swapon /media/infinite-loop/data2disk/swapfile.img
然后,上述指令可以添加到自启动文件中,deepin中推荐采用desktop文件。
一定要记得给.sh文件 chmod +x 增加可执行权限!

总之,我是能够稳定复现这个顺利的cuda全环境安装流程,包括git的安装等等。最后祝deepin程序员能够尝试再优化一波上述流程,比如cuda的run文件能否设为自动一键安装,或者把更新版本的git纳入软件仓库(现在 sudo apt install git-all 安装的是git 20左右的版本,不支持git LFS)~(虽然可能略有一些困难,但梦想总是要有的)

Reply Favorite View the author
All Replies
babyfengfjx
Super Moderator
CQA
2024-01-16 14:58
#1

这是相当的优秀tail

Reply View the author
186******96
deepin
2024-02-14 19:40
#2

实测,V23 禁用 nouveau 重启后,会卡在开屏的界面。。

Reply View the author
186******96
deepin
2024-02-15 17:22
#3
186******96

实测,V23 禁用 nouveau 重启后,会卡在开屏的界面。。

可能要在blacklist.config 加一行

blacklist nvidiafb

不然进入不了超级终端,应该是开源驱动有冲突,会卡在黑屏。

Reply View the author