学习研究大模型的最佳实践就是要亲身体验和不断的折腾,我本地环境MacMini M4(24G)跑DeepSeek-R1的8B模型很轻松,14B也基本勉强,再往上就没戏了,更别说满血版的671B。不过既然想学习模型的训练,可以根据自己的实际硬件情况,不妨先从小模型开始。
本文将重点介绍一款开源项目minimind,带大家亲身体验从0到1构建一个语言模型的全过程。看了项目介绍感觉国人在人工智能这一块还是相当可以的,所以这么厉害的模型那必须得拿来玩玩,接下来可以跟我一起感受创造的乐趣!
实验环境:
MacMini M4(24G)(如果没有GPU也问题不大,只是训练时间会更长)
项目地址:jingyaogong/minimind
MiniMind系列极其轻量,最小版本体积是 GPT-3 的 1/7000,力求做到最普通的个人GPU也可快速训练。
MiniMind系列已完成多个型号模型的预训练,最小仅需25.8M(0.02B),哈哈,之前看Qwen的0.5B蒸馏模型(不到300M的模型)已经很小了,这家伙居然才是个0.02B!
下面正式开始:
既然是Python项目,那还是使用Conda环境,Mac下的安装和配置可以参考之前的文章:
新建一个虚拟环境minimind,并激活
conda activate minimind
github上下载代码
git clone jingyaogong/minimind.git
下载模型:
cd minimind
hf上下载:jingyaogong/MiniMind2
先试试启动WebUI
streamlit run web_demo.py
有报错,根据错误信息进行修复,看样子是git需要lfs支持
brew install git-lfsgit lfs installgit lfs pull再次启动WebUI,体验下效果!
以上是使用了项目中提供训练好的模型,下面我们开始自己的数据,从0开始!
训练数据集:
https://www.modelscope.cn/datasets/gongjy/minimind_dataset/files
推荐下载pretrain_hq.jsonl + sft_mini_512.jsonl最快速度复现Zero聊天模型。
看看这个预训练数据集的样子
我还下载lora_medical医疗相关的数据集
数据文件可自由选择,下文提供了多种搭配方案,可根据自己手头的训练需求和GPU资源进行适当组合,当然也可以使用自己的数据集。
conda下安装依赖:
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
开始训练:
预训练(学知识)
python train_pretrain.py
模式使用了pretrain_hq.jsonl的数据集
然后跑起来就把我吓傻眼了,居然需要7900分钟!!!我这Mac的内存也是狂飙
于是我把数据集截取了前10000行,完整数据是140w+行。
复制train_pretrain.py到train_pretrain_1.py,修改训练数据为10000行的小数据集合,继续跑看看,这下提示只需要28分钟,还好,可以忍受,等着吧。
跑完了,训练后的模型结果保存在out目录,预训练结果输出的文件名是:pretrain_512.pth
训练过程默认每隔100步保存1次参数到文件./out/***.pth(每次会覆盖掉旧权重文件)。
项目提供了验证脚本,可以看看效果:
python eval_model.py --model_mode 0
# 默认为0:测试pretrain模型效果,设置为1:测试full_sft模型效果
哈哈哈,胡言乱语,一塌糊涂!
怀疑是是不是数据集太少,只有1w条数据,也可能是训练的模式不对,那就继续,后面还有一个full的训练:
监督微调(学对话方式)
python train_full_sft.py
继续训练full,默认数据集:sft_mini_512.jsonl,这个数据集跟前面的预训练大小差不多(120w),自然我也是没敢用,这次我使用了lora_medical.jsonl的数据集(只有25276条记录),跑着看看吧:
哇,74分钟,行吧,我等。。
然后在测试依旧效果不好。
没法办,使用大数据量时间太久了,官方也建议使用他们提供的训练好的结果:
使用官方训练结果,再次验证:
感觉还可以哈,这么小的一个模型还要啥自行车?
关于数据集的一些说明:
Tokenizer(分词器)
Token是使用Tokenizer(翻译为分词器)分词后的结果,那么Tokenizer又是什么呢?Tokenizer是将文本分割成token的工具。
在大模型中,Tokenizer有三种常见的分词方式:word level,char level,subword level。
minimind提供了自己的tokenizer,一共6400条,
看上去像是Subword级别的。
下面是一下比较出名的三方开源大模型分词器:
官方提供的数据集简介
基于官方数据集以及推荐的训练方案,有感兴许的可以仔细看看这些Python代码,数据集及几种不同的训练模式等
其实,LLMs的训练涉及到很多方面,如数据集的整理,分词器的选择,预训练,部署与推理,微调,量化,效果评估等等,上文介绍止步在数据集与预训练这块,有感兴趣的同学可以找相关资料进行研究和学习,如:github上 https://github.com/luhengshiwo/LLMForEverybody
作为普通用户,即AI的使用者,如果不想自己训练模型,完全可以使用已经训练好的模型以及各种“满血版”API等,重点可以放在如何给AI“喂”数据(提示词|prompt),可以去找找清华的两篇pdf,学会提问,会总结,让AI发挥出应有的状态!
(全文完)
转载请注明来自Nkqfj,本文标题:《迷你世界hg怎么下载(DeepSeek 671B用不起不妨从0开始)》
还没有评论,来说两句吧...