- 大模型的基座是LLaMA
- 受stanford_alpaca的启发,通过ChatGPT生成中文数据集,进行指令微调。
- 生成中文数据集的方法也受到BELLE的启发
- 注意到原始数据集有几个问题可能会影响微调模型的最终性能, 受AlpacaDataCleaned启发,本项目生成了清洗后的数据。
- 此外,本项目也测试了LoRA方法,该方法大大减少了训练的参数量。
-
Install dependencies 安装依赖包
pip install -r requirements.txt
-
设置环境变量 Set environment variables, or modify the files referencing
BASE_MODEL
:# Files referencing `BASE_MODEL` # export_hf_checkpoint.py # export_state_dict_checkpoint.py export BASE_MODEL=decapoda-research/llama-7b-hf
Both
finetune.py
andgenerate.py
use--base_model
flag as shown further below.
该文件包含了一个将PEFT的LoRA等方法直接应用到LLaMA模型的程序,以及一些与提示构造和标记化相关的代码。
Example usage:
python finetune.py \
--base_model 'decapoda-research/llama-7b-hf' \
--data_path 'yahma/alpaca-cleaned' \
--output_dir './lora-alpaca'
超参数的设置:
python finetune.py \
--base_model 'decapoda-research/llama-7b-hf' \
--data_path 'yahma/alpaca-cleaned' \
--output_dir './lora-alpaca' \
--batch_size 128 \
--micro_batch_size 4 \
--num_epochs 3 \
--learning_rate 1e-4 \
--cutoff_len 512 \
--val_set_size 2000 \
--lora_r 8 \
--lora_alpha 16 \
--lora_dropout 0.05 \
--lora_target_modules '[q_proj,v_proj]' \
--train_on_inputs \
--group_by_length
该文件从 Hugging Face 读取基础模型,从tloen/alpaca-lora-7b
读取LoRA权重,并运行一个Gradio接口对指定输入进行推断。
python generate.py \
--load_8bit \
--base_model 'decapoda-research/llama-7b-hf' \
--lora_weights 'tloen/alpaca-lora-7b'
这些文件包含将LoRA权重合并回基本模型的脚本,以便导出为 Hugging Face格式和PyTorchstate_dicts
。
这些脚本可以在llama.cpp或alpaca.cpp等项目中进行Inference。