Создание BERT-модели с нуля для понимания архитектуры трансформеров и получения полезной модели для работы с корпусом нехудожественной литературы (40 ГБ, 180k книг).
pip install -r requirements.txtcd services/segmenter
python app.py # порт 8090- 50 книг философской тематики (27.6 МБ)
- Путь:
data/sample/texts/ - Кодировка: Windows-1251 (требуется конвертация)
export CUDA_VISIBLE_DEVICES=0
go run cmd/process-books/main.go \
--books data/sample/texts \
--output data/processed/sentences \
--segmenter http://localhost:8090Результат: 152,444 предложения
python scripts/train_tokenizer.py --vocab_size 50000Проблема: В словаре нет целых слов (учение, граница, материя) — только субворды.
python scripts/train_tokenizer.py --vocab_size 50000 --min-frequency 2Ожидание: Словарь содержит целые слова.
head -10000 data/processed/tokenizer/vocab.txt | grep -E "^(учение|граница|материя|философия)$"Ожидание: Найдены все слова.
# Удаляем старый датасет
rm -rf data/processed/dataset
# Создаем новый
python scripts/build_dataset.py \
--sentences-dir data/processed/sentences \
--tokenizer-path data/processed/tokenizer \
--output-dir data/processed/dataset \
--max-length 512 \
--val-split 0.05Результат: train/val примеры для BERT.
python training/train_tiny.py \
--config training/config/tiny_bert.yaml \
--dataset_path data/processed/dataset \
--output_dir data/modelspython training/train_small.py \
--config training/config/small_bert.yaml \
--dataset_path data/processed/dataset \
--output_dir data/modelspython training/train_base.py \
--config training/config/base_bert.yaml \
--dataset_path data/processed/dataset \
--output_dir data/models# MLM предсказания
python scripts/evaluate_mlm.py
# Визуализация attention
python scripts/visualize_attention.py
# Анализ [CLS] эмбеддингов
python scripts/analyze_cls.py- 11,200 файлов военно-исторической тематики
- Сегментация предложений
- Обучение токенизатора (vocab_size=50000)
- BERT-base на 4 ГБ данных
- Аренда мощностей при необходимости
- Каждый шаг фиксируется в NOTES.md
- Результаты сохраняются в data/logs/
- Модели сохраняются с меткой времени