GPU安装指南:英伟达A800加速卡常见软件包安装命令

news/2024/7/19 12:08:43 标签: 深度学习, 人工智能, 机器学习, transformer, python

GCC 升级

yum update -y
yum install -y centos-release-scl
yum install -y devtoolset-9


source /opt/rh/devtoolset-9/enable

gcc -v
chmod +x NVIDIA-Linux-x86_64-525.105.17.run
sh NVIDIA-Linux-x86_64-525.105.17.run -no-x-check

nvidia-smi

GPUDirect 通信矩阵:

> nvidia-smi topo --matrix
        GPU0    GPU1    GPU2    GPU3    GPU4    GPU5    GPU6    GPU7    NIC0    NIC1    NIC2    NIC3    CPU Affinity    NUMA Affinity
GPU0     X      NV8     NV8     NV8     NV8     NV8     NV8     NV8     NODE    NODE    SYS     SYS     0-31,64-95      0
GPU1    NV8      X      NV8     NV8     NV8     NV8     NV8     NV8     PIX     NODE    SYS     SYS     0-31,64-95      0
GPU2    NV8     NV8      X      NV8     NV8     NV8     NV8     NV8     NODE    NODE    SYS     SYS     0-31,64-95      0
GPU3    NV8     NV8     NV8      X      NV8     NV8     NV8     NV8     NODE    PIX     SYS     SYS     0-31,64-95      0
GPU4    NV8     NV8     NV8     NV8      X      NV8     NV8     NV8     SYS     SYS     NODE    NODE    32-63,96-127    1
GPU5    NV8     NV8     NV8     NV8     NV8      X      NV8     NV8     SYS     SYS     NODE    NODE    32-63,96-127    1
GPU6    NV8     NV8     NV8     NV8     NV8     NV8      X      NV8     SYS     SYS     NODE    NODE    32-63,96-127    1
GPU7    NV8     NV8     NV8     NV8     NV8     NV8     NV8      X      SYS     SYS     PIX     PIX     32-63,96-127    1
NIC0    NODE    PIX     NODE    NODE    SYS     SYS     SYS     SYS      X      NODE    SYS     SYS
NIC1    NODE    NODE    NODE    PIX     SYS     SYS     SYS     SYS     NODE     X      SYS     SYS
NIC2    SYS     SYS     SYS     SYS     NODE    NODE    NODE    PIX     SYS     SYS      X      PIX
NIC3    SYS     SYS     SYS     SYS     NODE    NODE    NODE    PIX     SYS     SYS     PIX      X

Legend:

  X    = Self
  SYS  = Connection traversing PCIe as well as the SMP interconnect between NUMA nodes (e.g., QPI/UPI)
  NODE = Connection traversing PCIe as well as the interconnect between PCIe Host Bridges within a NUMA node
  PHB  = Connection traversing PCIe as well as a PCIe Host Bridge (typically the CPU)
  PXB  = Connection traversing multiple PCIe bridges (without traversing the PCIe Host Bridge)
  PIX  = Connection traversing at most a single PCIe bridge
  NV#  = Connection traversing a bonded set of # NVLinks

NIC Legend:

  NIC0: mlx5_0
  NIC1: mlx5_1
  NIC2: mlx5_2
  NIC3: mlx5_3

开启持久模式:

如果未开启持久模式(Persistence Mode),每次用nvidia-smi查询显卡资源的时候,会等到较长时间才有结果。

nvidia-smi -pm ENABLED

# 查询 Persistence Mode 是否开启
nvidia-smi -a
nvidia-smi

技术提升

技术要学会分享、交流,不建议闭门造车。一个人走的很快、一堆人可以走的更远。

完整代码、数据、技术交流提升, 均可加入知识星球交流群获取,群友已超过2000人,添加时切记的备注方式为:来源+兴趣方向,方便找到志同道合的朋友。

方式①、添加微信号:pythoner666,备注:来自 CSDN 技术交流
方式②、微信搜索公众号:Python学习与数据挖掘,后台回复:资料

异常解决方案

  • 问题:Centos服务器重启后出现显卡驱动无法使用的情况:NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver.
  • 解决方案
#  安装dkms修护驱动
> sudo yum install dkms

# 查看显卡驱动版本
> ls /usr/src
debug
kernels
nvidia-525.105.17

# 重新安装对应nvidia的驱动模块
> dkms install -m nvidia -v 525.105.17

NVIDIA-Fabric Manager 安装

NVIDIA-Fabric Manager服务可以使多A100显卡间通过NVSwitch互联。

要通过NVSwitch互联必须安装与GPU驱动版本对应的NVIDIA-Fabric Manager软件包,否则将无法正常使用实例。

参考:https://www.volcengine.com/docs/6419/73634

