Code Monkey home page Code Monkey logo

goat's Introduction

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;
  • 重构代码使其可用于多卡并行训练;
  • ...

goat's People

Contributors

robotse7en avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.