Simple-LLM Framework
Актуально для Simple-LLM v1.0 (июль 2025)
Установка
Рекомендуется использовать виртуальное окружение (venv) для изоляции зависимостей и корректной работы импортов.
python3 -m venv venv
source venv/bin/activate
pip install .
Также вы можете вручную установить необходимые зависимости:
pip install torch numpy dill
Если появится файл requirements.txt, используйте:
pip install -r requirements.txt
Если вы хотите использовать последнюю версию из PyPI:
pip install simple-llm
Если возникают ошибки с импортами, убедитесь, что пакет установлен через pip и вы находитесь в активированном виртуальном окружении.
Основные зависимости
- torch
- numpy
- dill
Краткая инструкция по обучению на своих данных:
- Обучите BPE-токенизатор на тексте (см.
simple_llm.tokenizer.bpe.BPE). - Токенизируйте корпус и создайте датасет через
GetData. - Инициализируйте модель
GPTс нужными параметрами. - Обучите модель одной строкой:
model.fit(train_loader, num_epoch=10). - Для подробной инструкции и примеров см. документацию.
Структура README:
- Обзор
- Быстрый старт
- Основные компоненты
- Документация
- Тестирование
- Как внести вклад
- Лицензия
- FAQ
Простая и понятная реализация языковой модели GPT-стиля с нуля на PyTorch
🔍 Обзор
Simple-LLM предоставляет:
- Полную реализацию архитектуры GPT
- Эффективный токенизатор BPE
- Модули трансформера (внимание, FFN, эмбеддинги)
- Гибкую систему генерации текста
- Примеры использования и документацию
🚀 Быстрый старт
- Установите зависимости:
pip install torch numpy tqdm
- Запустите примеры:
# Пример генерации текста
python example/example_gpt.py
# Пример обучения модели
python example/train_gpt_example.py
🧠 Основные компоненты
Обработка данных
from simple_llm.data.get_data import GetData
dataset = GetData(
data=[1, 2, 3, 4, 5], # Входная последовательность
seq_len=3, # Длина окна
device="cuda" # Устройство (опционально)
)
Модель GPT
from simple_llm.transformer.gpt import GPT
model = GPT(
vocab_size=10000,
max_seq_len=512,
emb_size=768,
num_heads=12,
num_layers=6
)
Генерация текста
output = model.generate(
input_ids,
max_new_tokens=100,
temperature=0.9,
top_k=50,
top_p=0.9
)
Обучение модели
from torch.utils.data import DataLoader
# Данные должны быть в формате (input_ids, targets)
# targets - это input_ids, сдвинутые на 1 токен вперед
train_loader = DataLoader(...)
model.fit(
train_loader=train_loader, # Обучающие данные (обязательно)
valid_loader=None, # Валидационные данные (опционально)
num_epoch=10, # Количество эпох
learning_rate=0.001 # Скорость обучения
)
# Сохранение модели
model.save("model.pt")
# Загрузка модели
loaded_model = GPT.load("model.pt", device="cuda")
Требования к данным:
- Формат:
(input_ids, targets)гдеtargets = roll(input_ids, -1) input_ids: тензор формы[batch_size, seq_len]- Поддерживаются как синтетические, так и реальные текстовые данные
📚 Документация
Полная документация доступна в doc/:
🛠 Тестирование
pytest tests/
🤝 Как внести вклад
- Форкните репозиторий
- Создайте ветку (
git checkout -b feature/AmazingFeature) - Сделайте коммит (
git commit -m 'Add some AmazingFeature') - Запушьте ветку (
git push origin feature/AmazingFeature) - Откройте Pull Request
❓ FAQ
Q: Как установить Simple-LLM, чтобы работали все импорты?
A: Рекомендуется установить через pip (локально: pip install . или с PyPI: pip install simple-llm). Тогда все примеры и импорты будут работать из любой директории.
Q: Как запустить Simple-LLM на CPU?
A: Передайте параметр device="cpu" при инициализации модели или обработке данных.
Q: Как использовать свой датасет?
A: Используйте класс GetData из simple_llm.data.get_data для подготовки своих последовательностей. Следуйте формату (input_ids, targets).
Q: Где посмотреть примеры?
A: В папке example/ есть скрипты генерации и обучения.
Q: Ошибка CUDA out of memory! A: Уменьшите размер batch_size или размерность модели, либо используйте CPU.
Q: Как добавить новый модуль или улучшение? A: Ознакомьтесь с документацией, следуйте рекомендациям по вкладу и открывайте Pull Request.
📜 Лицензия
Распространяется под лицензией MIT. См. LICENSE