计算机系统应用教程网站

网站首页 > 技术文章 正文

从零手搓中文大模型计划|Day06|预训练代码汇总和梳理

btikc 2024-12-29 01:43:43 技术文章 36 ℃ 0 评论

走过路过不要错过,点赞+收藏+关注第一时间获取最新进度(或前来催更)。

从零手搓中文大模型计划|Day06

预训练的工作算是完成了,这几天有点忙,所以还没来得及开始下一阶段的内容。

周末花时间整理了一下这几次更新相关的代码(主要是jupyter notebook的形式)。

全都放在下面的地址了,后续的更新也都在这里发布:

https://github.com/puppyapple/Chinese_LLM_From_Scratch/tree/main

下面是仓库的README简介内容(这期水一下(^ω~))。

项目简介

心血来潮想要走一遍大模型训练的流程,于是有了这个项目。

由于我自己只有一张3090,也不好用单位的显卡,所以训练只能选很小的模型。

其实我自己对SLM是很感兴趣的,感觉现在也有越来越多地研究开始关注小尺寸大模型的性能以及如何把大模型做小

如果是希望学习大规模并行训练相关的内容(例如DeepSpeedMegatron),这个项目可能不太适合你。

另外个人经历和精力有限,所以可能很多地方做的不是很好,请大家多多包涵。也欢迎大家提出意见和建议。

最后给自己的自媒体号打个广告,欢迎大家关注一波~


最近更新

2024-09-02

上传了Day01-Day05的预训练代码(Jupyter Notebook):

  • Day01: 项目调研
  • Day02: Tokenizer分词
  • Day03: 数据预处理
  • Day04: 模型搭建和预训练启动
  • Day05: 预训练效果测试

计划执行

在一个垂直领域的小数据集上完成:

  • 一个小尺寸模型的预训练(能在单卡上跑)
  • 在上面的基础上完成指令微调
  • 在上面的基础上完成DPO
  • 其他待定

Journey文件夹下有每次任务的详细记录。 下载相应的文件(chatglmtokenizerTinyStoriesChinese的数据集)之后,可以跟着Journey中的步骤一步步来。 理论上可以复现已经放出的结果(GPU如果比我还小的,需要自己调整下batch_size)。

训练信息

机器配置

OS: Ubuntu 22.04.3 LTS x86_64
Kernel: 6.5.0-35-generic
Uptime: 60 days, 4 hours, 55 mins
Packages: 2719 (dpkg), 17 (snap)
Shell: fish 3.6.1
Terminal: WezTerm
CPU: AMD Ryzen 9 5950X (32) @ 3.400G
GPU: NVIDIA 09:00.0 NVIDIA Corporati
Memory: 9347MiB / 64195MiB

预训练

详细参数请参考microstories.yaml[1]

指令微调

待更新...

DPO

待更新...

目录结构

Chinese_LLM_From_Scratch
├── Data
│   └── TinyStoriesChinese
│       ├── processed_data
│       └── raw_data
├── Experiments
│   ├── configs
│   │   ├── debug.yaml
│   │   ├── microstories.yaml
│   │   └── ...
│   └── Output
│       └── pretrain
│           ├── debug
│           └── microstories
├── References
│   ├── chatglm3-6b
│   └── ...
├── Journey
│   ├── Day01
│   ├── Day02
│   ├── Day03
│   ├── Day04
│   └── ...

引用链接

[1] microstories.yaml: ./Experiments/configs/microstories.yaml

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表