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

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

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

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

- Обновлен README.md с информацией о GPT
2025-07-22 06:26:23 +03:00

139 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Simple LLM Framework
[![Python 3.9+](https://img.shields.io/badge/python-3.9+-blue.svg)]()
[![PyTorch 2.0+](https://img.shields.io/badge/PyTorch-2.0+-red.svg)]()
## Основные компоненты
### Токенизация
- `SimpleBPE` - алгоритм Byte Pair Encoding
- `OptimizeBPE` - оптимизированная версия
### Эмбеддинги
- `TokenEmbeddings` - векторные представления токенов
- `PositionalEmbeddings` - позиционное кодирование
### Transformer Layers
- `HeadAttention` - механизм внимания одной головы
- `MultiHeadAttention` - многоголовое внимание (4-16 голов)
- `FeedForward` - двухслойная FFN сеть (расширение → сжатие)
- `Decoder` - полный декодер Transformer (Self-Attention + FFN)
## Быстрый старт
```python
from simple_llm import SimpleBPE, MultiHeadAttention, FeedForward
# 1. Токенизация
bpe = SimpleBPE().fit(text_corpus)
tokens = bpe.encode("Пример текста")
# 2. Полный пайплайн
model = nn.Sequential(
TokenEmbeddings(10000, 256),
PositionalEmbeddings(256, 512),
MultiHeadAttention(8, 256, 32),
FeedForward(256)
)
```
## Документация
- [Токенизация](/doc/bpe_algorithm.md)
- [MultiHeadAttention](/doc/multi_head_attention_ru.md)
- [FeedForward](/doc/feed_forward_ru.md)
## Примеры
```bash
# Запуск примеров
python -m example.multi_head_attention_example # Визуализация внимания
python -m example.feed_forward_example # Анализ FFN слоя
```
## Установка
```bash
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).