Chinese-LLaMA-Alpaca模型搭建(三)
1、简单介绍 1.1 原版LLaMA模型介绍 1.2 LoRA权重模型 1.3 完整版权重模型 2、模型搭建 2.1 直接到huggingface下载转换后的LLaMA hf模型 2.2 下载原版LLaMA模型,并将原版LLaMA模型转换为HF格式(可跳过,2.1直接用就行) 2.2.1 源码地址 2.2.2 源码下载类 2.2.3 将原版LLaMA模型转换为HuggingFace格式 2.3 下载并合并LoRA权重,生成全量模型权重 更多内容,请期待1、简单介绍
中文羊驼模型只是一些LoRA权重模型文件,与原版LLaMA模型合并后就可以生成一个完整模型使用了,在这过程中可以不断训练LoRA权重模型文件,无限训练后达到专业领域的效果,理论上就能投入使用了,但注意禁止商用的问题。
1.1 原版LLaMA模型介绍
Facebook官方发布的LLaMA模型禁止商用,并且官方没有正式开源模型权重。 模型规格:7B、13B、33B(30B就是33B,实际是32.5B)、65B。 GitHub源码地址,可以通过其下载。1.2 LoRA权重模型
LoRA模型的全称为Learnable Re-Weighting,即可学习的重加权模型。它主要是通过对神经网络中各层之间的权重进行学习,来提高模型的性能。具体来说,LORA模型通过学习到前一层和后一层之间的相关性,来自动调整当前层的权重,从而提高模型的性能。
LoRA权重模型会有点麻烦,详细见模型训练篇,目前有能人训练出了中文的LoRA权重模型了,就是中文羊驼。
1.3 完整版权重模型
原版LLaMA模型 + LoRA权重模型 = 完整版权重模型,需要进行手动模型合并与转换。
2、模型搭建
2.1 直接到huggingface下载转换后的LLaMA hf模型
git方式下载,7B、13B、33B、65B。
本文使用7b规格试验,以下是下载后的文件清单。
2.2 下载原版LLaMA模型,并将原版LLaMA模型转换为HF格式(可跳过,2.1直接用就行)
2.2.1 源码地址
llama GitHub源码地址
2.2.2 源码下载类
2.2.3 将原版LLaMA模型转换为HuggingFace格式
使用transformers提供的脚本convert_llama_weights_to_hf.py
1、下载transformers源码,装好虚拟环境(python3.10),torch包可能无法下载成功,用国内镜像源安装就好啦,其他的包类似
pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install transformers -i https://pypi.tuna.tsinghua.edu.cn/simple
2、将文件所在目录调整好
--input_dir中存放原版LLaMA的tokenizer.model
${input_dir}/${model_size}下存放其余文件
--output_dir中将存放转换好的HF版权重
3、执行如下代码:
cd .\src\transformers\models\llama\
python convert_llama_weights_to_hf.py --input_dir E:\BaiduNetdiskDownload\Chinese-LLaMA-Alpaca\original\llama-7b-hf --model_size 7B --output_dir E:\BaiduNetdiskDownload\Chinese-LLaMA-Alpaca\original\llama-7b-hf\output_dir
生成后的文件类似2.1的效果。
2.3 下载并合并LoRA权重,生成全量模型权重
中文羊驼GitHub
1)LoRA下载:见中文羊驼推荐下载模型的LoRA下载[3]。
2)合并脚本代码见scripts/merge_llama_with_chinese_lora_low_mem.py
3)安装好虚拟环境插件
pip install torch==1.13.1 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install transformers==4.28.1 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install sentencepiece==0.1.97 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install git+https://github.com/huggingface/peft.git@13e53fc -i https://pypi.tuna.tsinghua.edu.cn/simple
peft插件可能网络不顺畅,可以先下载源代码,在使用命令安装:
pip install D:\01.project\LLM\peft-13e53fc7ee5d89d59b16523051006dddf0fb7a49 -i https://pypi.tuna.tsinghua.edu.cn/simple
4)单LoRA权重合并
python scripts/merge_llama_with_chinese_lora.py
--base_model F:\Chinese-LLaMA-Alpaca\original\llama-7b-hf
--lora_model F:\Chinese-LLaMA-Alpaca\loras\chinese_llama_plus_lora_7b
--output_type pth
--output_dir F:\Chinese-LLaMA-Alpaca\complete\Chinese-LLaMA-7B-pth
python scripts/merge_llama_with_chinese_lora.py
--base_model F:\Chinese-LLaMA-Alpaca\original\llama-7b-hf
--lora_model F:\Chinese-LLaMA-Alpaca\loras\chinese_alpaca_plus_lora_7b
--output_type pth
--output_dir F:\Chinese-LLaMA-Alpaca\complete\Chinese-Alpaca-7B-pth
多LoRA权重合并
python scripts/merge_llama_with_chinese_lora.py
--base_model F:\Chinese-LLaMA-Alpaca\original\llama-7b-hf
--lora_model F:\Chinese-LLaMA-Alpaca\loras\chinese_llama_plus_lora_7b,F:\Chinese-LLaMA-Alpaca\loras\chinese_alpaca_plus_lora_7b
--output_type pth
--output_dir F:\Chinese-LLaMA-Alpaca\complete\Chinese-LLaMA-Alpaca-7B-pth