Simple-LLM - это минималистичная реализация языковой модели (LLM) с полным циклом:
- Обучение BPE-токенизатора на ваших данных
- Подготовка датасета для обучения модели
- Тренировка компактной GPT-архитектуры
- Генерация текста в заданном стиле
Проект создан для:
- Образовательных целей - понимания работы современных LLM
- Экспериментов с генерацией текста на небольших датасетах
- Создания персонализированных языковых моделей
Полный цикл от обучения токенизатора до генерации текста
# 1. Клонируйте репозиторий
git clone https://github.com/ваш-репозиторий/simple-llm.git
cd simple-llm
# 2. Создайте виртуальное окружение (рекомендуется)
python -m venv venv
source venv/bin/activate # Linux/Mac
# или venv\Scripts\activate # Windows
# 3. Установите зависимости
pip install torch
pip install dill tqdm # Основные зависимости для работы
# Установка simple_llm пакета
pip install .Поместите текстовые файлы (.txt) в папку:
data/
└── corpus/
└── sample/
├── text1.txt
├── text2.txt
└── ...
python bin/train_tokenizer.py \
--corpus data/corpus/sample \
--output data/tokenizer/bpe_model.json \
--vocab-size 500python bin/tokenize_corpus.py \
--corpus data/corpus/sample \
--tokenizer data/tokenizer/bpe_model.json \
--output data/tokens/tokenized_corpus.pklpython bin/train_gpt_model.py \
--tokens data/tokens/tokenized_corpus.pkl \
--tokenizer data/tokenizer/bpe_model.json \
--output data/model/gpt_model.pth \
--seq-len 32 \
--batch-size 3 \
--epochs 3 \
--emb-size 64 \
--num-heads 2 \
--num-layers 2python bin/generate_text.py \
--model data/model/gpt_model.pth \
--tokenizer data/tokenizer/bpe_model.json \
--seq-len 32 \
--emb-size 64 \
--num-heads 2 \
--num-layers 2 \
--prompt "Ваш текст для продолжения" \
--length 100 \
--temperature 0.7# Последовательно выполните:
./bin/train_tokenizer.py --corpus data/corpus/sample --output data/tokenizer/bpe.json
./bin/tokenize_corpus.py --corpus data/corpus/sample --tokenizer data/tokenizer/bpe.json
./bin/train_gpt_model.py --tokens data/tokens/corpus_tokens.pkl --tokenizer data/tokenizer/bpe.json
./bin/generate_text.py --model data/model/gpt_model.pth --tokenizer data/tokenizer/bpe.json --prompt "Привет"| Параметр | CPU (рекомендации) | GPU (рекомендации) |
|---|---|---|
| vocab-size | 2000-5000 | 5000-10000 |
| seq-len | 64-128 | 128-256 |
| batch-size | 4-8 | 16-32 |
| emb-size | 64-128 | 256-512 |
| num-layers | 2-4 | 6-12 |
-
Ошибка памяти:
- Уменьшите
batch-sizeиseq-len
python bin/train_gpt_model.py --batch-size 2 --seq-len 64
- Уменьшите
-
Плохая генерация:
- Увеличьте размер корпуса (>1MB текста)
- Добавьте больше эпох обучения (
--epochs 15)
-
Медленная работа:
# Для GPU добавьте перед запуском: export CUDA_VISIBLE_DEVICES=0
Мы приветствуем вклад в проект! Вот как вы можете помочь:
- Форкните репозиторий
- Создайте ветку для вашего изменения (
git checkout -b feature/your-feature) - Сделайте коммит ваших изменений (
git commit -am 'Add some feature') - Запушьте в ветку (
git push origin feature/your-feature) - Создайте Pull Request
- Следуйте существующему стилю кода
- Пишите понятные сообщения коммитов
- Добавляйте тесты для новых функций
- Обновляйте документацию при изменении API
Открывайте Issue с описанием:
- Шаги для воспроизведения
- Ожидаемое поведение
- Фактическое поведение
- Версии ПО (Python, PyTorch и т.д.)
Проект распространяется под лицензией MIT. Полный текст лицензии доступен в файле LICENSE.
Основные положения:
- Разрешается свободное использование, модификация и распространение кода
- Обязательно указание авторства
- Лицензия предоставляется "как есть" без гарантий
- Авторы не несут ответственности за последствия использования
- Все скрипты имеют встроенную помощь:
python bin/train_tokenizer.py --help- Модель автоматически использует GPU если доступен
- Для выхода из виртуального окружения:
deactivate