本篇文章主要讲解,如何通过极低的成本训练自己的大模型的方法和教程,通过MiniMind快速实现普通家用电脑的模型训练
日期:2025年3月5日
作者:任聪聪

一、MiniMind 介绍

基本信息

在2小时,训练出属于自己的28M大模型。

开源地址:https://github.com/jingyaogong/minimind

特性说明:

1、在家用电脑中即可进行大模型的训练。

2、训练时间可在一天之内,让你获得低成本训练出的大模型。

3、适用于性能不高的电脑本地运行及训练迭代。

模型基础认知

1.模型大小

诸如目前大家都会讲解的,多少M 多少B 等等,这代表了模型涵盖的参数数量。

2.模型速度

一般通过token/s测量,这代表了每秒输出的字符数,也是api常见的计费形式。

3.模型消耗

一般分为三个部分即算力消耗、能源消耗、硬件成本。一般情况下模型训练需要耗费大量的算力及电力。这是由GPU集群计算机决定的。

二、安装MiniMind

安装前的准备:

1、GPU:一台入门级独显计算机RTX 3060 左右的显卡。
2、RAM:16-64GB
3、硬盘:500GB及以上
4、python 3.9环境
5、pycharm 编辑器
6、git 版本管理工具
备注:配置低的也可以就是满,且效果没有配置高的电脑好。

安装说明:

通过git进行clone进行下载,使用python的pip进行安装所需依赖。

步骤一、克隆到本地

输入指令:

git clone https://github.com/jingyaogong/minimind.git

等待下载完毕…

步骤二、使用PyCharm打开项目工程如下图:

进入到加载打开项目的目录,如下图:

点击“OK”进入到项目,并等待加载完毕。

选择python 3.9的版本,过低的版本可能会报错,建议选择更高或相同于本篇文章的版本,点击“OK”进入到下一个环节。

步骤三、使用PIP 安装我们所需的依赖

输入命令:pip install -r requirements.txt -i https://pypi.tuna./simple

直到安装和完毕,如下图:

三、训练模型

需要先准备好所需的数据集,而后通过训练集和验证集进行训练,并同构测试集测试模型的性能。

阶段分为:预训练、监督微调、循环迭代

步骤一、准备好我们的训练数据,如下:

这里我们使用自己的数据集,优先创建一个val目录并在val目录下,创建名为training_data.txt 的文件如下图:

编入内容,一行一条:

步骤二、对数据进行预处理,如下优先安装预处理依赖:

pip install transformers datasets

下载依赖完毕后,通过pycharm创建一个新项目如下图:

完成后进入项目,并把val数据集放入项目根目录:

创建我们的预处理脚本,在项目根目录下:

内容如下:

from transformers import BertTokenizer
from datasets import Dataset

# 加载预训练的BERT分词器
tokenizer = BertTokenizer.from_pretrained('bert-base-chinese')

# 读取文本文件
with open('./val/training_data.txt', 'r', encoding='utf-8') as file:
    lines = [line.strip() for line in file.readlines()]

# 将文本转换为分词后的输入
def fc_func(examples):
    return tokenizer(examples['text'], truncation=True, padding='max_length', max_length=512)

dataset = Dataset.from_dict({'text': lines})
tokenized_dataset = dataset.map(fc_func, batched=True)

# 保存处理后的数据集
tokenized_dataset.save_to_disk('./go_ai_data')

步骤三、开始运行我们的数据预处理脚本:

运行成功后我们将得到如下的文件信息:

这些数据便是我们用来进行预训练的数据集,在根目录下创建训练脚本如下图:

脚本内容:

from transformers import BertTokenizer, BertForMaskedLM, Trainer, TrainingArguments
from datasets import Dataset

# 加载预训练的BERT分词器和模型
tokenizer = BertTokenizer.from_pretrained('bert-base-chinese')
model = BertForMaskedLM.from_pretrained('bert-base-chinese')

# 读取文本文件并处理数据
with open('./val/training_data.txt', 'r', encoding='utf-8') as file:
    lines = [line.strip() for line in file.readlines()]

def preprocess_function(examples):
    return tokenizer(examples['text'], truncation=True, padding='max_length', max_length=512)

dataset = Dataset.from_dict({'text': lines})
tokenized_dataset = dataset.map(preprocess_function, batched=True)

# 设置训练参数
training_args = TrainingArguments(
    output_dir='./results',
    overwrite_output_dir=True,
    num_train_epochs=3,
    per_device_train_batch_size=8,
    save_steps=10_000,
    save_total_limit=2,
)

# 创建Trainer实例并开始训练
trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=tokenized_dataset,
)

trainer.train()

修改并设置自己的输出参数及输入的预训练数据,即可通过下方命令进行运行脚本执行训练,等待一段时间后将会获得自己的模型。

训练好的模型文件后缀为 .pth,通过自定义编写python的模型加载和调用脚本即可生成远端api进行外部的调用与本机的web ui的使用,此处不做详细说明,运行模型详细见章节四部分。

四、运行模型

