Skip to content

从零训练一个小参数LLM,支持预训练、SFT、DPO、Reasoning、GRPO

License

Notifications You must be signed in to change notification settings

qibin0506/NOVA-LLM

Repository files navigation

created by gemini

visitors GitHub Repo stars GitHub Code License GitHub last commit GitHub pull request

N.O.V.A LLM

  1. 命名:N.O.V.A,取自经典手游《Near Orbit Vanguard Alliance
  2. 目标:实现单机PC可推理,个人可训练的LLM。
  3. 特性:提供完成web推理应用程序,开箱即用;提供数据预处理、预训练、sft、dpo、grpo完整代码,开箱即训。

本项目使用4x4090D-24G进行训练


更新日志:

  • 2025.04.23: 添加视觉模型训练代码,web应用程序添加视觉模型支持

准备工作

  1. 安装依赖
    pip3 install -r requirements.txt
    
  2. 下载LLM模型库并安装 llm_model
    pip3 install project_llm_model-0.2-py3-none-any.whl
    
  3. 下载训练库并安装 llm_trainer
    pip3 install project_llm_trainer-0.2-py3-none-any.whl
    
  4. 下载web ui依赖并将文件解压到static目录 web_ui.zip

推理

  1. 下载模型权重并将权重文件放到modeling目录 dpo.binreasoning.bingrpo.binvision
  2. 运行app.py,然后浏览器访问 http://localhost:8080
    python3 app.py
    

训练

训练流程可以按照如下顺序进行处理: 处理数据 -> 预训练 -> SFT -> DPO(可选,因模型太小,效果不明显) -> Reasoning -> GRPO(可选,因模型太小,效果不明显)

训练库支持多卡并行训练,本项目使用deepspeed ZeRO3进行训练

数据预处理

预训练

作用:预训练是让模型学习世界知识。

方法:执行smart_train train_pretrain.py进行预训练,可在utils.py中调节训练epoch, batch_size等参数

SFT

作用:SFT可以让模型学习对话格式。

方法:执行smart_train train_sft.py进行预训练,可在utils.py中调节训练epoch, batch_size等参数。

DPO

作用:DPO可以让模型按照人类喜欢的方式进行回答。因模型和数据限制,该阶段提升不大,仅为跑通流程。

方法:执行smart_train train_dpo.py进行预训练,可在utils.py中调节训练epoch, batch_size等参数。

Reasoning

作用:reasoning可以让模型学会在回答问题之前先进行思考。

方法:执行smart_train train_reasoning.py进行预训练,可在utils.py中调节训练epoch, batch_size等参数。

GRPO

作用:GRPO主要是让模型更擅长解数据题。因模型和数据限制,该阶段提升不大,仅为跑通流程。

方法:执行smart_train train_grpo.py进行预训练,可在utils.py中调节训练epoch, batch_size等参数。

训练完成后将ckpt_dir下载到本地,命令cd到该目录下,执行python3 zero_to_fp32.py ./ ./生成.bin文件,该文件可以通过torch.load加载权重。

About

从零训练一个小参数LLM,支持预训练、SFT、DPO、Reasoning、GRPO

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages