Giter Club home page Giter Club logo

llms-101's Introduction

LLMs-101

计划自己动手训练一个 miniLLM,模型参数暂定 0.2B 。打算把 data processtokenizerpretrainsftrlhf都自己做一遍。深入了解预训练的细节。

我们都知道掌握 LLM 的最好的办法是动手实践,但是囿于业务压力,我们很多时候没有精力和机会真正自己训练一个 LLM。因此 LLM 算法工程师可能就变成了「prompt 调优工程师」,工作内容只有三件事:看业务数据,写 Prompt 和 ICL 样例,利用少量数据 SFT。这些事情做久了就会觉得无聊,那么我们一起动手从头开始训练一个 miniLLM 吧,欢迎围观!

数据集

数据集 介绍 数据量(DiskSize)
维基百科 huggingface 中的开源数据集 ~1GB
百度百科, 提取码: bwvb 百科百科数据 16GB
悟道 200GB 悟道开源 200G(完整 2T) 206GB
天工150B 天工高质量 150B 620GB

DataProcess

第一期采用的成熟的开源数据集,维基百科,百度百科,悟道和天工数据集。因此数据预处理部分会相关比较简单,会持续更新。

  1. 由于当前仅采用成熟的数据集,所以仅仅是学习如何进行预处理成 Dataset; 具体做法是给每一个文本后面加上一个end token, qwen 的 end token 是 <|endoftext|>

为什么用 qwen 处理?因为这样最方便了,其他的 model 有各种 eos, bos, eop 等符号,比较麻烦。相信重剑无锋吧~

  • 后续替换成自己的 tokenizer 做 dataprocess

Tokenizer

由于 BPE 算法实在是太占用内存了,第一期采用 SentencePiece Random Select 一些数据跑通 Train Tokenizer 的过程。

更新:from tokenizers import SentencePieceBPETokenizer train 一个 tokenizer 可以采用 Iterator 的形式,所以最终采用了 SentencePieceBPETokenizer 来训练 tokenizer。具体见:tokenizer/train_bpe_with_sentencepiece.py,但实际训练过程中和repo一样,采用了 qwen 实现。(问题不大,后续换成自己的)

运行方式: python3 tokenizer/train_bpe_with_sentencepiece.py

Pretrain

运行方式 1 (accelerate + deepspeed): sh scripts/run.sh
运行方式 2(裸 trainer): python pretrain/pretrain.py

参数量: 120803840, 0.12B

SFT

RLHF

其他

  1. 受限于算力问题,本项目仅仅用于学习作用,可能最终 0.2B 效果并不令人满意。
  2. 我会在MEMOS记录平常想到的一些东西, 如果国内想访问更快,可以点击这里。Cloudflare 速度真的是负优化。

Reference

llms-101's People

Contributors

bbruceyuan avatar

Stargazers

 avatar 賴祺清 avatar Kerwin Wilson avatar 来新璐 avatar 云岑.YCloud avatar  avatar FindMe avatar Jack Jiang avatar Jason Jiang avatar fjqz177 avatar  avatar Tengfei-Ma avatar ZhuoranWang avatar  avatar Ban avatar  avatar  avatar Zelong avatar  avatar BenjaminChou avatar Alan_Hwang avatar Stella Wang avatar Hongru Hu avatar  avatar Jiekai Wang avatar Zhijian Ding avatar Liang Ruobing avatar  avatar Jing avatar Yaowei Hu avatar  avatar Will Shang avatar dot avatar Jiqian Yang avatar Hao Chai avatar

Watchers

 avatar

Forkers

shuentang

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.