Skip to content

GOAT(山羊)是中英文大语言模型,基于LlaMa进行SFT。

Notifications You must be signed in to change notification settings

RobotSe7en/GOAT

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GOAT

GOAT(山羊)是中英文大语言模型,采用LoRA方法以较低的资源基于LlaMa在多轮对话数据集上SFT。本项目下的代码、数据、模型等只供研究使用。(logo由文心一言生成)

更新

🚀 2023.04.24

  • 🎉Web页面支持多轮对话;
  • 🎉Web页面支持流式输出;
  • 🎉多轮对话支持调节temperature, top_p, top_k, num_beams, max_new_tokens, repetition_penalty参数。

🚀 2023.04.21

  • 🎉发布了30B和13B的LoRA参数,此参数基于shareGPT的30k数据SFT,epoch=2;
  • 🎉web页面增加了流式输出;
  • 🎉使用了transformer==4.28.1,支持num_beams=1时流式输出;
  • 🎉添加了演示视频。

🚀 2023.04.15

  • 🎉增加了处理多轮对话类数据的代码,使得代码可以对LlaMa模型进行多轮对话有监督微调,多轮对话有监督微调的模型效果具有较大提升;
  • 🎉将'### ''\n\n'切分符替换成了eos_token'</s>',使其能够更好的识别文本的段落和角色的切分。模型在推理时能够适时地结束文本生成而不是无休止的生成;
  • 🎉公开GOAT_7B LoRA模型参数,此模型是基于LlaMa在10k中英文多轮对话数据上有监督微调获得;
  • 🎉多轮对话数据示例可在sample.json查看,完整的shareGPT多轮对话数据可在这里下载。

效果

GOAT-DEMO-001.mp4

视频经过加速处理。

模型

本项目是基于LlaMa使用多轮对话数据集SFT的模型,使用本项目代码进行微调或推理需要先申请或在Huggingface下载LlaMa原模型权重并放在对应文件夹下。

微调参数

本项目在1台RTX A6000(48G)显卡上训练了2个epoch,batch_size是128:

    max_lenght=1024
    per_device_train_batch_size=8
    gradient_accumulation_steps=16
    learning_rate=3e-4

局限性

  • 由于LlaMa只有少部分中文token、没有在中文语料下预训练、微调数据量较少、只更新了Adapter参数等种种因素导致微调之后的中文效果不是非常理想;
  • 会出现较多的事实性错误;
  • 会出现“复读机”情况;
  • 产生偏见、危险、政治错误等言论。

TODO

  • 在对话类数据集上使用LoRA进行微调;
  • 提供web页面,并支持流式输出;
  • 微调LlaMa 30B模型(LoRA);
  • Web页面实现多轮对话;
  • 实现基于知识库或文本语料的问答(LangChain或自己构建);
  • 使用RLHF;
  • 重构代码使其可用于多卡并行训练;
  • ...

About

GOAT(山羊)是中英文大语言模型,基于LlaMa进行SFT。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published