这个项目能做什么

nanoGPT是一个轻量级、高性能的仓库,专门用于训练和微调中等规模的GPT(生成式预训练Transformer)模型。它是minGPT的重写版本,经过重新设计,在保持代码简洁可读的同时,优先考虑实际性能表现。 核心功能: - **训练**:核心`train.py`脚本(约300行)实现了完整的训练循环。使用PyTorch DDP,在单个8x A100 40GB节点上,约4天即可在OpenWebText上复现GPT-2(124M)的训练结果。 - **微调**:支持从预训练的OpenAI GPT-2检查点(gpt2、gpt2-medium、gpt2-large、gpt2-xl)初始化,并可在自定义数据集(如莎士比亚文本)上进行微调。 - **采样/推理**:`sample.py`脚本可根据可配置的提示词、样本数量和token限制,从训练好或预训练的模型中生成文本。 - **效率**:默认使用PyTorch 2.0的`torch.compile()`来获得显著的速度提升(例如,在A100上将迭代时间从约250ms缩短至约135ms)。 - **多GPU/多节点**:通过`torchrun`实现分布式训练,支持多节点设置。 - **灵活配置**:超参数可通过`config/`目录中的配置文件或命令行参数进行调整。 - **CPU/MPS支持**:可在CPU上进行实验,并在Apple Silicon上使用Metal Performance Shaders(MPS)实现2-3倍加速。 示例工作流程包括:在单GPU上用几分钟时间训练字符级GPT处理莎士比亚数据,或使用更大的硬件在OpenWebText上复现GPT-2基准测试。 依赖项:PyTorch、NumPy、Hugging Face transformers、datasets、tiktoken、wandb和tqdm。 注意:截至2025年11月,nanoGPT已被nanochat取代,被视为弃用,但仍保留作为参考。