llama3的编译环境要求:
需要的软件,硬件资源:
python=3.11 pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=12.2
第一步下载需要的python版本
1.下载3.11.4python
wget https://www.python.org/ftp/python/3.10.0/Python-3.11.4.tgz https://www.python.org/ftp/python/3.11.4/Python-3.11.4.tgz
2.使用tar命令解压
tar -xvf Python-3.11.4.tgz
3. 安装 准备编译环境,执行如下命令:
yum -y install make gcc epel-release zlib-devel openssl-devel bzip2-devel ncurses-devel gdbm-devel readline-devel sqlite-devel libffi-devel tk-devel xz-devel cd Python-3.11.4 ./configure --prefix=/usr/local make sudo make install
4.添加软连接
ln -s /usr/local/tools/Python-3.7.12/bin/python3.7 /usr/bin/python3
可使用命令ls -l /usr/bin/查看软连接是否已创建成功
第二步创建虚拟环境
python3.11 -m venv envsllamav3
激活Python虚拟环境
source ~/envsllamav3/bin/activate
第三步安装依赖
安装cuda
输入 nvidia-smi 查看需要下载的cuda版
llama支持的最低cuda版本为11.6,因此需要更新cuda版本。
1.下载cuda驱动
官网地址:下载最新官方 NVIDIA 驱动
选择
llama3的编译环境要求:
需要的软件,硬件资源:
python=3.11 pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=12.2
第一步下载需要的python版本
1.下载3.11.4python
wget https://www.python.org/ftp/python/3.10.0/Python-3.11.4.tgz https://www.python.org/ftp/python/3.11.4/Python-3.11.4.tgz
2.使用tar命令解压
tar -xvf Python-3.11.4.tgz
3. 安装 准备编译环境,执行如下命令:
yum -y install make gcc epel-release zlib-devel openssl-devel bzip2-devel ncurses-devel gdbm-devel readline-devel sqlite-devel libffi-devel tk-devel xz-devel cd Python-3.11.4 ./configure --prefix=/usr/local make sudo make install
4.添加软连接
ln -s /usr/local/tools/Python-3.7.12/bin/python3.7 /usr/bin/python3
可使用命令ls -l /usr/bin/查看软连接是否已创建成功
第二步创建虚拟环境
python3.11 -m venv envsllamav3
激活Python虚拟环境
source ~/envsllamav3/bin/activate
第三步安装依赖
安装cuda
输入 nvidia-smi 查看需要下载的cuda版本
llama支持的最低cuda版本为11.6,因此需要更新cuda版本。
1.下载cuda驱动
官网地址:下载最新官方 NVIDIA 驱动
选择
查找相关驱动并下载
2.去官网下载对应版本
https://developer.nvidia.com/cuda-12-2-0-download-archive?target_os=Linux&target_arch=x86_64&Distribution=CentOS&target_version=7&target_type=runfile_local
选择型号后复制蓝色的命令执行
wget https://developer.download.nvidia.com/compute/cuda/12.2.0/local_installers/cuda_12.2.0_535.54.03_linux.run sudo sh cuda_12.2.0_535.54.03_linux.run
accept后
去掉勾选driver,install
安装完成后修改环境变量
vim ~/.bashrc
输入
export PATH=/usr/local/cuda-12.2/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda-12.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
然后保存退出
:wq
最后
source ~/.bashrc
然后执行
nvcc --version
查看cuda版本显示
cuda下载完成
第四步下载微调框架LLaMA-Factory
LLaMA-Factory/README_zh.md at main · hiyouga/LLaMA-Factory
下载LLaMA-Factory框架和相关依赖
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory pip install -e ".[torch,metrics]"
这个依赖会下很久推荐使用清华镜像源下载
再微调之前需要下载modescope 请不要下载1.15版本的会出下下载异常
pip install modelscope==1.17
可视化微调
llamafactory-cli webui export USE_MODELSCOPE_HUB=1 //选择从modelscope中下载模型
执行命令后如图:会出现登录的端口号7860
第五步模型微调
登录页面后显示:/root/liujingjing11/Meta-Llama-3.1-70B-Instruct
具体参数说明:
参数 说明 参数 说明 Lang 语言选择(en英语 zh中文) Model name 微调的模型 Finetuning method 微调方法(full 全模型微调freeze冻结层微调 lora层冻结微调) checkpoint path 是否保存检查点 stage 训练阶段Supervised Fine-Tuning(监督微调), Reward Modeling(奖励建模)PPO(旨在提高训练效率并实现稳定性)DPO是一种优化算法,用于保护数据隐私。 Pre-Training(预训练) dataset 选择数据集(preview dataset可以预览数据集) learning rate 学习率一般而言越大 越容易收敛,但很难找到最优解;而学习率小则收敛的速度慢。根据数据集选择合适的学习率。1000条数据建议学习率设置为1e-4 epochs 一个 epoch 是一次完整的训练数据集,通过模型进行前向传播和反向传播的过程。 Maximum gradient norm 最大梯度范数用于对梯度进行裁剪,限制梯度的大小,以防止梯度爆炸(梯度过大)的问题。一般设置1-5范围,其中1通常用于对梯度进行相对较小的裁剪,3到5:用于对梯度进行中等程度的裁剪,适用于一般深度学习模型的训练。 Compute type FP16,BF16,FP32 V100是无法使用bf16精度的,只能使用fp16。 cutoff_len 用于控制输入文本的截断长度。当输入文本的长度超过 cutoff_len 时,模型会截取前 cutoff_len 个字符或标记 Batch size 一次训练的样本数 Gradient accumulation 就是将多次计算得到的梯度值进行累加,然后一次性进行参数更新。 Val size 验证集尺寸 LR scheduler 学习率调节器。动态调整学习率,从而找到最优解。常见的有cosine,linear配置完参数后选择结果输出路径,然后点击start即可。
如果下载的模型经常报错文件找不到,推荐在魔塔社区手动下载好模型后,用本地模型训练。
模型训练:
损失函数:
Q&A
期间遇到很多版本匹配的问题
1.其中因为centos系统中自带python2.7版本支持的依赖并不能支持python3.7以上的版本,导致以上配置中yum -y install make gcc epel-release zlib-devel openssl-devel bzip2-devel ncurses-devel gdbm-devel readline-devel sqlite-devel libffi-devel tk-devel xz-devel 下载的依赖包默认下载了python2.7的依赖,从而python3.11中需要的包很多都不能导入。
其中openssl包一直报没有相关模块,而openssl包主要和下载一些依赖有关系。
报错:ModuleNotFoundError: No module named 'openssl'
这时需要去下载最新的openssl-3.1.4包解压安装进centos系统中。步骤
1.安装相关依赖
yum group install 'Development Tools' yum -y install zlib-devel zlib perl* yum -y install gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl openssl-devel xz xz-devel libffi-devel libuuid-devel perl-core epel-release tk-devel ncurses-libs gdbm-devel libdbi-devel python-backports-lzm yum -y install
2.安装openssl3.1.4,源代码可在https://www.openssl.org/source/选择
wget https://www.openssl.org/source/openssl-3.1.4.tar.gz tar -xzvf openssl-3.1.4.tar.gz cd opensl-3.1.4
3.编译、安装openssl3.1.4
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl --shared zlib
这一步又开始报错,Compilation failed in require at /root/openssl-3.0.1/Configure line 23. BEGIN failed--compilation aborted at /root/openssl-3.0.1/Configure line 23.xian 定位问题也还是因为缺少依赖。下载依赖:
yum install perl-IPC-Cmd
安装
make && make install
安装openssl完成。
2.更换cuda版本时需要卸载原本的cuda11.4,再重新安装新的cuda12.2驱动。下载版本驱动的时候也需要一些依赖,而原本系统支持的cuda11.4的一些依赖不能支持cuda12.2驱动下载。需要更新相关依赖(yum install kernel-devel kernel-headers gcc dkms gcc-c++)Tips 如果系统中已有原本依赖则下载不了最新的依赖
下载最新的kernel-devel , kernel-headers, kernel-doc 依赖 并统一版本。
3.如果模型一直下载不成功,则先本地下载模型,再调优。
git lfs instal git clone https://www.modelscope.cn/FlagAlpha/Llama3-Chinese-8B-Instruct.gi
查找相关驱动并下载
2.去官网下载对应版本
https://developer.nvidia.com/cuda-12-2-0-download-archive?target_os=Linux&target_arch=x86_64&Distribution=CentOS&target_version=7&target_type=runfile_local
选择型号后复制蓝色的命令执行
wget https://developer.download.nvidia.com/compute/cuda/12.2.0/local_installers/cuda_12.2.0_535.54.03_linux.run sudo sh cuda_12.2.0_535.54.03_linux.run
accept后
去掉勾选driver,install
安装完成后修改环境变量
vim ~/.bashrc
输入
export PATH=/usr/local/cuda-12.2/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda-12.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
然后保存退出
:wq
最后
source ~/.bashrc
然后执行
nvcc --version
查看cuda版本显示
cuda下载完成
第四步下载微调框架LLaMA-Factory
LLaMA-Factory/README_zh.md at main · hiyouga/LLaMA-Factory
下载LLaMA-Factory框架和相关依赖
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory pip install -e ".[torch,metrics]"
这个依赖会下很久推荐使用清华镜像源下载
再微调之前需要下载modescope 请不要下载1.15版本的会出下下载异常
pip install modelscope==1.17
可视化微调
llamafactory-cli webui export USE_MODELSCOPE_HUB=1 //选择从modelscope中下载模型
执行命令后如图:会出现登录的端口号7860
第五步模型微调
登录页面后显示:/root/liujingjing11/Meta-Llama-3.1-70B-Instruct
具体参数说明:
参数 说明 参数 说明 Lang 语言选择(en英语 zh中文) Model name 微调的模型 Finetuning method 微调方法(full 全模型微调freeze冻结层微调 lora层冻结微调) checkpoint path 是否保存检查点 stage 训练阶段Supervised Fine-Tuning(监督微调), Reward Modeling(奖励建模)PPO(旨在提高训练效率并实现稳定性)DPO是一种优化算法,用于保护数据隐私。 Pre-Training(预训练) dataset 选择数据集(preview dataset可以预览数据集) learning rate 学习率一般而言越大 越容易收敛,但很难找到最优解;而学习率小则收敛的速度慢。根据数据集选择合适的学习率。1000条数据建议学习率设置为1e-4 epochs 一个 epoch 是一次完整的训练数据集,通过模型进行前向传播和反向传播的过程。 Maximum gradient norm 最大梯度范数用于对梯度进行裁剪,限制梯度的大小,以防止梯度爆炸(梯度过大)的问题。一般设置1-5范围,其中1通常用于对梯度进行相对较小的裁剪,3到5:用于对梯度进行中等程度的裁剪,适用于一般深度学习模型的训练。 Compute type FP16,BF16,FP32 V100是无法使用bf16精度的,只能使用fp16。 cutoff_len 用于控制输入文本的截断长度。当输入文本的长度超过 cutoff_len 时,模型会截取前 cutoff_len 个字符或标记 Batch size 一次训练的样本数 Gradient accumulation 就是将多次计算得到的梯度值进行累加,然后一次性进行参数更新。 Val size 验证集尺寸 LR scheduler 学习率调节器。动态调整学习率,从而找到最优解。常见的有cosine,linear配置完参数后选择结果输出路径,然后点击start即可。
如果下载的模型经常报错文件找不到,推荐在魔塔社区手动下载好模型后,用本地模型训练。
模型训练:
损失函数:
Q&A
期间遇到很多版本匹配的问题
1.其中因为centos系统中自带python2.7版本支持的依赖并不能支持python3.7以上的版本,导致以上配置中yum -y install make gcc epel-release zlib-devel openssl-devel bzip2-devel ncurses-devel gdbm-devel readline-devel sqlite-devel libffi-devel tk-devel xz-devel 下载的依赖包默认下载了python2.7的依赖,从而python3.11中需要的包很多都不能导入。
其中openssl包一直报没有相关模块,而openssl包主要和下载一些依赖有关系。
报错:ModuleNotFoundError: No module named 'openssl'
这时需要去下载最新的openssl-3.1.4包解压安装进centos系统中。步骤
1.安装相关依赖
yum group install 'Development Tools' yum -y install zlib-devel zlib perl* yum -y install gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl openssl-devel xz xz-devel libffi-devel libuuid-devel perl-core epel-release tk-devel ncurses-libs gdbm-devel libdbi-devel python-backports-lzm yum -y install
2.安装openssl3.1.4,源代码可在https://www.openssl.org/source/选择
wget https://www.openssl.org/source/openssl-3.1.4.tar.gz tar -xzvf openssl-3.1.4.tar.gz cd opensl-3.1.4
3.编译、安装openssl3.1.4
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl --shared zlib
这一步又开始报错,Compilation failed in require at /root/openssl-3.0.1/Configure line 23. BEGIN failed--compilation aborted at /root/openssl-3.0.1/Configure line 23.xian 定位问题也还是因为缺少依赖。下载依赖:
yum install perl-IPC-Cmd
安装
make && make install
安装openssl完成。
2.更换cuda版本时需要卸载原本的cuda11.4,再重新安装新的cuda12.2驱动。下载版本驱动的时候也需要一些依赖,而原本系统支持的cuda11.4的一些依赖不能支持cuda12.2驱动下载。需要更新相关依赖(yum install kernel-devel kernel-headers gcc dkms gcc-c++)Tips 如果系统中已有原本依赖则下载不了最新的依赖
下载最新的kernel-devel , kernel-headers, kernel-doc 依赖 并统一版本。
3.如果模型一直下载不成功,则先本地下载模型,再调优。
git lfs instal git clone https://www.modelscope.cn/FlagAlpha/Llama3-Chinese-8B-Instruct.git
总结