feat: добавление реализации модели GPT

Основные изменения:
- Реализован основной класс GPT в simple_llm/transformer/gpt.py:
  * Токенные и позиционные эмбеддинги
  * Многоголовое внимание
  * Полносвязные слои
  * Нормализация слоев
  * Поддержка dropout

- Добавлен пример использования в example/example_gpt.py:
  * Инициализация модели
  * Генерация текста
  * Сохранение/загрузка модели

- Написаны тесты:
  * Базовый функционал модели
  * Операции сохранения/загрузки
  * Проверка размерностей ввода/вывода

- Добавлена документация на русском:
  * Обзор архитектуры
  * Процесс обучения
  * Примеры использования

- Обновлен README.md с информацией о GPT
This commit is contained in:
Sergey Penkovsky
2025-07-22 06:24:46 +03:00
parent 420c45dc74
commit ae87faddc2
6 changed files with 573 additions and 2 deletions

View File

@@ -41,14 +41,12 @@ model = nn.Sequential(
- [Токенизация](/doc/bpe_algorithm.md)
- [MultiHeadAttention](/doc/multi_head_attention_ru.md)
- [FeedForward](/doc/feed_forward_ru.md)
- [Decoder](/doc/decoder_ru.md)
## Примеры
```bash
# Запуск примеров
python -m example.multi_head_attention_example # Визуализация внимания
python -m example.feed_forward_example # Анализ FFN слоя
python -m example.decoder_example # Демонстрация декодера
```
## Установка
@@ -57,3 +55,84 @@ git clone https://github.com/pese-git/simple-llm.git
cd simple-llm
pip install -e .
```
### Пример использования GPT
```python
from simple_llm.transformer.gpt import GPT
model = GPT(
vocab_size=10000,
max_seq_len=512,
emb_size=768,
num_heads=12,
head_size=64,
num_layers=6
)
# Генерация текста
output = model.generate(input_tokens, max_new_tokens=50)
```
## 🛠 How-To Guide
### 1. Работа с токенизатором
```python
from simple_llm.tokenizer import SimpleBPE
bpe = SimpleBPE().fit(text_corpus)
tokens = bpe.encode("Текст для токенизации")
```
### 2. Использование отдельных компонентов
```python
from simple_llm.transformer import MultiHeadAttention, FeedForward
attention = MultiHeadAttention(num_heads=8, emb_size=512, head_size=64)
ffn = FeedForward(emb_size=512)
```
### 3. Обучение GPT
```python
# Пример цикла обучения
optimizer = torch.optim.Adam(model.parameters())
loss_fn = nn.CrossEntropyLoss()
for batch in dataloader:
logits = model(batch['input_ids'])
loss = loss_fn(logits.view(-1, logits.size(-1)), batch['targets'].view(-1))
loss.backward()
optimizer.step()
```
## 📋 Системные требования
| Компонент | Минимальные | Рекомендуемые |
|----------------|----------------------|----------------------|
| **Процессор** | x86-64 | 8+ ядер |
| **Память** | 8GB RAM | 16GB+ RAM |
| **GPU** | Не требуется | NVIDIA (8GB+ VRAM) |
| **ОС** | Linux/MacOS/Windows | Linux |
## 📚 Документация
- [Архитектура GPT](/doc/gpt_documentation_ru.md)
- [Алгоритм BPE](/doc/bpe_algorithm.md)
- [MultiHeadAttention](/doc/multi_head_attention_ru.md)
- [Decoder](/doc/decoder_ru.md)
## 🧪 Примеры
```bash
# Запуск примеров
python -m example.example_gpt # Генерация текста
python -m example.multi_head_attention # Визуализация внимания
python -m example.decoder_example # Демонстрация декодера
```
## 🤝 Участие в разработке
PR и issues приветствуются! Перед внесением изменений:
1. Создайте issue с описанием
2. Сделайте fork репозитория
3. Откройте Pull Request
## 📜 Лицензия
MIT License. Подробнее в [LICENSE](LICENSE).