mirror of
https://github.com/pese-git/simple-llm.git
synced 2026-01-23 13:03:55 +00:00
ae87faddc2728c6031c1aa3ba139e5b3a8d1587c
Основные изменения: - Реализован основной класс GPT в simple_llm/transformer/gpt.py: * Токенные и позиционные эмбеддинги * Многоголовое внимание * Полносвязные слои * Нормализация слоев * Поддержка dropout - Добавлен пример использования в example/example_gpt.py: * Инициализация модели * Генерация текста * Сохранение/загрузка модели - Написаны тесты: * Базовый функционал модели * Операции сохранения/загрузки * Проверка размерностей ввода/вывода - Добавлена документация на русском: * Обзор архитектуры * Процесс обучения * Примеры использования - Обновлен README.md с информацией о GPT
Simple LLM Framework
Основные компоненты
Токенизация
SimpleBPE- алгоритм Byte Pair EncodingOptimizeBPE- оптимизированная версия
Эмбеддинги
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 приветствуются! Перед внесением изменений:
- Создайте issue с описанием
- Сделайте fork репозитория
- Откройте Pull Request
📜 Лицензия
MIT License. Подробнее в LICENSE.
Languages
Python
100%