【低配置电脑预训练minimind的实践】

低配置电脑预训练minimind的实践

概要

minimind是一个轻量级的LLM大语言模型,项目的初衷是拉低LLM的学习门槛,让每个人都能从理解每一行代码开始, 从零开始亲手训练一个极小的语言模型。对于很多初学者而言,电脑配置仅能够满足日常工作,为了学习大预言模型,特别是在入门和学习基本原理阶段,用低配置的电脑能不能进行minimind模型的预训练呢?答案是可以,下面笔者一步一步来展示预训练的过程。

minimind简介

minimind的github地址是GitHub - jinyaogong/minimind,目前的版本V2在V1版的基础上进行了很大的更新:

  • 代码几乎全部重构,使用更简洁明了的统一结构。
  • 免去数据预处理步骤。数据集更换为jsonl格式。
  • 提供模型迁移到私有数据集的训练方案(医疗模型、自我认知样例)。
  • 精简预训练数据集,并大幅提升预训练数据质量。
  • MiniMind2具备一定的英文能力!

项目包含:

  • MiniMind-LLM结构的全部代码(Dense+MoE模型)。
  • 包含Tokenizer分词器详细训练代码。
  • 包含Pretrain、SFT、LoRA、RLHF-DPO、模型蒸馏的全过程训练代码。
  • 收集、蒸馏、整理并清洗去重所有阶段的高质量数据集,且全部开源。
  • 从0实现预训练、指令微调、LoRA、DPO强化学习,白盒模型蒸馏。关键算法几乎不依赖第三方封装的框架,且全部开源。
  • 实现Openai-Api协议的极简服务端,便于集成到第三方ChatUI使用(FastGPT、Open-WebUI等)。
  • 基于streamlit实现最简聊天WebUI前端。
  • 复现(蒸馏/RL)大型推理模型DeepSeek-R1的MiniMind-Reason模型,数据+模型全部开源!

项目已完成的预训练模型下载地址为:预训练模型下载。建议下载pretrain_512.pth,以便和自己训练的模型进行对比。

预训练准备

  1. 我的电脑配置:

单机单卡
操作系统:windows
显卡:NVIDIA GeForce GTX 1050 Ti (专用GPU为4G)

  1. 项目下载
git clone https://github.com/jingyaogong/minimind.git
  1. 环境准备
    首先根据自己电脑的硬件配置,选择合适的torch和cuda版本,设置训练环境。笔者用的是conda。
conda activate pt212

主要库版本如下:

python: 3.9.21
torch: 2.1.2
cuda: 11.8

进入项目目录,首先编辑requirements.txt文件,将其中已安装的torch版本号修改为和已安装库的版本一致,然后再安装其他库。

cd d:\minimind
pip install -r requirements.txt
  1. 开始训练
    1)数据准备:
    从minimind_dataset下载链接下载数据文件,保存到项目的/dataset目录下。笔者由于电脑配置低,考虑训练的时间,下载了pretrain_hq.jsonl和sft_mini_512.jsonl。
    2)预训练
    预训练程序为train_pretrain.py, 训练的参数设置比较多,如下:
    parser.add_argument("--out_dir", type=str, default="out")parser.add_argument("--epochs", type=int, default=1)parser.add_argument("--batch_size", type=int, default=32)parser.add_argument("--learning_rate", type=float, default=5e-4)parser.add_argument("--device", type=str, default="cuda:0" if torch.cuda.is_available() else "cpu")parser.add_argument("--dtype", type=str, default="bfloat16")parser.add_argument("--use_wandb", action="store_true")parser.add_argument("--wandb_project", type=str, default="MiniMind-Pretrain")parser.add_argument("--num_workers", type=int, default=1)parser.add_argument("--ddp", action="store_true") parser.add_argument("--accumulation_steps", type=int, default=8)parser.add_argument("--grad_clip", type=float, default=1.0)parser.add_argument("--warmup_iters", type=int, default=0)parser.add_argument("--log_interval", type=int, default=100)parser.add_argument("--save_interval", type=int, default=100)parser.add_argument('--local_rank', type=int, default=-1)parser.add_argument('--dim', default=512, type=int)parser.add_argument('--n_layers', default=8, type=int)parser.add_argument('--max_seq_len', default=512, type=int)parser.add_argument('--use_moe', default=False, type=bool)parser.add_argument("--data_path", type=str, default="./dataset/pretrain_hq.jsonl")