一般情况,模型的运行使用api的形式调用,这里客户端一般为web ui、app、pc等客户端,其中客户端只是用来呈现我们的模型运行效果和对话消息的,主要用于我们的日常生活办公。

MiniMind用极低的成本训练属于自己的大模型

步骤一、下载我们所需的运行模型项目

命令输入:

git clone https:///jingyaogong/MiniMind2

完成,如下图:

步骤二、通过pycharm打开项目:

安装所需依赖 命令 pip install streamli

步骤三、运行我们的web ui对话框

在pycharm的 –> minimind <—项目终端目录下,打卡我们的scripts目录如下图:

cd scripts

并执行运行web ui的命令:

streamlit run web_demo.py

运行后如下,需要输入自己的电子邮箱:

输入完毕后按下“Enter” 即可运行,弹出防火墙信息:

此处点击允许即可,回到终端即可看到web ui 的地址:

大功告成,ui已经正常运行.。

五、性能体验与迭代说明

实际效果

可以看到速度非常快!

迭代说明

形式说明通过模型的迭代,可以让模型的数据量及信息量,不断的增长和扩大所覆盖的参数信息,以此对模型的能力进行更新。

END:闭环,不断收集新的数据,筛选数据,不断迭代模型,使得其更加完善和智慧。

常见问题:

1、PIP提示更新:

解决办法:

命令 python.exe -m pip install --upgrade pip 进行更新即可重试。

2、初次进入到项目提示报错情况

具体报文内容如下:

pcFailed to Create Virtual Environment
Executed command:
C: Users/admin/ApDatalLocalyPrograms/Ppython/python39/python.exe cyProgram files/letrainsPycharm 2024.1/plugins/python,hepershitualenv-20.24.5 pyzEildeveloplaiminimindven
Error occurred:
AttributeError: module 'virtualenv.create.via global ref.buitin.cpython.mac os' has no attribute 'CPython2macOsframework'
Command output:
Traceback(most recent call last)File 'c: Users ladminlAppDatalLocal!Programs PythonPython39librunpy. py', line 197, in _run module_as_mainreturn rum code(code, main globals, oneFile 'c: UsersladminlAppDatalLocalProgramslPythonPython39liblrunpy.py', line 87, in ru codeexec(code, rum globals)File C:Program FilesWletBrainsPycharn2024,1lpluginslpvthonlhelperslvirtualenv-20.24.5.pyzl main py ,line 163,in<module>File 'C:Program FilesWJetBrainsPyCharmsvirtualenv-20.24.5.pyz main .py', line 159, in run00941File'C:ProgramFilesiletBrainslPvcharsvirtualenv-20.24.5.pyzvirtualenvl main .py', line 18, in run“C:ProgramFileFileslTetBrainsPvcharsvirtualenv-20.24.5.pyzvirtualenvrun  init..py', line 3l, in cli_runFile'C:Programinit .py ,line 49, in session via cliEileslTetBrainslPycha1111g119111svirtualenv-20.24.5.pvglvirtualenvirunlFile'C:Program FilesJetBrainsPycharmslvirtualenv-20.24.5.pyzvirtualenvlrunl  init__.py', line 82, in build_parser1p1ug111sFile'C:ProgramTetBrainsPvchar1-20.24.5.pyzvirtualenvrunplugincreators.py',line 24,ininitFilesw“C:1PrOgIEi1e1-20.24.5.pyzvirtualenvrunplugincreators.py', line 31, in for_interpreter“C,5.pyzvirtualenvrunpluginlbase.py', line 45, in optionsProgr2File'C:Prograilhelperslvirtualeny-20.24.5.pyzlvirtualenv(runlpluginlbase.py', line 24, in entry points forFileProg120.24.5.pyzlvirtualenvrunlpluginlbase.py', line 24, in<genexpr>~C.File“C:Isersimport1ihmetadata.py .line 79.in loadreturn functools.rattrs, moduleAttributeRrror: modulevirtualenv.create.via global ref.builtin.cpython.mac os’has no attributeCPython2macOsFramework
OK
Cancel

直接点击OK即可进入到项目目录,可以忽略

3、无法安装运行web ui的必要依赖 streamli 报错如下时:

通过加入镜像源进行再次下载即可:

pip install -i https://pypi.tuna./simple streamlit

4、打开链接后报错缺少依赖情况:

这个报错由于我们少安装依赖导致,只需要通过pip进行安装提示中的对应依赖 tansformers即可,具体命令如下:

pip install transformers

等待安装完毕即可解决该报错问题。

5、报错模型项目问题如下图:

这是由于我们git clone时没有将模型项目放入 minimind 目录的根目录导致,只需要转移目录即可。

6、预处理数据时报错:

这是由于缺少必要依赖导致,我们只需要下载特定提示的依赖即可。

pip install torch torchvision torchaudio
pip install tensorflow
pip install flax

等待下载完毕即可重新运行。

7、训练到一半突然报错停止的情况

更新检查依赖兼容性或脚本运行的python版本,建议使用最新的版本号。

任聪聪

#artContent h1{font-size:16px;font-weight: 400;}