wget -c https://developer.download.nvidia.cn/compute/cuda/repos/rhel7/x86_64/nvidia-fabric-manager-525.105.17-1.x86_64.rpm
rpm -ivh nvidia-fabric-manager-525.105.17-1.x86_64.rpm
wget -c https://developer.download.nvidia.com/compute/cuda/repos/fedora37/x86_64/nvidia-fabric-manager-devel-525.105.17-1.x86_64.rpm
rpm -ivh nvidia-fabric-manager-devel-525.105.17-1.x86_64.rpm

启动NVIDIA-Fabric Manager:

# 启动Fabric Manager服务,实现NVSwitch互联
sudo systemctl restart nvidia-fabricmanager

# 查看Fabric Manager服务是否正常启动,回显active(running)表示启动成功。
sudo systemctl status nvidia-fabricmanager

# 配置Fabric Manager服务随实例开机自启动。
sudo systemctl enable nvidia-fabricmanager

CUDA 安装

mkdir -p /home/local/cuda-11.7
sudo ln -s /home/local/cuda-11.7 /usr/local/cuda-11.7

wget https://developer.download.nvidia.com/compute/cuda/11.7.0/local_installers/cuda_11.7.0_515.43.04_linux.run
sudo sh cuda_11.7.0_515.43.04_linux.run

# 配置环境变量
export PATH="/usr/local/cuda-11.7/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-11.7/lib64:$LD_LIBRARY_PATH"

nvcc -V

openssl 升级

yum install -y zlib-devel.x86_64
mkdir -p /home/local/openssl
ln -s /home/local/openssl /usr/local/openssl


tar -zxvf openssl-1.1.1t.tar.gz
cd openssl-1.1.1t/
./config --prefix=/usr/local/openssl shared zlib
make depend
sudo make 
sudo make install
sudo ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl

echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
ldconfig -v

ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib/libssl.so.1.1
ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib/libcrypto.so.1.1

Python3.10 安装

yum install -y libffi-devel bzip2-devel
yum install sqlite-devel -y
mkdir -p /home/local/py310
ln -s /home/local/py310 /usr/local/py310 

tar -xvf Python-3.10.10.tgz

./configure --prefix=/usr/local/py310 --with-openssl=/usr/local/openssl --with-openssl-rpath=no
make
sudo make install

sudo ln -s /usr/local/py310/bin/python3.10 /usr/bin/python3.10
sudo ln -s /usr/local/py310/bin/pip3.10 /usr/bin/pip3.10
# sudo ln -s /usr/local/py310/bin/pip3.10 /usr/bin/pip


pip3.10  install virtualenv -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn 
sudo ln -s /usr/local/py310/bin/virtualenv /usr/bin/virtualenv


mkdir -p /home/guodong.li/virtual-venv
cd /home/guodong.li/virtual-venv
virtualenv -p /usr/bin/python3.10 llama-venv-py310-cu117
source /home/guodong.li/virtual-venv/llama-venv-py310-cu117/bin/activate

配置pip源:

mkdir ~/.pip
cd ~/.pip
vim ~/.pip/pip.conf

[global] 
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host = https://pypi.tuna.tsinghua.edu.cn

miniconda安装

文档:https://docs.conda.io/en/latest/miniconda.html#linux-installers

安装:

wget -c https://repo.anaconda.com/miniconda/Miniconda3-py310_23.3.1-0-Linux-x86_64.sh
bash Miniconda3-py310_23.3.1-0-Linux-x86_64.sh

配置清华源:

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main

安装包:

# 最常见的源是conda-forge,一个开源的代码库,许多软件通过这个源来安装。
conda install nodejs=16.6.1 -c conda-forge

NCCL 安装

tar xvf nccl_2.14.3-1+cuda11.7_x86_64.txz
cd nccl_2.14.3-1+cuda11.7_x86_64/

