minimind icon indicating copy to clipboard operation
minimind copied to clipboard

🚀🚀 「大模型」2小时完全从0训练26M的小参数GPT!🌏 Train a 26M-parameter GPT from scratch in just 2h!

Results 74 minimind issues
Sort by recently updated
recently updated
newest added

作者大大,你太牛了。上班看到的,忍不住要动手。 我有一个数据集在qwen2-0.5B上SFT效果很好,心里一直想要往下再scale,看看在超级小的模型上的表现如何。 这。。。这不就来了吗 求大佬建个微信群~

question

在某平台上租了2台机器,控制内存CPU等变量的一致性,测试不同GPU的训练时间 ![image](https://github.com/user-attachments/assets/3b55f5d0-4db9-4b68-afdf-fd5cd19d0f79) ![image](https://github.com/user-attachments/assets/c9e92e39-680b-439c-9a37-b04023f5ce97) 个人认为 `[3060~2080Ti~3090~4090]` 这个区间包含了大部分AI从业者手头的显卡规格,具有很强的代表性 其它桌面GPU,例如3060的算力略弱于2080Ti,可以参考上图换算 --- * 2080Ti单卡(11G显存) > pretrain `batchsize=48`,预计7小时1个epoch ``` root@autodl-container-908d479a1c-1697cfd8:~/autodl-tmp/minimind# python 1-pretrain.py LLM总参数量:26.878 百万 Epoch:[0/20](0/111769) loss:8.879 lr:0.0002000 epoch_Time:2618.0min: Epoch:[0/20](100/111769) loss:7.438 lr:0.0002000 epoch_Time:442.0min: Epoch:[0/20](200/111769) loss:6.899 lr:0.0002000...

good first issue

最近有在看MobileLLM那篇论文,不知道作者是不是用了论文里面的技术呢?如embedding share、GQA等呢

本教程参考官方 [readme](/Users/pengqianhan/Documents/GitHub/minimind-pq/README.md) 和 [不是Issue,一点个人训练minimind的记录 #26](https://github.com/jingyaogong/minimind/issues/26) 由于本人手头只有一台Macbook (M1 Pro),因此这个项目只是用来debug和学习代码,完全没有训练出一个可用的模型。在大佬的代码基础上减少了epoch,同时在一个epoch内只用很少的数据进行训练,代码可正常运行从而可以学习代码运行的逻辑。以下是我学习代码的流程: 0. train tokenizer - 下载 | **【tokenizer训练集】** | [HuggingFace](https://huggingface.co/datasets/jingyaogong/minimind_dataset/tree/main) / [百度网盘](https://pan.baidu.com/s/1yAw1LVTftuhQGAC1Y9RdYQ?pwd=6666) 文件为 tokenizer_train.jsonl - [博客或视频讲解](https://www.bilibili.com/video/BV1KZ421M7di/?spm_id_from=333.880.my_history.page.click&vd_source=e587bac74600ca53ef886eea337fe87d) - 运行 train_tokenizer.py, 运行结束后,在’model/minimind_tokenizer/‘下得到merges.txt,tokenizer_config.json,tokenizer.json,vocab.json 四个文件 1. data_process.py...

# Minimind的推理过程学习记录 大佬的minimind真是让我受益匪浅,由于之前没接触过LLM,和DDP等,这次学到的知识真不少,尤其是在推理时感受到minimind极大的学习价值,所以在此对推理过程进行一个详细的记录。因为我是刚接触,所以以下记录的应该会有错误,若有看到,请各位大佬指正。再次感谢[jingyaogong](https://github.com/jingyaogong)大佬。在记录推理过程前,我先对DDP的学习进行一些记录。 ## 一、DDP的使用记录 由于我有两张NVIDIA Tesla P100所以就想用分布式训练,但是按照[jingyaogong](https://github.com/jingyaogong)大佬的分布式训练命令就报错,于是对DDP的使用进行了学习。 当然为了学习网络结构,对于1-pretrain.py我是先在单卡上进行了debug,然后在进行的DDP分布式训练。debug的时候我将df = df.sample(frac=1)改为df = df.sample(frac=0.005)进行起来更方便。 最后我也是没有完成整个训练过程,下载了大佬训练好的模型。 以下是我遇到的一些问题。 因为我用的NVIDIA显卡,所以我把`dist.init_process_group(backend="gloo")`改为`dist.init_process_group(backend="nccl")`。 然后发现①Windows系统不能下载nccl。然后我通过查询我尝试安装Docker,然后安装时显示因为wsl和系统的问题,又失败了。 最后发现②NVIDIA显卡也可以使用`dist.init_process_group(backend="gloo")`。 之后运行`torchrun --nproc_per_node 2 1-pretrain.py`依旧一直报错,经过查询后改为`torchrun --standalon --nproc_per_node 2 1-pretrain.py`就好了,也就是指定单机训练就好了。 以上问题记录可能显得我比较笨,还请担待。 ## 二、推理过程 这部分来记录一下对于0-eval_pretrain.py或3-full_sft.py的推理过程,两者特别相似,以下以0-eval_pretrain.py为例,并下载大佬的[minimind-v1](https://pan.baidu.com/s/1B60jYo4T8OmJI0ooqsixaA?pwd=6666)模型权重进行推理。因为我也是刚接触LLM相关知识,所以说的可能比较琐碎,还请见谅。...

对这个实验的理解是大模型的整体架构是Tokenizer,pretrain,SFT,RLHF,想通过这个项目对大模型的整体架构有所了解的。 第一步是data_process数据处理,就是把json文件处理成csv文件,方便后面的训练。 1.Tokenizer: 大致思路是这样的,先是有自己的Tokenizer分词器(作者是用train_tokenizer跑的),然后把这些语句丢进Tokenizer,就会产生一些ID,再把ID丢进inputing,就会得到一些高维向量了。这些高维向量就是用来丢进transformer中的。 2.pretrain预训练 将处理好的数据如pretain_data.csv丢进自己定义的模型model中进行处理,使model学习训练参数,成为一个接龙达人,这时的他还没法进行对答问话,训练之后,我将pretrain训练的参数丢到eval中进行测试,会得到如下的结果:(训练了5论) [Q]: 地球上最大的动物是什么? [A]: 地球上只有一个小行星,它的体长约为55厘米,长约为36厘米,它是一个地球上最大最大的行星,最小的体长约为36厘米。 地球上最大最大最大最大最小的体长约为78厘米,它是地球上最大的行星,它的体长约为36厘米。 地球上最大的物体 太阳系最大的行星,它是地球上最大最小的体长约为18厘米。 [Q]: 地球自转一圈大约需要多少时间? [A]: 在全球范围内的超过一百万人口中,有超过200万人口。 而在中国,由于全球经济增长较快,经济增长率一直在下降,世界能源需求增长率已经超越中国,而中国也有望在未来几年内实现增长。 美国是全球最大的翻新市场,但在全球经济增长率上,美国仍是世界第二大经济体。 美国对美国经济影响力最大的经济体 美国经济增长率是全球经济增长率的10倍以上,而美国经济发展速度较慢,是全球经济增长率下降的主要原因。 美国经济发展速度快、增长速度快,但美国经济增长率仅次于美国,而中国经济增长率下降最为严重。 美国经济在过去10年里的增长率仅次于美国,而中国的增长率是近年来的增长率下降。 [Q]: 人类最早使用的金属是什么? [A]: 金属类:金属、玻璃、塑料、金属材料等 金属的成分和含量。 金属的组成: 金属、金属、陶瓷、玻璃、塑料、金属材料。...

Remove unnecessary code. Mode switching is unnecessary; the model's weight values will not change due to mode switching. No forward computation is performed; it only saves the model parameters.

Modify the huggingface warehouse address to facilitate direct retrieval

发现训练出来的tokenizer中的chat_template逻辑上有点问题以及没有实现add_generation_prompt的功能