Skip to content

SdeeRK/hf-minigpt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

MiniGPT:使用 Hugging Face 编写 GPT 模型的练习项目

本项目是一个基于 Hugging Face Transformers 库,实现 GPT 类语言模型的最小示例。旨在帮助理解 GPT 模型的底层结构与训练流程

🧠 项目特色

  • 自定义实现 GPT 解码器结构(Decoder-only):
    • 多头自注意力机制(MiniGPTAttention
    • 前馈网络(MiniGPTMLP
    • 残差连接 + 层归一化(LayerNorm)
  • 支持 Past Key-Value 缓存,加速推理
  • 遵循 Hugging Face PreTrainedModel 接口标准
  • 结合 Trainer 模块实现预训练流程
  • 支持 tokenizer 从零训练

📁 项目结构说明

minigpt/
├── configuration_minigpt.py    # 模型配置文件(HF标准)
├── modeling_minigpt.py         # 模型实现文件
tokenizer/
└── train_tokenizer.py          # 训练自定义分词器(基于 tokenizers 库)
train.py                        # 使用 Trainer 的训练脚本

🚀 快速开始

1. 安装依赖

pip install transformers datasets accelerate tokenizers

确保已安装支持 GPU 的 PyTorch。

2. 准备 tokenizer 和数据集

需要自行准备tokenizer的数据集,可从hf官方进行挑选和下载。

  • 词表文件放在 tokenizer/ 目录下
  • datasets 库保存好的训练数据放在 dataset/ 目录下
tokenizer/
└── tokenizer.json
dataset/
└── [Arrow 格式的数据集]

3. 运行预训练

python train.py

4. 模型配置文件

放在 config/ 目录,格式如下:

{
  "model_type": "minigpt",
  "vocab_size": 30256,
  "hidden_size": 512,
  "num_hidden_layers": 6,
  "num_attention_heads": 8,
  "max_position_embeddings": 512,
  "activation_function": "gelu_new",
  "attn_pdrop": 0.1,
  "resid_pdrop": 0.1,
  "embd_pdrop": 0.1,
  "layer_norm_epsilon": 1e-5,
  "use_cache": true
}

🧪 使用示例

模型训练完成后可以进行文本生成:

from transformers import AutoTokenizer, AutoModelForCausalLM
import minigpt

tokenizer = AutoTokenizer.from_pretrained("tokenizer/")
model = AutoModelForCausalLM.from_pretrained("minigpt_warm_pretrain_1")

input_ids = tokenizer("你好,今天天气", return_tensors="pt").input_ids
outputs = model.generate(input_ids, max_new_tokens=50)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published