sudo cp -r include/* /usr/local/cuda-11.7/include/
sudo cp -r lib/* /usr/local/cuda-11.7/lib64/

export LD_LIBRARY_PATH="/usr/local/cuda-11.7/lib64:$LD_LIBRARY_PATH"

cuDNN 安装

tar -xvf cudnn-linux-x86_64-8.8.1.3_cuda11-archive.tar.xz

cd cudnn-linux-x86_64-8.8.1.3_cuda11-archive
sudo cp include/cudnn*.h /usr/local/cuda-11.7/include 
sudo cp -P lib/libcudnn*  /usr/local/cuda-11.7/lib64/
sudo chmod a+r /usr/local/cuda-11.7/include/cudnn*.h /usr/local/cuda-11.7/lib64/libcudnn*

Python 库安装

Pytorch

pip install torch-1.13.1+cu117-cp310-cp310-linux_x86_64.whl
pip install torchvision-0.14.1+cu117-cp310-cp310-linux_x86_64.whl

# pip install torch-scatter torch-sparse torch-cluster torch-geometric
python -c "import torch; print(torch.cuda.is_available())"

Transformers

cd transformers-20230327
git checkout 0041be5
pip install .

Deepspeed…

pip install deepspeed==0.8.0
pip install accelerate
pip install tensorboardX

安装Apex

git clone https://github.com/NVIDIA/apex.git
cd apex
git checkout 22.04-dev
pip install -v --disable-pip-version-check --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./

安装mpi4py

yum -y install openmpi-devel
export CC=/usr/lib64/openmpi/bin/mpicc

pip install mpi4py

pdsh安装

tar xf pdsh-2.31.tar.gz 
cd /data/nfs/llm/pkg/pdsh-pdsh-2.31

./configure \
--prefix=/home/local/pdsh \
--with-ssh \
--with-machines=/home/local/pdsh/machines \
--with-dshgroups=/home/local/pdsh/group \
--with-rcmd-rank-list=ssh \
--with-exec && \
make && \
make install


ln -s /home/local/pdsh /usr/local/pdsh

ll /usr/local/pdsh/bin/

# 将pdsh的所有命令追加到环境变量中
echo "export PATH=/home/local/pdsh/bin:$PATH" >> /etc/profile
source /etc/profile

pdsh -V

nvidia-docker 安装

wget https://download.docker.com/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
wget https://nvidia.github.io/nvidia-docker/centos7/x86_64/nvidia-docker.repo -O /etc/yum.repos.d/nvidia-docker.repo
yum install -y epel-release

# 安装docker
yum install -y docker-ce nvidia-docker2
systemctl enable docker

# 重启docker
sudo systemctl restart docker

docker info

修改Docker配置(/etc/docker/daemon.json):

{
    "data-root": "/home/docker",
    "runtimes": {
        "nvidia": {
            "path": "nvidia-container-runtime",
            "runtimeArgs": []
        }
    }
}

重启docker服务:

systemctl daemon-reload
systemctl restart docker

关闭 selinux 安全系统:

1. 临时关闭(setenforce 0),系统重启后,恢复启动。
setenforce 0

查看:
getenforce


2. 永久关闭,修改文件 /etc/selinux/config

SELINUX=disabled

保存后,重启 reboot

镜像导入及归档

docker save -o tritonserver.tar runoob/ubuntu:v3

docker load --input tritonserver.tar


http://www.niftyadmin.cn/n/4953509.html

相关文章

机器学习入门的概念

导航 一、 人工智能,机器学习,深度学习和传统学习二、数学基础三、编程语言 如果你刚刚入门机器学习,会接触到了非常多的概念。比如人工智能,机器学习,深度学习,神机网络,强化学习,各…

C++(1)Linux基础知识

经济下行,计算机就业形势严峻,为了勉励自己继续进步,继续学习代码提高核心竞争力。 安装QT Creator 首先,安装QT开发工具QT Creator 参考:2021最新Qt6开发环境(Qt Creator)安装以及卸载记录_q…

Channel是什么?FileChannel类的常用方法

Channel 是一个接口对象,它类似于传统的流对象,但与传统的流对象又有些不同,具体表现如下: • Channel可以异步地执行I/O读写操作。 • Channel的读写操作是双向的,既可以从 Channel中读取数据,又可以写数据到Channel,而流的读写操作通常都是单向的。 • Channel…

每日一题:leetcode1338 3n块披萨

给你一个披萨,它由 3n 块不同大小的部分组成,现在你和你的朋友们需要按照如下规则来分披萨: 你挑选 任意 一块披萨。Alice 将会挑选你所选择的披萨逆时针方向的下一块披萨。Bob 将会挑选你所选择的披萨顺时针方向的下一块披萨。重复上述过程…

第一周晨考自测(1.0)

第一天: 1.变量名的命名规则和规范 变量名命名规则:由字母(大小写),数字,下划线(_),美元符号($)组成 不能以数字开头 不能使用关键字和保留字…

面试之快速学习STL-容器适配器

1. 容器适配器 简单的理解容器适配器,其就是将不适用的序列式容器(包括 vector、deque 和 list)变得适用。 注意:默认使用的基础容器不代表一定只能用它,比如queue可以用deque,list。 如果你希望你的qu…

obtain 和 get 使用时有什么区别

“Obtain” 和 “get” 都可以表示获得或得到某物,但它们在使用上有一些区别: 形式与正式程度:“Obtain” 更常用于正式场合,更形式化的语境中使用,例如法律、商务或学术文档中。它传达了一种更正式、更官方的意味。 “…

(css样式穿透详解)::v-deep的使用

目录 背景 使用: 1、当项目中使用的 css 原生样式 ,需要使用 >>> 深度选择器来修改 外用第三方组件的样式 2、当项目中使用的 css 扩展语言是 less, 需要使用 /deep/ 或者 ::v-deep 深度选择器来修改 外用第三方组件的样式 3、…