Skip to content

Latest commit

 

History

History
61 lines (35 loc) · 1.93 KB

SFT-README.md

File metadata and controls

61 lines (35 loc) · 1.93 KB

不扩充词表的指令微调

数据格式

此处我们采用指令数据微调LlaMA-2模型,这些数据都是人机交互数据,一问一答形式,一般有两个角色, humanassistant. 所以我们采用如下的形式将数据拼接:

<s>
human:
<query>
</s><s>
assistant:
<response>
</s>

如果是多轮对话,也是按照这个格式进行依次将对话进行拼接

训练

src/sft/run_train_sft.sh根据本地环境配置模型路径,模型超参数等.我们训练采用deepspeed框架,模型训练过程中,我们加入并微调LoRA参数,同时也微调embedding层和lm_head层。微调Llama-2-7b-hf模型,运行:

CUDA_VISIBLE_DEVICES="0,1,2,3" ./src/sft/run_train_sft.sh

因为LlaMA-2开源了chat版本的模型,所以我们其实采用Llama-2-7b-chat-hf应该是更适合的。微调Llama-2-7b-chat-hf模型,运行:

CUDA_VISIBLE_DEVICES="0,1,2,3" ./src/sft/run_train_sft.sh

加载和起服务

PEFT模型操作

加载训练保存的lora模块前要修改文件名。这个主要是hf的trainer中关于deepspeed的代码没完全适配PEFT。一般,运行上面的训练代码,模型文件保存在类似于/your_path/checkpoint-100名称的路径中,此路径下会有pytorch_model.bin文件,这个文件存储的是我们微调的参数。我们需要做如下两个步骤:

  • pytorch_model.bin文件重命名为adapter_model.bin
  • src/sft/adapter_config.json文件拷贝到/your_path/checkpoint-100路径

起服务

采用flask,对hf模型进行简单部署,请参照:

CUDA_VISIBLE_DEVICES=0 python src/sft/web_service_with_lora.py

测试服务时,参照src/sft/web_service_test.py中的请求格式发送请求。

高效推理部署

hf可以帮助我们快速部署模型,但其效率毕竟较低。为了实现LLM高效部署,请参照vllm部署.