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

本篇文章主要讲解,如何通过极低的成本训练自己的大模型的方法和教程,通过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.tsinghua.edu.cn/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等客户端,其中客户端只是用来呈现我们的模型运行效果和对话消息的,主要用于我们的日常生活办公。

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

命令输入:

git clone https://huggingface.co/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 Python\Python39\lib\runpy. py", line 197, in _run module_as_mainreturn rum code(code, main globals, oneFile "c: \UsersladminlAppDatalLocal\ProgramslPython\Python39\liblrunpy.py", line 87, in ru codeexec(code, rum globals)File C:\Program FilesWletBrains\Pycharn2024,1lpluginslpvthonlhelperslvirtualenv-20.24.5.pyzl main py ,line 163,in<module>File "C:\Program FilesWJetBrains\PyCharms\virtualenv-20.24.5.pyz\ main .py", line 159, in run00941File"C:\ProgramFilesiletBrainslPvchars\virtualenv-20.24.5.pyz\virtualenvl main .py", line 18, in run“C:\ProgramFileFileslTetBrains\Pvchars\virtualenv-20.24.5.pyz\virtualenv\run\  init..py", line 3l, in cli_runFile"C:\Programinit .py ,line 49, in session via cliEileslTetBrainslPycha1111g119111svirtualenv-20.24.5.pvglvirtualenvirunlFile"C:\Program Files\JetBrains\Pycharmslvirtualenv-20.24.5.pyz\virtualenvlrunl  init__.py", line 82, in build_parser1\p1ug111sFile"C:\ProgramTetBrains\Pvchar1-20.24.5.pyz\virtualenv\run\plugin\creators.py",line 24,ininitFilesw“C:1PrOgIEi1e1-20.24.5.pyz\virtualenv\run\plugin\creators.py", line 31, in for_interpreter“C,5.pyz\virtualenv\run\pluginlbase.py", line 45, in options\Progr2File"C:Prograilhelperslvirtualeny-20.24.5.pyzlvirtualenv(runlpluginlbase.py", line 24, in entry points forFile\Prog120.24.5.pyzlvirtualenv\runlpluginlbase.py", line 24, in<genexpr>~C.File“C:\Isers\import1ih\metadata.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.tsinghua.edu.cn/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版本,建议使用最新的版本号。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/28419.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

后验概率估计

前言 本文隶属于专栏《机器学习数学通关指南》&#xff0c;该专栏为笔者原创&#xff0c;引用请注明来源&#xff0c;不足和错误之处请在评论区帮忙指出&#xff0c;谢谢&#xff01; 本专栏目录结构和参考文献请见《机器学习数学通关指南》 正文 一、基本定义 &#x1f9ee; …

错误: 加载主类时出现 LinkageError,java.lang.UnsupportedClassVersionError 解决方案

分析: 可能就是我们在配置完jdk的path时候,电脑没有重启idea还没有更新path环境jdk版本. 解决办法: 1.重启电脑 2.seting设置对应的jdk版本 Project Structure中设置jdk版本 运行就解决了 一键三连 一起学习 一起进步. 推动科技发展, 为科技赋能.

学习记录-用例设计编写

黑马测试视频记录 目录 一、 软件测试流程 二、测试用例编写格式 1、等价类法 2、边界值分析法 3、 判定表法 4、场景法​编辑 5、错误推荐法 一、 软件测试流程 二、测试用例编写格式 1、等价类法 2、边界值分析法 3、 判定表法 4、场景法 5、错误推荐法 时间紧任务重…

软件测试(三)——Bug篇

文章目录 Bug篇软件测试的生命周期BugBug的概念Bug的要素Bug的级别Bug的生命周期 与开发发生争执怎么办 Bug篇 大部分的Bug都是测试人员提出的&#xff0c;因此在Bug篇的开始会先介绍软件测试的生命周期。同时&#xff0c;了解软件测试的生命周期能帮助我们了解测试的工作&…

Source插件之GstBaseSrc源码剖析

gst插件流程分析先看init构造函数gst_base_src_init&#xff08;本文流程主要基于filesrc插件讲解&#xff09; static void gst_base_src_init (GstBaseSrc * basesrc, gpointer g_class) {GstPad *pad;GstPadTemplate *pad_template;basesrc->priv gst_base_src_get_ins…

React:Redux

Redux引入 Redux感觉像组件通信的中介 state存放被管理的状态 action是申请改哪些数据&#xff0c;传入什么参数 reducer是怎么修改数据 我的理解更像是action像一个储存方法的对象&#xff0c;reducer是具体的方法的实现&#xff0c;不同的方法实现也不一样 store是个仓库…

CoDrivingLLM

CoDrivingLLM 思路 1.输入和输出 输入 算法的输入包括车辆当前时刻的状态 S t S_t St​ &#xff0c;这个状态包含了车辆的位置、速度、行驶方向等信息&#xff1b;以及参与协同驾驶的联网自动驾驶汽车列表C&#xff0c;用于确定需要进行决策的车辆集合。 输出 输出为车辆…

微信小程序接入deepseek

