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
2025-07-08 14:42:24 +03:00
2025-07-11 12:21:33 +03:00

Simple LLM Framework

Python 3.9+ PyTorch 2.0+

Основные компоненты

Токенизация

  • SimpleBPE - алгоритм Byte Pair Encoding
  • OptimizeBPE - оптимизированная версия

Эмбеддинги

  • TokenEmbeddings - векторные представления токенов
  • PositionalEmbeddings - позиционное кодирование

Transformer Layers

  • HeadAttention - механизм внимания одной головы
  • MultiHeadAttention - многоголовое внимание (4-16 голов)
  • FeedForward - двухслойная FFN сеть (расширение → сжатие)
  • Decoder - полный декодер Transformer (Self-Attention + FFN)

Быстрый старт

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)
)

Документация

Примеры

# Запуск примеров
python -m example.multi_head_attention_example  # Визуализация внимания
python -m example.feed_forward_example         # Анализ FFN слоя

Установка

git clone https://github.com/pese-git/simple-llm.git
cd simple-llm
pip install -e .

Пример использования GPT

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. Работа с токенизатором

from simple_llm.tokenizer import SimpleBPE

bpe = SimpleBPE().fit(text_corpus)
tokens = bpe.encode("Текст для токенизации")

2. Использование отдельных компонентов

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

# Пример цикла обучения
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

📚 Документация

🧪 Примеры

# Запуск примеров
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.

Description
No description provided
Readme MIT 21 MiB
Languages
Python 100%