fairseq-0.12.2多机训练环境搭建
- 简单写了一下,如有需要后续再详细更新…
需要保证gcc版本、CUDA版本、cuDNN版本、NCCL版本、Python版本、PyTorch版本、fairseq版本的一致性
- fairseq版本和Python与Python版本的一致性
查看fairseq-0.12.2 README.md:
PyTorch version >= 1.5.0
Python version >= 3.6
For training new models, you’ll also need an NVIDIA GPU and NCCL
由于大模型的普及,现在一般选择Python版本为3.9
- 查看PyTorch版本
查看PyTorch版本对应网址:https://pytorch.org/get-started/previous-versions/
以PyTorch 1.13.1为例:
网站上Linux and Windows显示:
这里选择CUDA 11.7的版本
第一步安装gcc
fairseq-0.12.2要求支持c++17,gcc>7.3以上,这里以非root用户下安装gcc-8.5.0举例。
- 查看gcc版本
gcc --version
原始云服务通常会显示如下情况(gcc版本为4.8.5):
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
Copyright © 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- 下载gcc-8.5.0
gcc镜像地址:https://mirrors.aliyun.com/gnu/gcc/
wget https://mirrors.aliyun.com/gnu/gcc/gcc-8.5.0/gcc-8.5.0.tar.gz?spm=a2c6h.25603864.0.0.3a156de2FgRJMV
- 安装
tar zxvf gcc-8.5.0.tar.gz
cd gcc-8.5.0/
./contrib/download_prerequisites
#下载依赖,等待一段时间,显示All prerequisites downloaded successfully.表示成功
./configure --prefix=/data/fairseq/gcc-8.5.0 -enable-threads=posix -disable-checking -disable-multilib -enable-languages=c,c++
#生成Makefile文件,其中--prefix为gcc安装的路径需要更改
make -j20 #开始编译,-j为线程数,一般可设置为20,编译时间很长
make install
- 设置环境变量
添加到~/.bashrc中
export GCC=/data/fairseq/gcc-8.5.0
export PATH=${GCC}/bin:$PATH
export LD_LIBRARY_PATH=${GCC}/lib64:$LD_LIBRARY_PATH
export LIBRARY_PATH=${GCC}/lib:$LIBRARY_PATH
export C_INCLUDE_PATH=${GCC}/include:$C_INCLUDE_PATH
export CPLUS_INCLUDE_PATH=${GCC}/include:$CPLUS_INCLUDE_PATH
注意:GCC=/data/fairseq/gcc-8.5.0
为gcc安装目录需要修改
使环境变量生效:
source ~/.bashrc
- 验证gcc版本
gcc (GCC) 8.5.0
Copyright © 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
第二步安装cuda
非root用户安装CUDA,这里以安装CUDA 11.7为例
- 查看NVIDIA显卡驱动版本
安装cuda版本不能高过驱动版本
nvidia-smi
显示:
其中CUDA Version后面的为驱动最高支持的CUDA版本,这里为12.0,因此可以选择CUDA版本低于12.0的,这里我们根据PyTorch 1.13.1的要求选择CUDA 11.7
- 下载CUDA
各版本下载地址:https://developer.nvidia.com/cuda-toolkit-archive/
下载11.7.1版本:
wget https://developer.download.nvidia.com/compute/cuda/11.7.1/local_installers/cuda_11.7.1_515.65.01_linux.run
- 安装CUDA
非root用户在安装CUDA时有很多注意事项,首先:
sh cuda_11.7.1_515.65.01_linux.run
然后accept,在这个安装程序注意:
- [X]Driver
[X] 515.65.01
这两必须取消X,这个是NVIDIA 显卡驱动只能由root安装- 除[X] CUDA Toolkit 11.7外,其余都可以取消,这是CUDA计算库
- 修改CUDA安装路径:可以通过选择Options再选择Toolkit Options或者CUDA Toolkit 11.7按A键,然后选择Change Toolkit Install Path,输入新的CUDA安装路径,例如:/data/fairseq/cuda-11.7
- 然后取消掉Toolkit Options下的所有选项
- 修改CUDA lib库的路径:选择Options下的Library install path (Blank for system default),输入新的lib安装路径,注意和CUDA安装路径一致,例如:/data/fairseq/cuda-11.7
- 最后选择Install安装
- 设置环境变量
添加到~/.bashrc中
export PATH=/data/fairseq/cuda-11.7/bin:$PATH
export LD_LIBRARY_PATH=/data/fairseq/cuda-11.7/lib64:$LD_LIBRARY_PATH
或者将/data/fairseq/cuda-11.7/bin加入到PATH中
将/data/fairseq/cuda-11.7/lib64加入到LD_LIBRARY_PATH中
使环境变量生效:
source ~/.bashrc
- 验证是否安装成功
nvcc --version
显示
nvcc: NVIDIA ® Cuda compiler driver
Copyright © 2005-2022 NVIDIA Corporation
Built on Wed_Jun__8_16:49:14_PDT_2022
Cuda compilation tools, release 11.7, V11.7.99
Build cuda_11.7.r11.7/compiler.31442593_0
第三步安装cuDNN
cuDNN只与CUDA版本有关
- 下载cuDNN:
官方地址:https://developer.nvidia.cn/rdp/cudnn-archive
选择CUDA 11.x对应的版本8.9.4
- 安装cuDNN
tar xvf cudnn-linux-x86_64-8.9.4.25_cuda11-archive.tar.xz
cd cudnn-linux-x86_64-8.9.4.25_cuda11-archive/
#将include和lib分别放入到CUDA对应的include和lib64下即可生效
cp include/cudnn* /data/fairseq/cuda-11.7/include/
cp lib/libcudnn* /data/fairseq/cuda-11.7/lib64/
第四步安装NCCL
NCCL只与CUDA版本有关
- 下载NCCL:
官方地址:https://developer.nvidia.com/nccl/nccl-legacy-downloads
选择CUDA 11.7对应的版本2.14.3
- 安装NCCL
tar xvf nccl_2.14.3-1+cuda11.7_x86_64.txz
cd nccl_2.14.3-1+cuda11.7_x86_64/
cp include/nccl* /data/fairseq/cuda-11.7/include/
cp -r lib/* /data/fairseq/cuda-11.7/lib64/
第五步安装Python
- 安装Python依赖
- 需要root安装:
libffi-devel 解决No module named ‘_ctypes’
readline-devel 解决在Python命令行中支持上下左右 空格 退格等操作
centos
yum -y install libffi-devel readline-devel zlib zlib-devel sqlite-devel
ubuntu
apt-get install libffi-dev libreadline-dev zlib1g zlib1g-dev libsqlite3-dev
- 非root可以安装:
openssl(必须,使用pip安装包时需要):
- 下载openssl:官网:https://www.openssl.org/source/
- wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz --no-check-certificate
- tar zxvf openssl-1.1.1w.tar.gz
- cd openssl-1.1.1w/
- ./config --prefix=/data/fairseq/openssl-1.1.1w 注意:–prefix为安装路径
- make -j20
- make install
- 将/data/fairseq/openssl-1.1.1w/bin加入PATH中
- 将/data/fairseq/openssl-1.1.1w/lib加入LD_LIBRARY_PATH中,注意可能会引发与系统openssl冲突,可以不加
- openssl验证成功
- 下载Python
国内镜像地址:https://registry.npmmirror.com/binary.html?path=python/
我们选择3.9的最新版本3.9.18
wget https://cdn.npmmirror.com/binaries/python/3.9.18/Python-3.9.18.tgz
- 安装Python
tar xvf Python-3.9.18.tgz
cd Python-3.9.18/
# --prefix为安装路径, --with-openssl为前面安装的openssl的路径
./configure --prefix=/data/fairseq/Python-3.9.18/ --with-openssl=/data/fairseq/openssl-1.1.1w --enable-shared
make -j20
make install
- 设置环境变量
添加到~/.bashrc中
export PATH=/data/fairseq/Python-3.9.18/bin:$PATH
export LD_LIBRARY_PATH=/data/fairseq/Python-3.9.18/lib:$LD_LIBRARY_PATH
或者将/data/fairseq/Python-3.9.18/bin加入到PATH中
将/data/fairseq/Python-3.9.18/lib加入到LD_LIBRARY_PATH中
- 使得python和pip命令指向新安装的Python,在~/.bashrc中添加:
alias python="/data/fairseq/Python-3.9.18/bin/python3"
alias pip="/data/fairseq/Python-3.9.18/bin/pip3"
使环境变量生效:
source ~/.bashrc
- 验证是否安装成功
python3
显示
Python 3.9.18 (main, Nov 1 2023, 14:19:00)
[GCC 8.5.0] on linux
Type “help”, “copyright”, “credits” or “license” for more information.
>>>
第六步安装PyTorch
- 下载PyTorch
下载地址:https://download.pytorch.org/whl/torch_stable.html
选择CUDA 11.7的torch 1.13.1版本
wget https://download.pytorch.org/whl/cu117/torch-1.13.1%2Bcu117-cp39-cp39-linux_x86_64.whl
- 安装Pytorch
# -i 为国内Python镜像源地址,通常使用清华镜像源https://pypi.tuna.tsinghua.edu.cn/simple
# 升级pip
pip3 install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple
pip3 install torch-1.13.1+cu117-cp39-cp39-linux_x86_64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple
第七步安装fairseq
- 安装依赖库
pip3 install ****** -i https://pypi.tuna.tsinghua.edu.cn/simple
- numpy
- omegaconf
- hydra-core
- sacrebleu
- cython
- bitarray
- 安装fairseq
python3 setup.py build_ext --inplace