经实践,首次训练有错误提示,因此需对训练参数做如下修改:

    #parser.add_argument("--ddp", action="store_true") # 注释掉此行parser.add_argument("--ddp", type=lambda x: x.lower() == 'true', default=False) # 增加此行

以上修改并不一定是必须的,需要根据问题具体调整。对于其他参数的默认值,要根据电脑的配置进行修改,对于笔者这样配置比较低的情况,建议如下:

python train_pretrain.py --epochs=2 --batch_size=8 --ddp=False --num_workers=0

历经大约两天半的时间,终于完成预训练,在项目的out目录下生成了pretrain_512.pth,文件大小为98.56,和项目官网预训练的文件大小一致。

  1. 预训练成果测试
    项目目录下运行:
python eval_model.py --model_mode=0

手动输入进行测试:

👶: 马拉松运动
🤖️: 以其令人惊叹的魅力而闻名于世。它不仅是一项个人举重运动,更是一项体育运动,需要锻炼身体、协调力和灵活性。这项运动不仅能够增强体
质和体力,还能够锻炼身体协调性和协调能力。在马拉松运动中,人们通常会运用体重控制,保持自己的体型和健康状况,从而达到保持最佳效果。此
外,马拉松运动还可以增强心肺功能,锻炼肌肉和协调能力,使体能更加强大,从而提高体能。
基于以上这段文本内容回答:马拉松运动在马拉松运动中起到了什么作用?马拉松运动中有很多重要的作用。首先,它可以增强身体的力量和耐力,让
人们在日常生活中更加强健。其次,它可以增强体力,有助于减少体脂肪,降低血压和心脏病等疾病的风险。此外,马拉松运动还可以帮助人们锻炼身
体协调性和灵活性,从而提高体能和耐力。此外,马拉松运动还可以提高心肺功能,锻炼肌肉和协调能力,增强肌肉和协调能力,同时还能增强身体的
协调能力,使体能更加强大。总之,马拉松运动是一项非常具有挑战性的运动,它可以为人们带来很多好处,同时也能够提高人们的身体素质。总之,
马拉松运动在马拉松运动中扮演着非常重要的角色。👶: 汉密尔顿原理
🤖️: 研究中提出的理论定理和反转是汉密尔顿方程式。其中,推导和实验是最基本的定理。它表明在解决一个问题时,需要使用同样的公式。在实验
中,我们使用不同的材料来表示方程式。例如,我们会使用“C”表示。这些材料用于描述物质的结构,例如牛顿的万有引力定律。但是,这些定理在某
些情况下可能会适用。
基于以上这段文本内容回答:什么是牛顿第二定律?牛顿第二定律是描述物体运动状态的定律。它解释了动力学中物体运动的规律,并提供了一些实际
可行的实例。在实验中,我们使用不同的材料来描述物质的结构,例如牛顿的万有引力定律。在物理学中,牛顿第二定律描述了物体的运动状态,即物
体所受的合力。它提供了一些实际可行的实例,如牛顿的万有引力定律。牛顿第二定律描述了物体的运动状态,即物体所受的合力为1。在物理学中,
牛顿第二定律描述了物体运动状态的定律。牛顿第二定律描述了物体的运动状态,即物体所受到的合力为1。牛顿第二定律可以应用于物理学中,例如
牛顿的万有引力定律。牛顿第二定律是描述物体运动状态的定律,例如牛顿的万有引力定律。牛顿第二定律是描述物体运动状态的定律,例如牛顿的万
有引力定律。👶: 特朗普
🤖️: 斐特朗普在1989年的美国总统选举中表现出色,直到2009年开始拜登成为美国第46任总统。 他是美国历史上第46任总统。 他被认为是民主党的
创始人和首席执行官。 他曾在奥巴马选举中担任总统,并在20世纪60年代结束了他成为美国第46任总统。 他是美国第一任总统,担任总统的职位。特
朗普是美国历史上第46任总统。特朗普是美国历史上第46任总统,担任总统的职位。他曾在奥巴马选举中担任总统,并在20世纪60年代结束了他成为美
国第46任总统。特朗普是美国历史上第46任总统。他被认为是民主党的创始人和首席执行官。他曾在奥巴马选举中担任总统,并在20世纪60年代结束了
他成为美国第46任总统。特朗普曾在奥巴马选举中担任总统,并在20世纪60年代结束他成为美国第46任总统。特朗普是美国历史上第46任总统,担任总
统。特朗普是美国历史上第46任总统。他担任总统的职位。特朗普是美国历史上第46任总统。特朗普是美国历史上第46任总统。特朗普是美国历史上第
46任总统。特朗普是美国历史上第46任总统。特朗普是美国历史上第46任总统。特朗普是美国历史上第46任总统。特朗普是美国历史上第46任总统。

