标签 Ubuntu 下的文章

本文为配置Ubuntu 20.04版本方法,其他版本可能有差异。

配置代理

配置代理而非换源的好处:可以获取到官方服务器最新的版本,镜像服务器可能存在版本更新不及时,证书错误等一系列问题。到时候出问题头都大了。
  • 命令行

编辑文件

sudo nano /etc/profile.d/proxy.sh

写入内容

# set proxy config via profie.d - should apply for all users
export http_proxy="http://127.0.0.1:7890/"
export https_proxy="http://127.0.0.1:7890/"
#export ftp_proxy="http://127.0.0.1:7890/"
export no_proxy="127.0.0.1,localhost"
# For curl
export HTTP_PROXY="http://127.0.0.1:7890/"
export HTTPS_PROXY="http://127.0.0.1:7890/"
#export FTP_PROXY="http://127.0.0.1:7890/"
export NO_PROXY="127.0.0.1,localhost"

设置权限并运行

sudo chmod +x  /etc/profile.d/proxy.sh
source /etc/profile.d/proxy.sh

测试打印

env | grep -i proxy

4096340000.jpg

  • apt包管理器

编辑文件

sudo nano /etc/apt/apt.conf.d/80proxy

写入内容

Acquire::http::proxy "http://127.0.0.1:7890/";
Acquire::https::proxy "http://127.0.0.1:7890/";
#Acquire::ftp::proxy "ftp://127.0.0.1:7890/";

#将127.0.0.1替换为代理服务器的正确IP地址,如果需要身份验证,请设置如下:
#Acquire::http::proxy "http://<username>:<password>@<proxy>:<port>/";
#Acquire::https::proxy "https://<username>:<password>@<proxy>:<port>/";
#Acquire::ftp::proxy "ftp://<username>:<password>@<proxy>:<port>/";
  • conda环境

执行

conda config --set proxy_servers.http http://127.0.0.1:7890
conda config --set proxy_servers.https http://127.0.0.1:7890

使用LVM管理磁盘

优点:可以动态管理磁盘大小,将多块不同硬盘合成为一个连续分区,避免了考虑逻辑卷在硬盘上的位置。
缺点:管理比较麻烦,不能在Windows上访问(包括使用DiskGenius等管理软件)。
  • 调整磁盘大小

使用df -h命令查看信息
3257334219.jpg
可见lvm管理的分区/dev/mapper/ubuntu--vg-ubuntu--lv
使用vgs命令查看信息

root@wyyinspiron:/home/wyy# vgs
    /dev/sdb: open failed: No medium found
    /dev/sdb: open failed: No medium found
    VG        #PV #LV #SN Attr   VSize    VFree 
    ubuntu-vg   1   1   0 wz--n- <109.79g 54.89g

使用vgdisplay命令查看具体信息

root@wyyinspiron:/home/wyy# vgdisplay
    /dev/sdb: open failed: No medium found
    /dev/sdb: open failed: No medium found
    --- Volume group ---
    VG Name               ubuntu-vg
    System ID             
    Format                lvm2
    Metadata Areas        1
    Metadata Sequence No  2
    VG Access             read/write
    VG Status             resizable
    MAX LV                0
    Cur LV                1
    Open LV               1
    Max PV                0
    Cur PV                1
    Act PV                1
    VG Size               <109.79 GiB
    PE Size               4.00 MiB
    Total PE              28105
    Alloc PE / Size       14052 / 54.89 GiB
    Free  PE / Size       14053 / 54.89 GiB
    VG UUID               fhqIse-SP9k-CTgd-oPgw-c1Q5-1JUe-dGp5es

可见当前盘上还有54.89g空间可以分配。
使用lvextend命令对/dev/mapper/ubuntu--vg-ubuntu--lv进行操作,如增加40G。

lvextend -L +40G /dev/mapper/ubuntu--vg-ubuntu--lv

root@wyyinspiron:/home/wyy# lvextend -L +40G /dev/mapper/ubuntu--vg-ubuntu--lv
    /dev/sdb: open failed: No medium found
    /dev/sdb: open failed: No medium found
    Size of logical volume ubuntu-vg/ubuntu-lv changed from 54.89 GiB (14052 extents) to 94.89 GiB (24292 extents).
    Logical volume ubuntu-vg/ubuntu-lv successfully resized.

使用resize2fs命令实行修改

resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv

root@wyyinspiron:/home/wyy# resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
    resize2fs 1.45.5 (07-Jan-2020)
    Filesystem at /dev/mapper/ubuntu--vg-ubuntu--lv is mounted on /; on-line resizing required
    old_desc_blocks = 7, new_desc_blocks = 12
    The filesystem on /dev/mapper/ubuntu--vg-ubuntu--lv is now 24875008 (4k) blocks long.

再次运行df -h,可见该文件系统容量已扩大。

参考链接:Ubuntu LVM分区扩容:轻松实现磁盘空间扩展,告别空间不足烦恼

前言

