Об этом проекте

nanoGPT — это легковесный и высокопроизводительный репозиторий для обучения и доводки средних языковых моделей GPT (Generative Pre-trained Transformer). Это переработанная версия minGPT, разработанная с приоритетом практической производительности и минимально возможным кодом, сохраняя при этом читаемость. Основные возможности: - **Обучение**: Основной скрипт `train.py` (~300 строк) реализует полный цикл обучения. Он воспроизводит GPT-2 (124M) на OpenWebText на одном узле с 8x A100 40GB в течение примерно 4 дней с помощью PyTorch DDP. - **Доводка**: Поддерживает инициализацию из предобученных проверочных точек OpenAI GPT-2 (gpt2, gpt2-medium, gpt2-large, gpt2-xl) и доводку на настраиваемых наборах данных, таких как текст Шекспира. - **Генерация/инференс**: Скрипт `sample.py` генерирует текст из обученных или предобученных моделей с настраиваемыми подсказками, количеством образцов и лимитом токенов. - **Эффективность**: По умолчанию использует PyTorch 2.0's `torch.compile()` для значительного ускорения (например, снижает время итерации с ~250мс до ~135мс на A100). - **Много-GPU/много-узлов**: Распределенное обучение с помощью `torchrun` с поддержкой многоузловых настроек. - **Гибкая конфигурация**: Гиперпараметры можно настроить с помощью файлов конфигурации в директории `config/` или аргументов командной строки. - **Поддержка CPU/MPS**: Работает на CPU для экспериментов и Metal Performance Shaders (MPS) на Apple Silicon для ускорения на 2-3x. Примеры рабочих процессов включают обучение модели GPT на уровне символов на данных Шекспира в течение нескольких минут на одном GPU или воспроизведение benchmarks GPT-2 на OpenWebText с большим железом. Зависимости: PyTorch, NumPy, transformers от Hugging Face, datasets, tiktoken, wandb и tqdm. Примечание: На ноябрь 2025 года nanoGPT была заменена nanochat и считается устаревшей, хотя и сохранена для справки.