更新时间:2024-12-17 GMT+08:00
分享

eagle 投机小模型训练

本章节提供eagle小模型自行训练的能力,客户可通过本章节,使用自己的数据进行训练eagle小模型,并使用自行训练的小模型进行eagle推理。

步骤三:sharegpt格式数据生成为训练data数据集

若使用开源数据集,推荐使用原论文代码仓数据集,下载地址:https://huggingface.co/datasets/Aeala/ShareGPT_Vicuna_unfiltered/blob/main/ShareGPT_V4.3_unfiltered_cleaned_split.json

否则使用第二步生成的开源数据集。

python allocation.py \
--outdir outdir0/sharegpt_0_99_mufp16 \
--end_num 100 \
--used_npus "0,1,2,3,4,5,6,7" \
--model_type llama \
--model_name ./llama-7B  \
--data_path data_for_sharegpt.json \
--seed 42 \
--max_length 2048 \
--dtype bfloat16

其中

outdir:生成的训练data 地址

end_num:生成的data总条数

used_npus:使用哪些NPU

model_type:使用模型类型 目前支持 qwen2 llama1 llama2 及 llama3,其中llama1、2及chat都填写llama

model_name:模型地址

data_path:预训练数据集地址 即一中生成的文件地址

seed:生成训练data所使用的seed(此处42为开源训练设定参数)

max_length:模型的max_length

dtype:为模型dtype 默认为bfloat16

步骤四:执行训练

安装完成后,执行:

accelerate launch -m --mixed_precision=bf16 eagle.train.main \
--tmpdir [path of data] \
--cpdir [path of checkpoints] \
--configpath [path of config file] \
--basepath  [path of base_model]
--bs [batch size]

tmpdir:即为步骤三中的outdir,训练data地址

cpdir:为训练生成权重的地址

configpath:为模型config文件的地址

basepath:为大模型权重地址

bs:为batch大小

其中,要获取模型config文件, 首先到https://github.com/SafeAILab/EAGLE/页找到对应eagle模型地址。

图1 EAGLE Weights

以llama2-chat-7B为例,单击进入后 ,如下图所示config文件,即为对应模型的eagle config文件。

步骤五:训练生成权重转换成可以支持vLLM推理的格式

将训练完成后的权重文件(.bin文件或. safetensors文件),移动到下载好的开源权重目录下(即步骤4中,config文件所在目录)。

然后在llm_tools/spec_decode/EAGLE文件夹,执行
python convert_eagle_ckpt_to_vllm_compatible.py --base-path 大模型权重地址 --draft-path 小模型权重地址 --base-weight-name 大模型包含lm_head的权重文件名 --draft-weight-name 小模型权重文件名

--base-path:为大模型权重地址,例如 ./llama2-7b-chat

--draft-path:小模型权重地址 即步骤四中config文件所在目录,例如 ./eagle_llama2-7b-chat

--base-weight-name:为大模型包含lm_head的权重文件名,可以在 base-path 目录下的 model.safetensors.index.json 文件获取,例如llama2-7b-chat 的权重名为pytorch_model-00001-of-00002.bin

--draft-weight-name 为小模型权重文件名,即刚才移动的.bin文件或者.safetensors 文件

相关文档