一、离线环境搭建
(一)、安装NVIDIA显卡驱动
- 查看操作系统
uname -a
cat /etc/redhat-release
- 查看nvidia显卡相关信息
lspci -nn | grep -i nvidia
- 根据nvidia显卡相关信息下载对应的nvidia驱动
- eg: 显卡型号是[A100 SXM4 40GB]
- 按下图所示选择驱动下载
- eg: 显卡型号是[A100 SXM4 40GB]
-
- 安装GCC、kernal组件、dkms等(这部分在环境中已安装,故没有写出安装步骤,未安装同学自行查询安装)
- 注意:查看安装nvidia驱动需要的依赖包kernel组件版本是否一致,没安装则需要安装
- rpm -qa :列出所有的已经安装在本机 Linux 系统上面的所有软件名,用grep +软件名筛选所需软件是否安装 (RPM 全名是“RedHat Package Manager ”。)
- 查看系统中所有的kernel版本
- 安装GCC、kernal组件、dkms等(这部分在环境中已安装,故没有写出安装步骤,未安装同学自行查询安装)
rpm -qa|grep kernel
- 安装nvidia驱动
# chmod -x 给文件执行权限
chmod -x ./NVIDIA-Linux-x86_64-515.105.01.run
# 安装
bash ./NVIDIA-Linux-x86_64-515.105.01.run
# 检查是否安装成功 - 动态显示显卡使用信息,每2秒刷新
nvidia-smi -l 2
watch -n 2 nvidia-smi
(二)、安装nvidia cuda toolkit组件
- 查看nvidia驱动和nvidia cuda toolkit组件的对应关系
-
- 相关查看docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html
- 下载nvidia cuda toolkit组件
- 相关查看developer.nvidia.cn/cuda-toolkit-archive
- 在线下载
wget developer.download.nvidia.com/compute/cuda/11.7.0/local_installers/cuda_11.7.0_515.43.04_linux.run
-
- 因为我们是离线安装,所以需要在本地下载后上传到远程机上
- 安装nvidia cuda toolkit组件
- 获取权限: chmod a+x cuda运行文件
- 安装CUDA: bash cuda运行文件
- 过程: 输入accept后回车,选择安装的内容,向下移动选择install,回车进行安装
- 配置nvidia cuda toolkit组件环境变量
# 编辑环境变量文件
vi ~/.bashrc
# 增加环境变量
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
# 使环境变量生效
source ~/.bashrc
# 查看是否安装成功
nvcc -V
(三)、安装Anaconda/Miniconda
- 在线下载
wget mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2023.07-0-Linux-x86_64.sh
- 因为我们是离线安装,所以需要在本地下载后上传到远程机上
- 安装Anaconda
bash Anaconda3-2020.02-Linux-x86_64.sh
- 配置conda环境变量
vim /etc/profile
# 添加环境变量
export ANACONDA_PATH=~/anaconda3
export PATH=$PATH:$ANACONDA_PATH/bin
# 使环境变量生效
source /etc/profile
# 查看是否安装成功
which anaconda
conda --version
conda info -e
python
# 查看虚拟环境
conda env list
# 激活环境
conda activate env_name
(四)、安装cudnn
- 下载网址 (注意:nvidia驱动和cudnn的对应)
- 相关参考developer.nvidia.com/rdp/cudnn-download
-
因为我们是离线安装,所以需要在本地下载后上传到远程机上\
- 安装cudnn
# 解压
tar -xf cudnn对应版本文件.tar.xz
# 进目录
cd cudnn解压后文件夹/
# 复制
cp ./include/* /usr/local/cuda-11.7/include/
cp ./lib/libcudnn* /usr/local/cuda-11.7/lib64/
# 授权
chmod a+r /usr/local/cuda-11.7/include/* /usr/local/cuda-11.7/lib64/libcudnn*
# 查看是否安装成功
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
(五)、单独安装pytorch
- pytorch和cuda对应的版本
- 相关参考pytorch.org/get-started/previous-versions/
- eg: cuda 11.7 pytorch 1.13.1、2.0.0、2.0.1
- pytorch和python对应的版本
- 相关参考github.com/pytorch/vision
- eg: pytorch 1.13.1 python >=3.7.2, <=3.10
- pytorch和torchvision对应的版本
- 相关参考github.com/pytorch/vision
- eg: pytorch 1.13.1 python >=3.7.2, <=3.10 torchvision 0.14.1 torchaudio==0.13.1
- 如果是在线安装,一般用pip install和conda install
- pip install是python自带的包管理工具,可以用来安装python包,但不能处理包之间的依赖关系,可能会导致依赖关系冲突或版本不兼容等问题
- conda install是Anaconda提供的包管理工具,它不仅可以安装python包,还可以管理非python软件包,并且可以自动解决依赖关系,避免了依赖问题
conda install pytorch==1.13.1 torchvision==0.14.1 pytorch-cuda=11.7 -c pytorch -c nvidia
pip install torch==1.13.1+cu117 torchvision==0.14.1+cu117 torchaudio==0.13.1 --extra-index-url download.pytorch.org/whl/cu117
- 因为我们是离线安装,所以需要在本地下载后上传到远程机上
- 下载网址(pytorch的源网站)相关参考download.pytorch.org/whl/torch_stable.html
- 依赖包的下载
- 下载网址(pytorch的源网站)相关参考download.pytorch.org/whl/torch_stable.html
typing_extensions-4.4.0-py3-none-any.whl
cu117/torch-1.13.1%2Bcu117-cp37-cp37m-linux_x86_64.whl
cu117/torchaudio-0.13.1%2Bcu117-cp37-cp37m-linux_x86_64.whl
cu117/torchvision-0.14.1%2Bcu117-cp37-cp37m-linux_x86_64.whl
-
- pytorch的清华网站: mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/linux-64/
- 下载的.whl文件,上传到linux服务器之后,直接在它所在的目录用命令行输入
pip install torch-1.13.1+cu117-cp37-cp37m-linux_x86_64.whl
pip install torchaudio-0.13.1+cu117-cp37-cp37m-linux_x86_64.whl
pip install torchvision-0.14.1+cu117-cp37-cp37m-linux_x86_64.whl
- 检查是否安装成功
python -c "import torch; print(torch.cuda.is_availabel())"
import torch
print(torch.__version__)
print(torch.version.cuda)
print(torch.backends.cudnn.version())
- 报错
python -c "import torch; print(torch._C._cuda_getDeviceCount())"
# 报错信息
/root/anaconda3/lib/python3.7/site-packages/torch/cuda/__init__.py:83: UserWarning: CUDA initialization: Unexpected error from cudaGetDeviceCount().
-
- 原因:需要安装与驱动版本对应的nvidia-fabricmanager服务
driver_version=515.105.01
wget mirrors.cloud.aliyuncs.com/nvidia-cuda/rhel8/x86_64/nvidia-fabric-manager-${driver_version}-1.x86_64.rpm
rpm -ivh nvidia-fabric-manager-${driver_version}-1.x86_64.rpm
systemctl enable nvidia-fabricmanager
systemctl start nvidia-fabricmanager
systemctl status nvidia-fabricmanager
二、训练前准备
参考llama2大模型训练实战连载文《Chinese LLaMA2预训练和指令精调实战-训练前准备》