安装
方便起见,将项目迁移到自己的 git 平台。
环境准备
为了不影响服务器上其他用户,采用源码安装到用户目录下。
GCC
- 下载包:
wget http://ftp.gnu.org/gnu/gcc/gcc-10.2.0/gcc-10.2.0.tar.gz
- 解压:
tar -xzvf gcc-10.2.0.tar.gz gcc-10.2.0
- 依赖安装:
cd gcc-10.2.0 && ./contrib/download_prerequisites
- 创建编译目录:
mkdir gcc-build-10.2.0 && cd gcc-build-10.2.0
- 生成 Makefile 文件:
../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
- 编译:
make -j 18
,其中-j
参数指定了同时运行的命令数。PS.我没指定的时候只有一个核在跑,速度感人…… - 指定路径安装:
make DESTDIR=$HOME/software/gcc-10.2.0 install
MPFR
- 下载包:
wget https://mpfr.loria.fr/mpfr-4.1.0/mpfr-4.1.0.tar.gz
- 解压:
tar -xzvf mpfr-4.1.0.tar.gz mpfr-4.1.0
- 创建编译目录:
cd mpfr-4.1.0 && mkdir mpfr-build-4.1.0 && cd mpfr-build-4.1.0
- 生成 Makefile 文件:
../configure
- 编译:
make -j 18
- 安装到指定路径:
make DESTDIR=$HOME/software/mpfr-4.1.0 install
cuda
下载 11.7 版本的 installer,安装到默认位置即可。如果存在多个版本的 cuda,不要创建软连接,也不用安装驱动。
对于安装多版本而言,可以使用静默安装:sh ... --toolkitpath=/target/path --toolkit --silent
cudnn
下载文件,解压,然后:
cp cudnn-8.9.2/include/cudnn.h /usr/local/cuda-11.7/include/.
cp cudnn-8.9.2/lib/libcudnn* /usr/local/cuda-11.7/lib64
chmod a+r /usr/local/cuda-11.7/include/cudnn.h /usr/local/cuda-11.7/lib64/libcudnn*
环境变量配置:
export CUDA_PATH=/usr/local/cuda-11.7
export CUDA_HOME=/usr/local/cuda-11.7
export GCC_HOME=$HOME/software/gcc-10.2.0/usr/local
export MPFR_HOME=$HOME/software/mpfr-4.1.0/usr/local
export LD_LIBRARY_PATH=${GCC_HOME}/lib64:${MPFR_HOME}/lib:${CUDA_PATH}/lib64:$LD_LIBRARY_PATH
export PATH=${GCC_HOME}/bin:${CUDA_PATH}/bin:$PATH
export CC=${GCC_HOME}/bin/gcc
export CXX=${GCC_HOME}/bin/c++
环境安装
- 克隆仓库:
git clone ...
,然后进入仓库目录下 - 改写子模块地址以使用加速,在
.gitmodules
文件中 - 初始化子模块:
git submodule init
- 拉取子模块:
git submodule update
- 修改子模块中的子模块配置,同上 2,在子模块目录中改写
.gitmodules
文件 - 创建 conda 环境:
conda create --name internlm-env python=3.10 -y conda activate internlm-env pip install -r requirements/torch.txt pip install -r requirements/runtime.txt
- 安装 flash-attention (version v1.0.5):
cd ./third_party/flash-attention python setup.py install cd ./csrc cd fused_dense_lib && pip install -v . cd ../xentropy && pip install -v . cd ../rotary && pip install -v . cd ../layer_norm && pip install -v . cd ../../../../
- 安装 Apex (version 23.05):
cd ./third_party/apex pip install -v --disable-pip-version-check --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./ cd ../../
数据准备(微调)
这部分不难,只要参考 tools/alpaca_tokenizer.py
编写脚本,将数据集处理、输出为 .bin
和 .meta
的数据文件。
然后:
python tools/your_tokenizer.py /path/to/your_dataset /path/to/output_dataset /path/to/tokenizer --split_ratio 0.1
其中 /path/to/tokenizer
一般为 tools/V7_sft.model
,没有特殊需求的话使用这个即可。
数据集格式说明
参考项目指南的数据准备(预训练)部分。
训练配置
见项目指南的训练配置部分。
注意,原始模型参数从 README 的 Model Zoo 部分的 OpenXLab 链接下载。
启动训练
torchrun --nnodes=1 --nproc_per_node=8 train.py --config ./configs/7B_sft.py --launcher "torch"
Comments NOTHING