一直想本地运行Deepseek等大模型,但苦于主机用的是传统“神卡”rx580,Rocm什么的不支持,跑不起来。于是在万能的某宝找到了这款Tesla P4显卡,400不到的价格配上8G显存,感觉还不错。而且处于Ollama支持的CUDA版本之内。唯一的缺点就是这卡是被动散热,没有风扇。需要自己买风扇来搭配。用的是旧整机,cpu和主板属于50包邮都不值的水平。但跑AI主要靠显卡,内存稍微大点也就够用了。
4077134945.webp

安装

  • 安装前说明

安装时本人参考的说明已经过时,结果遇到了错误,最新版的驱动12.9已经支持P4了。尽信书则不如无书,请根据实际版本来合理选择版本。

  1. 系统

本人使用了Ubuntu 20.04 LTS server作系统,原因是找到了这个系统现成的教程,搭建环境不会那么复杂。(理论上22.04,24.04也能跑,CUDA Tool Kit现在更新了这两个版本,但我没试)

  1. 安装显卡驱动

正常安装后运行lspci | grep -i nvidia,会出现显卡名称如下:
3309178401.jpg
检查可用的驱动ubuntu-drivers devices,可见
1318857945.jpg
这里没有使用sudo ubuntu-drivers autoinstall自动安装驱动,是因为自动安装的驱动可能在后面安装CUDA时出现兼容性问题,而是使用了nvidia-driver-470版本(nvidia-driver-470-server、nvidia-driver-575版本应该也行)。运行sudo apt install nvidia-driver-470,安装完成后重启电脑,再次运行nvidia-smi可以看到显卡信息。注意此时显示的CUDA Version是最高可安装的版本,还未安装CUDA。
551544298.jpg

3.安装 CUDA
访问CUDA Toolkit Downloads,依次选择Linux>x86_64>Ubuntu>20.04>deb_local,网站会自动生成安装步骤。按照此步骤安装即可。
306141839.jpg
对于Driver Installer的选择,传统闭源版本性能更高,因此选择后者进行安装。
1354980924.jpg
理论上安装后输入nvcc -V,会输出CUDA版本,但本人此时运行后提示"
Command 'nvcc' not found"。经查找后,应该是程序没有加入PATH。因此cd /usr/local/cuda/bin进入文件夹,ls后存在nvcc文件,直接将cuda路径加入系统路径即可。
编辑文件:

nano ~/.bashrc

在末尾添加以下内容:

#添加CUDA
export LD_LIBRARY_PATH=/usr/local/cuda/lib
export PATH=$PATH:/usr/local/cuda/bin

更新配置文件:

source ~/.bashrc

再次运行nvcc -V,输出CUDA版本,即为安装成功。
680558350.jpg

  1. 安装cuDNN

访问cuDNN Archive,选择Download cuDNN v8.9.7 (December 5th, 2023), for CUDA 12.x,下载Local Installer for Ubuntu20.04 x86_64 (Deb)。下载时要求注册nvidia开发者账号。按照要求注册即可。
3412043289.jpg
将文件传入电脑,运行

sudo dpkg -i cudnn-local-repo-ubuntu2004-8.9.7.29_1.0-1_amd64.deb

根据提示运行

sudo cp /var/cudnn-local-repo-ubuntu2004-8.9.7.29/cudnn-local-30472A84-keyring.gpg /usr/share/keyrings/

来安装key。可用性将在安装Pytorch后验证。

  1. 安装Ollama

到Ollama官网Download Ollama,选择Linux后出现自动安装脚本。运行

curl -fsSL https://ollama.com/install.sh | sh

来安装。安装后会能够自动检测显卡。Ollama使用很简单,在此不过多赘述。

  1. 安装Anaconda和Pytorch

先下载安装脚本:

wget https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-x86_64.sh

然后赋予可执行权限并执行:

chmod +x Anaconda3-2024.10-1-Linux-x86_64.sh
sh Anaconda3-2024.10-1-Linux-x86_64.sh

按照提示完成安装。
安装时注意安装位置。安装完成后执行conda。若出现conda: command not found,请同样编辑.bashrc文件

nano ~/.bashrc

在末尾添加以下内容:

#替换{path}为自己的安装位置
export PATH="{path}/anaconda3/bin:$PATH"

更新配置文件:

source ~/.bashrc

安装完成后,创建一个pytorch环境,并激活

conda create --name pytorch python=3.10 conda activate pytorch

由于Pytorch官网去除了conda支持,本文参考另一篇文章进行安装。执行以下命令完成PyTorch环境部署

conda install pytorch torchvision torchaudio pytorch-cuda=12.4 -c pytorch -c nvidia

完成后,运行python进入shell。

>>> import torch
>>> torch.cuda.is_available() #检查cuda是否可用
>>> torch.cuda.get_device_name(0) #查看设备名称
>>> torch.cuda.get_device_properties(0).total_memory #查看显存大小
>>> torch.version.cuda #查看cuda版本
>>> torch.backends.cudnn.is_available() # 检查cudnn是否可用
>>> torch.backends.cudnn.version() # 查看cudnn版本

参考链接