YAML Metadata Warning:empty or missing yaml metadata in repo card

Check out the documentation for more information.

GPT语言模型 - 从零训练

模型简介

这是一个从零开始训练的GPT-2架构语言模型,专门用于因果语言建模(Causal Language Modeling)任务。模型能够根据给定的前文序列预测下一个token,实现文本续写和生成功能。

模型架构

  • 模型类型: GPT-2 架构(因果语言模型)
  • 层数: 6层 Transformer
  • 注意力头数: 8头
  • 嵌入维度: 384
  • 词汇表大小: 516 tokens
  • 任务类型: 因果语言建模(预测下一个token)
  • 输出: 词汇表概率分布(516维)

训练特点

  1. 从零训练: 不使用预训练权重,完全从头开始训练
  2. 小模型设计: 针对有限计算资源优化
  3. 因果语言建模: 预测序列中每个位置的下一个token
  4. 梯度裁剪: 防止梯度爆炸
  5. 学习率调度: 余弦退火调度器
  6. 位置掩码: 使用因果注意力掩码,确保模型只能看到前文

训练参数

  • 批次大小: 8
  • 学习率: 5e-5
  • 训练轮数: 20
  • 优化器: AdamW
  • 损失函数: CrossEntropyLoss(语言建模)
  • 数据划分: 80%训练,20%验证
  • 序列长度: 最大1024 tokens
  • 标签处理: pad位置设为-100(不参与损失计算)

性能表现

经过20轮训练,模型达到了优秀的性能表现:

  • 训练损失: 0.0095
  • 验证损失: 0.0100
  • 训练困惑度 (PPL): 1.01
  • 验证困惑度 (PPL): 1.01
  • 总改善率: 99.38%

使用方法

加载模型

from transformers import GPT2LMHeadModel, GPT2Tokenizer

# 加载模型和tokenizer
model = GPT2LMHeadModel.from_pretrained("ludandaye/gpt-causal-lm")
tokenizer = GPT2Tokenizer.from_pretrained("ludandaye/gpt-causal-lm")

# 设置为评估模式
model.eval()

文本生成

import torch

# 准备输入
prompt = "1 2 3"
inputs = tokenizer(prompt, return_tensors="pt")

# 生成文本
with torch.no_grad():
    outputs = model.generate(
        inputs.input_ids,
        max_new_tokens=10,
        temperature=0.8,
        do_sample=True,
        pad_token_id=tokenizer.pad_token_id,
        eos_token_id=tokenizer.eos_token_id
    )

# 解码结果
generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(generated_text)

Next-token预测

import torch

# 准备输入
prompt = "1 2 3"
inputs = tokenizer(prompt, return_tensors="pt")

# 预测下一个token
with torch.no_grad():
    outputs = model(inputs.input_ids)
    logits = outputs.logits
    next_token_logits = logits[0, -1, :]
    probs = torch.softmax(next_token_logits, dim=-1)

# 获取top-k tokens
top_k = 5
top_probs, top_indices = torch.topk(probs, top_k)

for prob, idx in zip(top_probs, top_indices):
    token = tokenizer.decode([idx])
    print(f"Token: {token}, Probability: {prob.item():.4f}")

训练数据

模型训练使用了自定义生成的数字序列数据,包含:

  • 516个独特token
  • 训练数据格式:JSONL文件
  • 词汇表:JSON格式

模型文件

  • config.json: 模型配置文件
  • pytorch_model.bin: 模型权重文件
  • tokenizer_config.json: Tokenizer配置
  • vocab.json: 词汇表
  • merges.txt: BPE合并规则
  • special_tokens_map.json: 特殊token映射

许可证

本项目仅供学习和研究使用。

作者

ludandaye

引用

如果您使用了这个模型,请引用:

@misc{gpt-causal-lm-2024,
  author = {ludandaye},
  title = {GPT Causal Language Model - From Scratch Training},
  year = {2024},
  publisher = {Hugging Face},
  url = {https://huggingface.co/ludandaye/gpt-causal-lm}
}
Downloads last month
6
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support