先上效果 话不多说&#xff0c;直接上代码&#xff08;本人用的hbuilder Xuniapp&#xff09; <template><view class"container"><!-- 聊天内容区域 --><scroll-view class"chat-list" scroll-y :scroll-top"scrollTop":…

xxxxx

从别人blog偷的~,自己复习用 爱奇艺 一面 介绍项目项目中用到的设计模式项目中如何处理高并发Redis集群Redis RDB 和 AOF原理Redis除了缓存和分布式锁还能干什么&#xff1f;数据库如何优化&#xff0c;索引的数据结构&#xff0c;多表联合如何优化RedissonAOP逻辑&#xff…

Yocto + 树莓派摄像头驱动完整指南

—— 从驱动配置、Yocto 构建&#xff0c;到 OpenCV 实战 在树莓派上运行摄像头&#xff0c;在官方的 Raspberry Pi OS 可能很简单&#xff0c;但在 Yocto 项目中&#xff0c;需要手动配置驱动、设备树、软件依赖 才能确保摄像头正常工作。本篇文章从 BSP 驱动配置、Yocto 关键…

总结(尚硅谷Vue3入门到实战,最新版vue3+TypeScript前端开发教程)

1.Vue简介 2020年9月18日&#xff0c;Vue.js发布版3.0版本&#xff0c;代号&#xff1a;One Piece 1.1.性能的提升 打包大小减少41%。 初次渲染快55%, 更新渲染快133%。 内存减少54%。 1.2.源码的升级 使用Proxy代替defineProperty实现响应式。 重写虚拟DOM的实现和Tree-Shak…

【五.LangChain技术与应用】【8.LangChain提示词模板基础:从入门到精通】

早上八点,你端着咖啡打开IDE,老板刚甩来需求:“做个能自动生成产品描述的AI工具”。你自信满满地打开ChatGPT的API文档,结果半小时后对着满屏的"输出结果不稳定"、"格式总出错"抓耳挠腮——这时候你真需要好好认识下LangChain里的提示词模板了。 一、…

基于编程语言的建筑行业施工图设计系统开发可行性研究————从参数化建模到全流程自动化的技术路径分析

基于编程语言的建筑行业施工图设计系统开发可行性研究————从参数化建模到全流程自动化的技术路径分析 文章目录 **基于编程语言的建筑行业施工图设计系统开发可行性研究————从参数化建模到全流程自动化的技术路径分析** 摘要引言一、技术可行性深度剖析1.1 现有编程语言…

【Linux文件操作篇】IO基础——被打开的文件,引入文件描述符

--------------------------------------------------------------------------------------------------------------------------------- 每日鸡汤&#xff1a;现实会告诉你&#xff0c;不努力就会被生活给踩死。无需找什么借口&#xff0c;一无所有&#xff0c;就是拼的理由…

Docker 学习(三)——数据管理、端口映射、容器互联

一、数据管理 容器中的管理数据主要有两种方式&#xff1a; 数据卷 &#xff08;Data Volumes&#xff09;&#xff1a; 容器内数据直接映射到本地主机环境&#xff1b; 数据 卷容器&#xff08; Data Volume Containers&#xff09;&#xff1a; 使用特定容器维护数据卷 1.…

3月5日作业

代码作业&#xff1a; #!/bin/bash# 清空目录函数 safe_clear_dir() {local dir"$1"local name"$2"if [ -d "$dir" ]; thenwhile true; doread -p "检测到 $name 目录已存在&#xff0c;请选择操作&#xff1a; 1) 清空目录内容 2) 保留目…

通义万相2.1:开启视频生成新时代

文章摘要&#xff1a;通义万相 2.1 是一款在人工智能视频生成领域具有里程碑意义的工具&#xff0c;它通过核心技术的升级和创新&#xff0c;为创作者提供了更强大、更智能的创作能力。本文详细介绍了通义万相 2.1 的背景、核心技术、功能特性、性能评测、用户反馈以及应用场景…

GPU/CUDA 发展编年史:从 3D 渲染到 AI 大模型时代(上)

目录 文章目录 目录1960s~1999&#xff1a;GPU 的诞生&#xff1a;光栅化&#xff08;Rasterization&#xff09;3D 渲染算法的硬件化实现之路学术界算法研究历程工业界产品研发历程光栅化技术原理光栅化技术的软件实现&#xff1a;OpenGL 3D 渲染管线设计1. 顶点处理&#xff…

如何直接导出某个conda环境中的包, 然后直接用 pip install -r requirements.txt 在新环境中安装

1. 导出 Conda 环境配置 conda list --export > conda_requirements.txt这将生成一个 conda_requirements.txt 文件&#xff0c;其中包含当前环境中所有包的列表及其版本信息。 2. 转换为 requirements.txt 文件 grep -v "^#" conda_requirements.txt | cut -d …

【我的 PWN 学习手札】House of Emma

House of Emma 参考文献 第七届“湖湘杯” House _OF _Emma | 设计思路与解析-安全KER - 安全资讯平台 文章 - house of emma 心得体会 - 先知社区 前一篇博客【我的 PWN 学习手札】House of Kiwi-CSDN博客的利用手法有两个关键点&#xff0c;其一是利用__malloc_assert进入…