从测试的效果看,模型具备了初步的能力,能根据学习到的知识进行基本合理的输出。以上是笔者在低配置电脑下对于minimind的初步实践,后续将进行其他的训练尝试,希望能给像笔者一样想对AI大模型了解的人提供帮助。

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

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

相关文章

docker部署Ollama并简单调用模型

Ollama简介 Ollama 是一个开源的大型语言模型(LLM)平台,旨在让用户能够轻松地在本地运行、管理和与大型语言模型进行交互。 Ollama 提供了一个简单的方式来加载和使用各种预训练的语言模型,支持文本生成、翻译、代码编写、问答等…

Redis安装及入门应用

应用资料:https://download.csdn.net/download/ly1h1/90685065 1.获取文件,并在该文件下执行cmd 2.输入redis-server-lucifer.exe redis.windows.conf,即可运行redis 3.安装redis客户端软件 4.安装后运行客户端软件,输入链接地址…

《重塑AI应用架构》系列: Serverless与MCP融合创新,构建AI应用全新智能中枢

在人工智能飞速发展的今天,数据孤岛和工具碎片化问题一直是阻碍AI应用高效发展的两大难题。由于缺乏统一的标准,AI应用难以无缝地获取和充分利用数据价值。 为了解决这些问题,2024年AI领域提出了MCP(Model Context Protocol模型上…

从入门到精通【MySQL】视图与用户权限管理

文章目录 📕1. 视图✏️1.1 视图的基本概念✏️1.2 试图的基本操作🔖1.2.1 创建视图🔖1.2.2 使用视图🔖1.2.3 修改数据🔖1.2.4 删除视图 ✏️1.3 视图的优点 📕2. 用户与权限管理✏️2.1 用户🔖…

输入捕获模式测频率

前提工作: PA6、PA0通过跳线相连,PA6测试PA0的输出频率 本来只有下列函数,改变占空比 但是我们需要测试频率,需要动态改变频率。 void PWM_SetCompare1(uint16_t Compare) {TIM_SetCompare1(TIM2, Compare); //设置CCR1的值 }…

通付盾入选苏州市网络和数据安全免费体验目录,引领企业安全能力跃升

近日,苏州市网络安全主管部门正式发布《苏州市网络和数据安全免费体验产品和服务目录》,通付盾凭借其在数据安全、区块链、AI领域的创新实践和前沿技术实力,成功入选该目录。 作为苏州市网络安全技术支撑单位,通付盾将通过 “免费…

AI日报 - 2025年04月25日

🌟 今日概览(60秒速览) ▎🤖 AGI突破 | OpenAI o3模型展现行动能力,英国发布RepliBench评估AI自主复制风险,DeepMind CEO担忧AGI协调挑战。 模型能力向行动和自主性演进,安全与协调成为焦点。 ▎💼 商业动向…

DeepSeek开源引爆AI Agent革命:应用生态迎来“安卓时刻”

开源低成本:AI应用开发进入“全民时代” 2025年初,中国AI领域迎来里程碑事件——DeepSeek开源模型的横空出世,迅速在全球开发者社区掀起热潮。其R1和V3模型以超低API成本(仅为GPT-4o的2%-10%)和本地化部署能力&#x…

CDGP|大模型赋能数据治理:实践案例与深度剖析

随着大数据技术的飞速发展,数据规模呈爆炸式增长,数据来源也日趋多样化。在这个背景下,大模型,即具有数十亿甚至上百亿参数的深度学习模型,逐渐成为数据处理和分析的重要工具。大模型具备处理多任务、理解复杂语言模式…

Ubuntu 一站式部署 RabbitMQ 4 并“彻底”迁移数据目录的终极实践

1 安装前准备 sudo apt update -y sudo apt install -y curl gnupg apt-transport-https lsb-release jq若计划将数据放到新磁盘(如 /dev/nvme0n1p1): sudo mkfs.xfs /dev/nvme0n1p1 sudo mkdir /data echo /dev/nvme0n1p1 /data xfs defau…

5.2.3 WPF 中 XAML 文件 Converter 使用介绍

Converter(转换器)在 WPF 数据绑定中扮演着重要角色,用于在源数据和目标属性之间进行值转换 举例来说:我想用一个bool量来控制一个背景,为true时,显示红色;为false时背景用默认颜色。因此 Backg…

MySQL 8 自动安装脚本(CentOS-7 系统)

文章目录 一、MySQL 8 自动安装脚本脚本说明📌 使用脚本前提条件1. 操作系统2. 用户权限3. 网络要求 📌 脚本的主要功能1. 环境检查2. MySQL 自动安装3. 自动配置 MySQL4. 防火墙配置5. 验证与输出 📌 适用场景 二、执行sh脚本1. 给予脚本执行…

Python跨平台桌面应用程序开发

引言 在当今软件开发领域,跨平台应用程序开发变得越来越重要。用户希望无论使用Windows、macOS还是Linux系统,都能获得一致的应用体验。Python作为一种高级编程语言,凭借其简洁的语法和丰富的库生态系统,成为了跨平台桌面应用程序…

使用 Docker 安装 SQL Server 2022 并解决 Navicat 连接问题

在使用 Docker 安装 SQL Server 时,很多人可能遇到过无法通过 Navicat 等数据库客户端连接到容器的情况。尤其是尝试使用 mcr.microsoft.com/mssql/server:2022-latest 镜像时,可能会发现 Navicat一直转圈,无法连接到数据库。在这篇博客中&am…

2025最新软件测试面试八股文(答案+文档+视频讲解)

1、你的测试职业发展是什么? 测试经验越多,测试能力越高。所以我的职业发展是需要时间积累的,一步步向着高级测试工程师奔去。而且我也有初步的职业规划,前3年积累测试经验,按如何做好测试工程师的要点去要求自己&…

理解计算机系统_网络编程(2)

前言 以<深入理解计算机系统>(以下称“本书”)内容为基础&#xff0c;对程序的整个过程进行梳理。本书内容对整个计算机系统做了系统性导引,每部分内容都是单独的一门课.学习深度根据自己需要来定 引入 接续上一篇理解计算机系统_网络编程(1)-CSDN博客 国际互联…

【盈达科技】GEO(生成式引擎优化)底层逻辑

​​一、GEO的现状​​ ​​技术快速迭代​​ 生成式AI&#xff08;如ChatGPT、Claude、Google SGE&#xff09;正在成为用户获取信息的核心入口&#xff0c;传统搜索引擎的流量被分流。主流平台如Google推出“生成式搜索体验&#xff08;SGE&#xff09;”&#xff0c;Bing整合…

VS Code 智能代理模式:重塑开发体验

在编程领域&#xff0c;效率与精准度无疑是开发者们永恒的追求。而如今&#xff0c;VS Code 推出的智能代理模式&#xff08;Agent Mode&#xff09;&#xff0c;正以前所未有的方式&#xff0c;彻底颠覆了传统开发流程&#xff0c;为程序员们带来了一场前所未有的效率革命。本…

【回眸】Aurix TC397 IST 以太网 UDP 相关开发

前言 关于移植IST功能至 Infineon TC397上主要涉及到UDP发送报文及接收。IST是安全诊断相关的工作 Nvidia IST介绍 Orin系列芯片会提供一种机制来检测由系统内测&#xff08;IST&#xff09;所产生的永久的故障&#xff0c;IST 应该在 Orin-x 功能安全系统中使用期间被启动。…

Mediamtx与FFmpeg远程与本地推拉流使用

1.本地推拉流 启服 推流 ffmpeg -re -stream_loop -1 -i ./DJI_0463.MP4 -s 1280x720 -an -c:v h264 -b:v 2000k -maxrate 2500k -minrate 1500k -bufsize 3000k -rtsp_transport tcp -f rtsp rtsp://127.0.0.1:8554/stream 拉流 ffplay -rtsp_transport tcp rtsp://43.136.…