Об этом проекте
## Обучение LLM с нуля
Этот репозиторий предоставляет простой и полный метод обучения вашей собственной большой языковой модели (LLM) — от загрузки сырых данных до генерации текста. Он создан Фаридом Ханом и основан на архитектуре Transformer из статьи «Attention is All You Need». Проект рассчитан на студентов, разработчиков и исследователей: каждый алгоритм реализован с нуля на чистом PyTorch (без использования библиотек вроде `trl`, `peft` или `transformers`).
### Основной конвейер
Репозиторий проводит вас через весь путь обучения LLM:
```
сырой текст -> токены -> Transformer -> потеря следующего токена -> базовая модель
базовая модель -> SFT -> модель вознаграждения -> {PPO, DPO} -> GRPO -> оценка и чат
```
### Ключевые особенности
- **Реализация с нуля**: Все модели и алгоритмы написаны вручную на PyTorch, что даёт глубокое понимание механизмов работы.
- **Пошаговое руководство**: README и код структурированы логически, с понятными объяснениями и блоками кода.
- **Несколько этапов обучения**: Охватывает предобучение, контролируемую донастройку (SFT), обучение модели вознаграждения и продвинутые методы обучения с подкреплением, такие как DPO, PPO и GRPO.
- **Практичность и гибкость**: Включает опциональные функции экономии памяти (AMP, градиентная чекпоинтинг, накопление градиентов) для обучения более крупных моделей на ограниченном оборудовании.
- **Комплексный инструментарий**: Включает скрипты для подготовки данных, обучения, оценки и панель управления Streamlit для мониторинга.
### Структура кода
Репозиторий организован в понятные модули:
- `src/models/`: Содержит модель Transformer, построенную из небольших переиспользуемых компонентов (MLP, attention, блоки).
- `src/post_training/`: Реализует SFT, модели вознаграждения, PPO, DPO, GRPO, оценку и инференс.
- `scripts/`: Содержит все исполняемые скрипты для каждого этапа конвейера.
- `config/` и `configs/`: Файлы конфигурации (Python и JSON) для гиперпараметров модели и настроек обучения.
- `data_loader/`: Пакетные итераторы для разных типов данных.
- `ui/`: Панель управления Streamlit для взаимодействия с моделью и её мониторинга.
- `docs/`: Сайт документации с теорией и диаграммами.
### Начало работы
1. **Клонирование и установка**: Клонируйте репозиторий и установите его в режиме редактирования с помощью `pip install -e .`. Доступны дополнительные опции для конкретных функций (обучение, интерфейс, документация).
2. **Подготовка данных**: Используйте предоставленные скрипты для токенизации наборов данных, таких как The Pile (для предобучения), Alpaca, Dolly и GSM8K (для настройки инструкций), а также Anthropic HH-RLHF (для обучения на предпочтениях).
3. **Создание и обучение модели**: Начните с небольшой модели на 13M параметров, используя `scripts/train_transformer.py`, или используйте более продвинутый `scripts/pretrain_base.py` для более крупных моделей с такими функциями, как распределённое обучение и накопление градиентов.
4. **Пост-обучение и использование модели**: Донастройте базовую модель с помощью SFT, обучите модель вознаграждения и примените методы RLHF, такие как DPO или PPO, для согласования модели с человеческими предпочтениями. Наконец, используйте скрипты оценки и чата для оценки и взаимодействия с вашей моделью.
### Пример вывода
Вот пример текста, сгенерированного обученной моделью на 13M параметров:
```
В ***1978 году парк был возвращён на заводскую пластину, которую
публика делит с нижней частью электронного забора, который
следует из городов Станции. Канал древних западных наций был
ограничен городским местом. Деревни были напрямую связаны с
городами в Китае, которые восстают против бюджета США, и в
Одамбинаисе неопределённость и удача установлены в сельских районах.
```
### Документация
Репозиторий включает сайт документации с более подробной теорией, диаграммами и объяснениями, доступный по ссылке в README.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.